Browse Source

First commit

pull/1/head
joshy 1 year ago
commit
a88f7a8dfc
100 changed files with 7368 additions and 0 deletions
  1. +20
    -0
      Makefile
  2. BIN
      build/doctrees/environment.pickle
  3. BIN
      build/doctrees/index.doctree
  4. BIN
      build/doctrees/rtd_pages/basic_coldwallet.doctree
  5. BIN
      build/doctrees/rtd_pages/basic_createrestorewallet.doctree
  6. BIN
      build/doctrees/rtd_pages/basic_downloads.doctree
  7. BIN
      build/doctrees/rtd_pages/basic_importantlinks.doctree
  8. BIN
      build/doctrees/rtd_pages/basic_mining.doctree
  9. BIN
      build/doctrees/rtd_pages/basic_quickstart.doctree
  10. BIN
      build/doctrees/rtd_pages/basic_rpcapi.doctree
  11. BIN
      build/doctrees/rtd_pages/basic_runderofullnode.doctree
  12. BIN
      build/doctrees/rtd_pages/basic_trading.doctree
  13. BIN
      build/doctrees/rtd_pages/basic_whitepaper.doctree
  14. BIN
      build/doctrees/rtd_pages/dev_derovirtualmachine.doctree
  15. BIN
      build/doctrees/rtd_pages/dev_smartcontract.doctree
  16. +4
    -0
      build/html/.buildinfo
  17. BIN
      build/html/_images/DERO-logo.png
  18. BIN
      build/html/_images/Dag1.jpeg
  19. BIN
      build/html/_images/dagx4.png
  20. BIN
      build/html/_images/dero_explorer.png
  21. BIN
      build/html/_images/derod1.png
  22. BIN
      build/html/_images/explorer-prove-tx.png
  23. BIN
      build/html/_images/wallet-recover2.png
  24. +281
    -0
      build/html/_sources/index.rst.txt
  25. +28
    -0
      build/html/_sources/rtd_pages/basic_coldwallet.rst.txt
  26. +16
    -0
      build/html/_sources/rtd_pages/basic_createrestorewallet.rst.txt
  27. +19
    -0
      build/html/_sources/rtd_pages/basic_downloads.rst.txt
  28. +8
    -0
      build/html/_sources/rtd_pages/basic_importantlinks.rst.txt
  29. +32
    -0
      build/html/_sources/rtd_pages/basic_mining.rst.txt
  30. +19
    -0
      build/html/_sources/rtd_pages/basic_quickstart.rst.txt
  31. +8
    -0
      build/html/_sources/rtd_pages/basic_rpcapi.rst.txt
  32. +12
    -0
      build/html/_sources/rtd_pages/basic_runderofullnode.rst.txt
  33. +15
    -0
      build/html/_sources/rtd_pages/basic_trading.rst.txt
  34. +10
    -0
      build/html/_sources/rtd_pages/basic_whitepaper.rst.txt
  35. +369
    -0
      build/html/_sources/rtd_pages/dev_derovirtualmachine.rst.txt
  36. +18
    -0
      build/html/_sources/rtd_pages/dev_smartcontract.rst.txt
  37. +835
    -0
      build/html/_static/basic.css
  38. +1
    -0
      build/html/_static/css/badge_only.css
  39. BIN
      build/html/_static/css/fonts/Roboto-Slab-Bold.woff
  40. BIN
      build/html/_static/css/fonts/Roboto-Slab-Bold.woff2
  41. BIN
      build/html/_static/css/fonts/Roboto-Slab-Regular.woff
  42. BIN
      build/html/_static/css/fonts/Roboto-Slab-Regular.woff2
  43. BIN
      build/html/_static/css/fonts/fontawesome-webfont.eot
  44. +2671
    -0
      build/html/_static/css/fonts/fontawesome-webfont.svg
  45. BIN
      build/html/_static/css/fonts/fontawesome-webfont.ttf
  46. BIN
      build/html/_static/css/fonts/fontawesome-webfont.woff
  47. BIN
      build/html/_static/css/fonts/fontawesome-webfont.woff2
  48. BIN
      build/html/_static/css/fonts/lato-bold-italic.woff
  49. BIN
      build/html/_static/css/fonts/lato-bold-italic.woff2
  50. BIN
      build/html/_static/css/fonts/lato-bold.woff
  51. BIN
      build/html/_static/css/fonts/lato-bold.woff2
  52. BIN
      build/html/_static/css/fonts/lato-normal-italic.woff
  53. BIN
      build/html/_static/css/fonts/lato-normal-italic.woff2
  54. BIN
      build/html/_static/css/fonts/lato-normal.woff
  55. BIN
      build/html/_static/css/fonts/lato-normal.woff2
  56. +4
    -0
      build/html/_static/css/theme.css
  57. BIN
      build/html/_static/docs_logo.png
  58. +315
    -0
      build/html/_static/doctools.js
  59. +12
    -0
      build/html/_static/documentation_options.js
  60. BIN
      build/html/_static/file.png
  61. BIN
      build/html/_static/fonts/FontAwesome.otf
  62. BIN
      build/html/_static/fonts/Lato/lato-bold.eot
  63. BIN
      build/html/_static/fonts/Lato/lato-bold.ttf
  64. BIN
      build/html/_static/fonts/Lato/lato-bold.woff
  65. BIN
      build/html/_static/fonts/Lato/lato-bold.woff2
  66. BIN
      build/html/_static/fonts/Lato/lato-bolditalic.eot
  67. BIN
      build/html/_static/fonts/Lato/lato-bolditalic.ttf
  68. BIN
      build/html/_static/fonts/Lato/lato-bolditalic.woff
  69. BIN
      build/html/_static/fonts/Lato/lato-bolditalic.woff2
  70. BIN
      build/html/_static/fonts/Lato/lato-italic.eot
  71. BIN
      build/html/_static/fonts/Lato/lato-italic.ttf
  72. BIN
      build/html/_static/fonts/Lato/lato-italic.woff
  73. BIN
      build/html/_static/fonts/Lato/lato-italic.woff2
  74. BIN
      build/html/_static/fonts/Lato/lato-regular.eot
  75. BIN
      build/html/_static/fonts/Lato/lato-regular.ttf
  76. BIN
      build/html/_static/fonts/Lato/lato-regular.woff
  77. BIN
      build/html/_static/fonts/Lato/lato-regular.woff2
  78. BIN
      build/html/_static/fonts/Roboto-Slab-Bold.woff
  79. BIN
      build/html/_static/fonts/Roboto-Slab-Bold.woff2
  80. BIN
      build/html/_static/fonts/Roboto-Slab-Light.woff
  81. BIN
      build/html/_static/fonts/Roboto-Slab-Light.woff2
  82. BIN
      build/html/_static/fonts/Roboto-Slab-Regular.woff
  83. BIN
      build/html/_static/fonts/Roboto-Slab-Regular.woff2
  84. BIN
      build/html/_static/fonts/Roboto-Slab-Thin.woff
  85. BIN
      build/html/_static/fonts/Roboto-Slab-Thin.woff2
  86. BIN
      build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot
  87. BIN
      build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
  88. BIN
      build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff
  89. BIN
      build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
  90. BIN
      build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot
  91. BIN
      build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
  92. BIN
      build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff
  93. BIN
      build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
  94. BIN
      build/html/_static/fonts/fontawesome-webfont.eot
  95. +2671
    -0
      build/html/_static/fonts/fontawesome-webfont.svg
  96. BIN
      build/html/_static/fonts/fontawesome-webfont.ttf
  97. BIN
      build/html/_static/fonts/fontawesome-webfont.woff
  98. BIN
      build/html/_static/fonts/fontawesome-webfont.woff2
  99. BIN
      build/html/_static/fonts/lato-bold-italic.woff
  100. +0
    -0
      build/html/_static/fonts/lato-bold-italic.woff2

+ 20
- 0
Makefile View File

@@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = source
BUILDDIR = build

# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

BIN
build/doctrees/environment.pickle View File


BIN
build/doctrees/index.doctree View File


BIN
build/doctrees/rtd_pages/basic_coldwallet.doctree View File


BIN
build/doctrees/rtd_pages/basic_createrestorewallet.doctree View File


BIN
build/doctrees/rtd_pages/basic_downloads.doctree View File


BIN
build/doctrees/rtd_pages/basic_importantlinks.doctree View File


BIN
build/doctrees/rtd_pages/basic_mining.doctree View File


BIN
build/doctrees/rtd_pages/basic_quickstart.doctree View File


BIN
build/doctrees/rtd_pages/basic_rpcapi.doctree View File


BIN
build/doctrees/rtd_pages/basic_runderofullnode.doctree View File


BIN
build/doctrees/rtd_pages/basic_trading.doctree View File


BIN
build/doctrees/rtd_pages/basic_whitepaper.doctree View File


BIN
build/doctrees/rtd_pages/dev_derovirtualmachine.doctree View File


BIN
build/doctrees/rtd_pages/dev_smartcontract.doctree View File


+ 4
- 0
build/html/.buildinfo View File

@@ -0,0 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 62cffeae9cdccec170b1e00a965f2601
tags: 645f666f9bcd5a90fca523b33c5a78b7

BIN
build/html/_images/DERO-logo.png View File

Before After
Width: 300  |  Height: 300  |  Size: 68KB

BIN
build/html/_images/Dag1.jpeg View File

Before After
Width: 1816  |  Height: 768  |  Size: 174KB

BIN
build/html/_images/dagx4.png View File

Before After
Width: 1898  |  Height: 792  |  Size: 74KB

BIN
build/html/_images/dero_explorer.png View File

Before After
Width: 1665  |  Height: 178  |  Size: 33KB

BIN
build/html/_images/derod1.png View File

Before After
Width: 923  |  Height: 324  |  Size: 53KB

BIN
build/html/_images/explorer-prove-tx.png View File

Before After
Width: 1802  |  Height: 251  |  Size: 24KB

BIN
build/html/_images/wallet-recover2.png View File

Before After
Width: 1303  |  Height: 719  |  Size: 70KB

+ 281
- 0
build/html/_sources/index.rst.txt View File

@@ -0,0 +1,281 @@
.. _root:

.. image:: rtd_pages/images/DERO-logo.png
:scale: 15
:align: right



Welcome to DERO Documentation!
==============================================


ABOUT DERO PROJECT
^^^^^^^^^^^^^^^^^^
`DERO <https://github.com/deroproject/derosuite>`_ is decentralized DAG(Directed Acyclic Graph) based blockchain with enhanced reliability, privacy, security, and usability. Consensus algorithm is PoW based on original cryptonight. DERO is industry leading and the first blockchain to have bulletproofs, TLS encrypted Network.
DERO is the first crypto project to combine a Proof of Work blockchain with a DAG block structure and wholly anonymous transactions based on `CryptoNote Protocol <https://github.com/deroproject/documentation/blob/master/CryptoNote-WP.pdf>`_. The fully distributed ledger processes transactions with a twelve-second average block time and is secure against majority hashrate attacks. DERO will be the first CryptoNote blockchain to have smart contracts on its native chain without any extra layers or secondary blockchains. At present DERO have Smart Contracts on `testnet <https://github.com/deroproject/documentation/blob/master/testnet/stargate.md>`_.

DERO Crypto
-----------
Secure and fast crypto is the basic necessity of this project and adequate amount of time has been devoted to develop/study/implement/audit it. Most of the crypto such as ring signatures have been studied by various researchers and are in production by number of projects. As far as the Bulletproofs are considered, since DERO is the first one to implement/deploy, they have been given a more detailed look. First, a bare bones bulletproofs was implemented, then implementations in development were studied (Benedict Bunz,XMR, Dalek Bulletproofs) and thus improving our own implementation.

Some new improvements were discovered and implemented (There are number of other improvements which are not explained here). Major improvements are in the Double-Base Double-Scalar Multiplication while validating bulletproofs. A typical bulletproof takes ~15-17 ms to verify. Optimised bulletproofs takes ~1 to ~2 ms(simple bulletproof, no aggregate/batching). Since, in the case of bulletproofs the bases are fixed, we can use precompute table to convert 64*2 Base Scalar multiplication into doublings and additions (NOTE: We do not use Bos-Coster/Pippienger methods). This time can be again easily decreased to .5 ms with some more optimizations. With batching and aggregation, 5000 range-proofs (~2500 TX) can be easily verified on even a laptop. The implementation for bulletproofs is in github.com/deroproject/derosuite/crypto/ringct/bulletproof.go , optimized version is in github.com/deroproject/derosuite/crypto/ringct/bulletproof_ultrafast.go

There are other optimizations such as base-scalar multiplication could be done in less than a microsecond. Some of these optimizations are not yet deployed and may be deployed at a later stage.

DERO PORTS
----------

**Mainnet:**

P2P Default Port: 20202
RPC Default Port: 20206
Wallet RPC Default Port: 20209

**Testnet:**

P2P Default Port: 30303
RPC Default Port: 30306
Wallet RPC Default Port: 30309

Technical
---------
For specific details of current DERO core (daemon) implementation and capabilities, see below:

1. **DAG:** No orphan blocks, No soft-forks.
2. **BulletProofs:** Zero Knowledge range-proofs(NIZK)
3. **Cryptonight Hash:** This is memory-bound algorithm. This provides assurance that all miners are equal. ( No miner has any advantage over common miners).
4. **P2P Protocol:** This layers controls exchange of blocks, transactions and blockchain itself.
5. **Pederson Commitment:** (Part of ring confidential transactions): Pederson commitment algorithm is a cryptographic primitive that allows user to commit to a chosen value while keeping it hidden to others. Pederson commitment is used to hide all amounts without revealing the actual amount. It is a homomorphic commitment scheme.
6. **Borromean Signature:** (Part of ring confidential transactions): Borromean Signatures are used to prove that the commitment has a specific value, without revealing the value itself.
7. **Additive Homomorphic Encryption:** Additive Homomorphic Encryption is used to prove that sum of encrypted Input transaction amounts is EQUAL to sum of encrypted output amounts. This is based on Homomorphic Pederson commitment scheme.
8. **Multilayered Linkable Spontaneous Anonymous Group (MLSAG):** (Part of ring confidential transactions): MLSAG gives DERO untraceability and increases privacy and fungibility. MLSAG is a user controlled parameter ( Mixin) which the user can change to improve his privacy. Mixin of minimal amount is enforced and user cannot disable it.
9. **Ring Confidential Transactions:** Gives untraceability , privacy and fungibility while making sure that the system is stable and secure.
10. **Core-Consensus Protocol implemented:** Consensus protocol serves 2 major purpose
11. Protects the system from adversaries and protects it from forking and tampering.
12. Next block in the chain is the one and only correct version of truth ( balances).
13. **Proof-of-Work(PoW) algorithm:** PoW part of core consensus protocol which is used to cryptographically prove that X amount of work has been done to successfully find a block.
14. **Difficulty algorithm:** Difficulty algorithm controls the system so as blocks are found roughly at the same speed, irrespective of the number and amount of mining power deployed.
15. **Serialization/De-serialization of blocks:** Capability to encode/decode/process blocks .
16. **Serialization/De-serialization of transactions:** Capability to encode/decode/process transactions.
17. **Transaction validity and verification:** Any transactions flowing within the DERO network are validated,verified.
18. **Socks proxy:** Socks proxy has been implemented and integrated within the daemon to decrease user identifiability and improve user anonymity.
19. **Interactive daemon** can print blocks, txs, even entire blockchain from within the daemon
20. **status, diff, print_bc, print_block, print_tx** and several other commands implemented
21. GO DERO Daemon has both mainnet, testnet support.
22. **Enhanced Reliability, Privacy, Security, Useability, Portabilty assured.**

**DERO blockchain salient features**

* `DAG Based: No orphan blocks, No soft-forks. <https://github.com/deroproject/wiki/wiki#dero-dag>`_

* `51% Attack resistant. <https://github.com/deroproject/wiki/wiki#51-attack-resistant>`_

* 12 Second Block time.

* Extremely fast transactions with 2 minutes confirmation time.

* SSL/TLS P2P Network.

* CryptoNote: Fully Encrypted Blockchain

* `DERO Fastest Rocket BulletProofs: <https://github.com/deroproject/wiki/wiki#dero-rocket-bulletproofs>`_ Zero Knowledge range-proofs(NIZK).

* Ring signatures.

* Fully Auditable Supply.

* DERO blockchain is written from scratch in Golang. `See all unique blockchains from scratch. <https://twitter.com/cryptic_monk/status/999227961059528704>`_

* Developed and maintained by original developers.

DERO Innovations
----------------
Following are DERO first and leading innovations.

**DERO DAG**

DERO DAG implementation builds outs a main chain from the DAG network of blocks which refers to main blocks (100% reward) and side blocks (8% rewards).

.. image:: rtd_pages/images/Dag1.jpeg

*DERO DAG Screenshot* `Live <https://stats.dero.io/>`_

.. image:: rtd_pages/images/dagx4.png

*DERO DAG Screenshot* `Live <DERO DAG Screenshot Live>`_

**Client Protocol**

Traditional Blockchains process blocks as single unit of computation(if a double-spend tx occurs within the block, entire block is rejected). However DERO network accepts such blocks since DERO blockchain considers transaction as a single unit of computation.DERO blocks may contain duplicate or double-spend transactions which are filtered by client protocol and ignored by the network. DERO DAG processes transactions atomically one transaction at a time.


**DERO Rocket BulletProofs**

* Dero ultrafast bulletproofs optimization techniques in the form used did not exist anywhere in publicly available cryptography literature at the time of implementation. Please contact for any source/reference to include here if it exists. Ultrafast optimizations verifies Dero bulletproofs 10 times faster than other/original bulletproof implementations. See: https://github.com/deroproject/derosuite/blob/master/crypto/ringct/bulletproof_ultrafast.go

* DERO rocket bulletproof implementations are hardened, which protects DERO from certain class of attacks.

* DERO rocket bulletproof transactions structures are not compatible with other implementations.

Also there are several optimizations planned in near future in Dero rocket bulletproofs which will lead to several times performance boost. Presently they are under study for bugs, verifications, compatibilty etc.

**51% Attack Resistant**

DERO DAG implementation builds outs a main chain from the DAG network of blocks which refers to main blocks (100% reward) and side blocks (8% rewards). Side blocks contribute to chain PoW security and thus traditional 51% attacks are not possible on DERO network. If DERO network finds another block at the same height, instead of choosing one, DERO include both blocks. Thus, rendering the 51% attack futile.

**DERO Mining**

`CPU Mining <https://github.com/deroproject/wiki/wiki/Mining>`_

**DERO Installation**

DERO is written in golang and very easy to install both from source and binary.

**Installation from Source**

1. Golang version 1.12.12 required.
2. In go workspace:

.. code-block:: go

go get -u github.com/deroproject/derosuite/...

3. Check go workspace bin folder for binaries.
4. For example on Linux machine following binaries will be created:
derod-linux-amd64 -> DERO daemon.
dero-wallet-cli-linux-amd64 -> DERO cmdline wallet.
explorer-linux-amd64 -> DERO Explorer. Yes, DERO has prebuilt personal explorer also for advance privacy users.

**Installation from binary**

Download `DERO binaries <https://github.com/deroproject/derosuite/releases>`_ for ARM, INTEL, MAC platform and Windows, Mac, FreeBSD, OpenBSD, Linux etc. operating systems.

Most users required following binaries:

`Windows 7-10, Server 64bit/amd64 <https://github.com/deroproject/derosuite/releases/download/v2.1.6-1/dero_windows_amd64_2.1.6-1.alpha.atlantis.07032019.zip>`_

`Windows 32bit/x86/386 <https://github.com/deroproject/derosuite/releases/download/v2.1.6-1/dero_windows_x86_2.1.6-1.alpha.atlantis.07032019.zip>`_

`Linux 64bit/amd64 <https://github.com/deroproject/derosuite/releases/download/v2.1.6-1/dero_linux_amd64_2.1.6-1.alpha.atlantis.07032019.tar.gz>`_

`Linux 32bit/x86 <https://github.com/deroproject/derosuite/releases/download/v2.1.6-1/dero_linux_386_2.1.6-1.alpha.atlantis.07032019.tar.gz>`_

`FreeBSD 64bit/amd64 <https://github.com/deroproject/derosuite/releases/download/v2.1.6-1/dero_freebsd_amd64_2.1.6-1.alpha.atlantis.07032019.tar.gz>`_

`OpenBSD 64bit/amd64 <https://github.com/deroproject/derosuite/releases/download/v2.1.6-1/dero_openbsd_amd64_2.1.6-1.alpha.atlantis.07032019.tar.gz>`_

`Mac OS <https://github.com/deroproject/derosuite/releases/download/v2.1.6-1/dero_apple_mac_darwin_amd64_2.1.6-1.alpha.atlantis.07032019.tar.gz>`_

Contact for support of other hardware and OS.

**Next Step After DERO Installation**

Running DERO daemon supports DERO network and shows your support to privacy.

**Running DERO Daemon**

Run derod.exe or derod-linux-amd64 depending on your operating system. It will start syncing.

1. DERO daemon core cryptography is highly optimized and fast.

2. Use dedicated machine and SSD for best results.

3. VPS with 2-4 Cores, 4GB RAM, 60GB disk is recommended.

.. image:: rtd_pages/images/derod1.png

*DERO Daemon Screenshot*

**Running DERO Wallet**

DERO cmdline wallet is most reliable and has support of all functions. Cmdline wallet is most secure and reliable.

**DERO Cmdline Wallet**

DERO cmdline wallet is menu based and very easy to operate. Use various options to create, recover, transfer balance etc.

**NOTE:** DERO cmdline wallet by default connects DERO daemon running on local machine on port 20206.

If DERO daemon is not running start DERO wallet with --remote option like following:

**./dero-wallet-cli-linux-amd64 --remote**

.. image:: rtd_pages/images/wallet-recover2.png

*DERO Cmdline Wallet Screenshot*

**DERO Web Wallet**

`Web Wallet <https://wallet.dero.io/>`_ runs in your browser, your seeds, keys etc. never leave your browser.

**DERO GUI Wallet**

`Download DERO GUI Wallet <https://github.com/deroproject/dero_gui_wallet/releases>`_

**DERO Explorer**

`DERO Explorer <https://explorer.dero.io/>`_ is used to check and confirm transaction on DERO Network.

DERO users can run their own explorer on local machine and can browse on local machine port 8080.

.. image:: rtd_pages/images/dero_explorer.png

*DERO EXPLORER Screenshot*

**Proving DERO Transactions**

DERO blockchain is completely private, so anyone cannot view, confirm, verify any other's wallet balance or any transactions. So to prove any transaction you require Tx private key and receiver address.

Tx private key can be obtained using get_tx_key command in dero-wallet-cli.

Enter the Tx private key and receiver address in `DERO EXPLORER <https://explorer.dero.io/>`_

.. image:: rtd_pages/images/explorer-prove-tx.png

*DERO Explorer Proving Transaction*

**DERO Netrwork Dashboard**

DERO has two dashboard for stats monitor

`Modern Web Based <http://stats.dero.io/>`_

To add your DERO daemon node in web based dahsboard `check. <https://github.com/deroproject/dero-network-stats>`_

`Retro Cmdline Dashboard <http://ntework.dero.io/>`_

To add your DERO daemon node in Retro dahsboard `check. <https://git.dero.io/DeroProject/stats_client>`_

Use browser or gotty-client in terminal to access dashboard.

.. code-block:: go

gotty-client -v2 network.dero.io:8084;



.. toctree::
:caption: Basic's
:hidden:
rtd_pages/basic_downloads.rst
rtd_pages/basic_whitepaper.rst
rtd_pages/basic_quickstart.rst
rtd_pages/basic_createrestorewallet.rst
rtd_pages/basic_mining.rst
rtd_pages/basic_runderofullnode.rst
rtd_pages/basic_rpcapi.rst
rtd_pages/basic_trading.rst
rtd_pages/basic_importantlinks.rst
rtd_pages/basic_coldwallet.rst
.. toctree::
:caption: Developer's Guide
:hidden:
rtd_pages/dev_smartcontract.rst
rtd_pages/dev_derovirtualmachine.rst

+ 28
- 0
build/html/_sources/rtd_pages/basic_coldwallet.rst.txt View File

@@ -0,0 +1,28 @@
.. _basic_coldwallet:


Cold Wallet
==============================================

**Creating transactions using cold wallet.**

**Note:** Use offline/Net disconnected computer as cold wallet. Also for more security use live iso image of any Ubuntu/Linux operating system on offline computer.

**Note:** Backup your 25 words seed in all cases at safe location either on paper or safe usb drive.

**Step 1.** Download nightly Dero software.
**Step 2.** Download updated getoutputs.bin from local daemon node or getoutputs.bin from remote Dero daemon node and copy to offline computer in wallet folder.
**Step 3.** Run dero-wallet in offline mode on offline/air-gapped computer. Create new/restore wallet and create offline transactions.

.. code-block:: php

./dero-wallet-cli-linux-amd64 --wallet-file wallet.db --offline;

**Step 4.** First rescan blockchain using option 11 and then Create offline transaction using menu option 6. A transaction file will be created by TX name.
**Step 5.** Copy above TX-file to internet connected system and relay above transaction file contents using local daemon node or remote node.

.. code-block:: php

curl -X POST http://127.0.0.1:20206/sendrawtransaction -H 'Content-Type: application/json' -d '{"tx_as_hex":"020915b83d73d............52d55b5148500a"}'

**Status will be ok if TX is accepted by DERO Network or follow again the above process.**

+ 16
- 0
build/html/_sources/rtd_pages/basic_createrestorewallet.rst.txt View File

@@ -0,0 +1,16 @@
.. _basic_createrestorewallet:

Create/Restore Wallet
==============================================


**Always backup your 25 words seed.**

`Download <https://github.com/deroproject/derosuite/releases>`_ pre-compiled DERO binaries for ARM, INTEL, MAC platform and Windows, Mac, FreeBSD, OpenBSD, Linux etc. Operating systems. Wait for daemon and wallet to sync fully to see your final balance.

Choose Option 2 to create new wallet.

Choose Option 3 to restore wallet from old seed.


For more details and discussion about wallet click `here <https://forum.dero.io/t/create-backup-restore-dero-wallet-in-one-minute/110>`_

+ 19
- 0
build/html/_sources/rtd_pages/basic_downloads.rst.txt View File

@@ -0,0 +1,19 @@
.. _basic_downloads:

Downloads
==============================================


* Main stable releases https://github.com/deroproject/derosuite/releases

* Nightly releases with latest test features requested by exchanges and users. https://git.dero.io/DeroProject/derosuite

* `DERO CMD Wallet <https://git.dero.io/DERO_Foundation/CMD/releases/>`_

* `Download Dero Blockchain database for faster syncing. <http://seeds.dero.io/blockchain/derod_database.db>`_ For details how to faster sync `check here. <https://forum.dero.io/t/how-to-run-full-dero-node/813>`_







+ 8
- 0
build/html/_sources/rtd_pages/basic_importantlinks.rst.txt View File

@@ -0,0 +1,8 @@
.. _basic_importantlinks:

Important Links
==============================================

**Important Links and frequent support**

`How to Run DERO full node <https://forum.dero.io/t/how-to-run-full-dero-node/813)>`_

+ 32
- 0
build/html/_sources/rtd_pages/basic_mining.rst.txt View File

@@ -0,0 +1,32 @@
.. _basic_mining:

Mining
==============================================


Dero will be using AstroBWT CPU mining algo created by DeroProject.
Read more about AstroBWT `here <https://github.com/deroproject/astrobwt>`_


**How to mine DERO:**

1. DERO Installation for Linux, Windows, Mac, FreeBSD, Arm etc.
2. Run DERO daemon and Create wallet address
3. Run miner with wallet address and no. of threads based on your CPU.

.. code-block:: php

./dero-miner --mining-threads 4 --daemon-rpc-address=http://explorer.dero.io:20206 --wallet-address dERoXHjNHFBabzBCQbBDSqbkLURQyzmPRCLfeFtzRQA3NgVfU4HDbRpZQUKBzq59QU2QLcoAviYQ59FG4bu8T9pZ1woERqciSL;

**NB 1:** Check here for reference CPU hashes.

**NB 2:** There are no mining pools for AstroBWT atm.

**NB 3:** Replace

.. code-block:: php

--daemon-rpc-address=http://explorer.dero.io:20206;
with your DERO daemon if you are running your own daemon. Incase DERO daemon is running on local-host this option not required.


+ 19
- 0
build/html/_sources/rtd_pages/basic_quickstart.rst.txt View File

@@ -0,0 +1,19 @@
.. _basic_quickstart:

Quickstart
==============================================


**DERO Web Wallet**

**DERO cmdline daemon and wallet**

1. Choose your Operating System and download Dero software
2. Extract the file and change to extracted folder in cmd prompt.
3. Start derod daemon and wait to fully sync till prompt goes green.
4. Open new cmd prompt and run dero-wallet-cli and wait for wallet to sync.
5. Click here for detailed steps how to run Dero full node.





+ 8
- 0
build/html/_sources/rtd_pages/basic_rpcapi.rst.txt View File

@@ -0,0 +1,8 @@
.. _basic_rpcapi:

RPC API
==============================================

**RPC API**

For DERO RPC API please click `here <https://github.com/deroproject/documentation/blob/master/Dero_RPC_API.pdf>`_

+ 12
- 0
build/html/_sources/rtd_pages/basic_runderofullnode.rst.txt View File

@@ -0,0 +1,12 @@
.. _basic_runderofullnode:

Run DERO Full Node
==============================================

**Running Dero full node and part of Dero network.**

Download latest DERO software. Run derod.exe or derod-linux-amd64 depending on your operating system. It will start syncing.

1. DERO daemon core cryptography is highly optimized and fast.
2. Use dedicated machine and SSD for best results.
3. VPS with 2-4 Cores, 4GB RAM, 60GB disk is recommended.

+ 15
- 0
build/html/_sources/rtd_pages/basic_trading.rst.txt View File

@@ -0,0 +1,15 @@
.. _basic_trading:

Trading
==============================================

**Trading**

Exchanges supporting Dero.

* https://trade.kucoin.com/spot/DERO-BTC?lang=en_US
* https://tradeogre.com/exchange/BTC-DERO



To view a full list of exchanges, visit `CoinGecko <https://www.coingecko.com/en/coins/dero>`_

+ 10
- 0
build/html/_sources/rtd_pages/basic_whitepaper.rst.txt View File

@@ -0,0 +1,10 @@
.. _basic_whitepaper:

Whitepaper
==============================================


The DERO Whitepaper can be found `here. <https://github.com/deroproject/documentation/blob/master/Dero_Whitepaper.pdf>`_




+ 369
- 0
build/html/_sources/rtd_pages/dev_derovirtualmachine.rst.txt View File

@@ -0,0 +1,369 @@
.. _dev_derovirtualmachine:

DERO Virtual Machine
====================

DERO Virtual Machine represents entire DERO Smart Contracts eco-system which runs on the DERO block chain.

**Documentation**

DVM is a decentralized platform that runs both public and private smart contracts: applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third-party interference.Public Smart contracts are open versions. However, the DVM is being designed to support Private Smart Contracts where everything is hidden, eg parties, and information involved. Smart Contracts are nothing but rules which apply on transacting parties.

Current version of DVM is an interpretor based system to avoid security vulneribilities, issues and compiler backdoors. This also allows easy audits of Smart Contracts for quality,bug-testing and security assurances. DVM supports a new language DVM-BASIC.

DVM apps run on a from scratch custom built privacy supporting, encrypted blockchain, an enormously powerful shared global infrastructure that can move value around and represent the ownership of assets/property without leaking any information.No one knows who owns what and who transferred to whom.

* This enables developers to create puzzles, games, voting, markets, store registries of debts or promises, move funds in accordance with instructions given long in the past (like a will or a futures contract) and many other ideas/things that have not been invented yet, all without a middleman or counterparty risk.
* DVM-BASIC is a contract-oriented, high-level language for implementing smart contracts. It is influenced by GW-BASIC, Visual Basic and C and is designed to target the DERO Virtual Machine (DVM). It is very easy to program and very readable.
* DVM runs Smart Contracts which are a collection of functions written in DVM-BASIC. These functions can be invoked over the blockchain to do something. SCs can act as libraries for other SCs.
* DVM supports number of comments formats such as ', // , /* */ as good documentation is necessary.

**Example Factorial Program**

.. code-block:: php
:linenos:
' This is a comment
// This comment is supported
/* this is multi-line comment */
Function Factorial(s Uint64) Uint64 // this is a commment
10 DIM result,scopy as Uint64 /* this is also comment */
15 LET scopy = s
20 LET result = 1
30 LET result = result * s
40 LET s = s - 1
50 IF s >= 2 THEN GOTO 30
60 PRINTF "FACTORIAL of %d = %d" scopy result
70 RETURN result
End Function

**DVM are written in a DVM-BASIC custom BASIC style language with line numbers.**

**DVM supports uint64 and string data-types.**

**DVM interprets the smart-contract and processes the SC line-line**

* uint64 supports almost all operators namely +,-,*,/,%
* uint64 support following bitwise operators & ,|, ^, ! , >> , <<
* uint64 supports following logical operators >, >= , <, <=, == , !=
* string supports only + operator. string support concatenation with a uint64.
* string supports ==, != logical operators.
* All DVM variables are mandatory to define and are initialized to default values namely 0 and "".

A SC execution must return 0 to persist any changes made during execution. During execution, no panics should occur.

DIM Statement
-------------

DIM stands for data in memory and is used to define variable names within a function

syntax

10 DIM variable1 as type 20 DIM variable1,variable2 as type

type can be any type supported by DVM

Defining a varible initializes a variable to its ZERO value.

Function statement
------------------

Function statement is used to define a function. See eg, below for a function which adds 2 numbers

.. code-block:: php
:linenos:
Function ADD(x uint64, y uint64) uint64
10 RETURN x + y
End Function


Function syntax is of 2 types

1. Function function_name( 0 or more arguments )
2. Function function_name( 0 or more arguments ) return type

The rules for functions are as follows

* All functions begin with Function keyword
* Function name should be alpha-numeric. If the first letter of the function is Upper case alphabet, it can be invoked by blockchain and other smart-contracts. Otherwise the function can only be called by other functions within the smart contract.
* Function may or may not have a return type
* All functions must use RETURN to return from function or to return a value. RETURN is mandatory.
* All functions must end with End Function. End Function is mandatory
* A function can have a implicit parameter value of type uint64, which contains amount of DERO value sent with the transaction.

Any error caused during processing will immediately stop execution and discard all changes that occur during SC execution.

Any Entrypoint which returns uint64 value 0 is termed as success and will make transaction to commit all state changes.

GOTO Statement
--------------

It is used to jump to any point within the function. It cannot cross function-boundary

syntax GOTO line-number

IF
--

If statement is used to evaluate expression and make decisions.It has following forms

1. IF expr1 condition expr2 THEN GOTO line number
2. IF expr1 condition expr2 THEN GOTO line number ELSE GOTO line number

This is used to change execution flow based on conditions. Conditions can be as complex expressions

LET Statement
-------------

LET is used to assign a value to a variable. value can be as complex as possible and can contain complex expression

syntax

.. code-block:: php

line number LET variable_name = expression;
expression can invoke other functions,eg

10 LET x = 2 + 3 + ADD(2,3)

ANY assignments within DVM can only be done using LET


Lottery.bas
-------------

.. code-block:: php
:linenos:
/* Lotter Smart Contract in DVM-BASIC
This lottery smart contract will give lottery wins every xth try.
*/
Function Lottery(value Uint64) Uint64
10 dim deposit_count,winner as Uint64
20 LET deposit_count = LOAD("deposit_count")+1
25 IF value == 0 THEN GOTO 110 // if deposit amount is 0, simply return
30 STORE("depositor_address" + (deposit_count-1), SIGNER()) // store address for later on payment
40 STORE("deposit_total", LOAD("deposit_total") + value )
50 STORE("deposit_count",deposit_count)
60 IF LOAD("lotteryeveryXdeposit") > deposit_count THEN GOTO 110 // we will wait till X players join in
// we are here means all players have joined in, roll the DICE,
70 LET winner = RANDOM() % deposit_count // we have a winner
80 SEND_DERO_TO_ADDRESS(LOAD("depositor_address" + winner) , LOAD("lotterygiveback")*LOAD("deposit_total")/10000)
// re initialize for another round
90 STORE("deposit_count", 0) // initial players
100 STORE("deposit_total", 0) // total deposit of all players
110 RETURN 0
End Function
// this function is used to initialize parameters during install time
Function Initialize() Uint64
10 STORE("owner", SIGNER()) // store in DB ["owner"] = address
20 STORE("lotteryeveryXdeposit", 2) // lottery will reward every X deposits
// how much will lottery giveback in 1/10000 parts, granularity .01 %
30 STORE("lotterygiveback", 9900) // lottery will give reward 99% of deposits, 1 % is accumulated for owner to withdraw
33 STORE("deposit_count", 0) // initial players
34 STORE("deposit_total", 0) // total deposit of all players
35 printf "Initialize executed"
40 RETURN 0
End Function
// used to tune lottery parameters
Function TuneLotteryParameters(input Uint64, lotteryeveryXdeposit Uint64, lotterygiveback Uint64) Uint64
10 dim key,stored_owner as String
20 dim value_uint64 as Uint64
30 IF ADDRESS_RAW(LOAD("owner")) == ADDRESS_RAW(SIGNER()) THEN GOTO 100 // check whether owner is real owner
40 RETURN 1
100 STORE("lotteryeveryXdeposit", lotteryeveryXdeposit) // lottery will reward every X deposits
130 STORE("lotterygiveback", value_uint64) // how much will lottery giveback in 1/10000 parts, granularity .01 %
140 RETURN 0 // return success
End Function
// this function is used to change owner
// owner is an string form of address
Function TransferOwnership(newowner String) Uint64
10 IF ADDRESS_RAW(LOAD("owner")) == ADDRESS_RAW(SIGNER()) THEN GOTO 30
20 RETURN 1
30 STORE("tmpowner",newowner)
40 RETURN 0
End Function
// until the new owner claims ownership, existing owner remains owner
Function ClaimOwnership() Uint64
10 IF ADDRESS_RAW(LOAD("tmpowner")) == ADDRESS_RAW(SIGNER()) THEN GOTO 30
20 RETURN 1
30 STORE("owner",SIGNER()) // ownership claim successful
40 RETURN 0
End Function
// if signer is owner, withdraw any requested funds
// if everthing is okay, thety will be showing in signers wallet
Function Withdraw( amount Uint64) Uint64
10 IF ADDRESS_RAW(LOAD("owner")) == ADDRESS_RAW(SIGNER()) THEN GOTO 30
20 RETURN 1
30 SEND_DERO_TO_ADDRESS(SIGNER(),amount)
40 RETURN 0
End Function
Lotter SC Guide
---------------

**Dero Stargate DVM Smart Contracts guide to install and test various function of lottery Smart Contract.**

**Download** Dero Stargate testnet `source <https://git.dero.io/DeroProject/derosuite_stargate>`_ and `binaries. <https://git.dero.io/DeroProject/Dero_Stargate_testnet_binaries>`_

.. code-block:: php

./derod-linux-amd64 --testnet;
**Start DERO wallet in testnet.**

.. code-block:: php

dero-wallet-cli-linux-amd64 --rpc-server --wallet-file testnet.wallet --testnet;
**Start Dero wallet second instance to test transfer/ownership functions etc.**

.. code-block:: php

dero-wallet-cli-linux-amd64 --wallet-file testnet2.wallet --testnet --rpc-server --rpc-bind=127.0.0.1:30308;
**Dero testnet Explorer**

.. code-block:: php

./explorer-linux-amd64 --rpc-server-address 127.0.0.1:30306 --http-address=0.0.0.0:8080;
**DERO Stargate Testnet Explorer**

https://testnetexplorer.dero.io/

**Installing Smart Contract**

`Download Lottery.bas <https://git.dero.io/DeroProject/derosuite_stargate/src/master/cmd/dvm/lottery.bas>`_

.. code-block:: php

curl --request POST --data-binary @lottery.bas http://127.0.0.1:30309/install_sc;
**Examples of various lottery Smart Contract functions Eg: To play lottery**

.. code-block:: php

curl -X POST http://127.0.0.1:30309/json_rpc -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":"0","method":"transfer_split","params":{"mixin":5,"get_tx_key": true , "sc_tx":{"entrypoint":"Lottery","scid":"ab82caa18753efa0f76e7266af7fdd7f11e0ada5e135bd63f1cd823f5e2c2fdc" , "value":4000000000000 } }}';
**Eg: Withdraw balance**

.. code-block:: php

curl -X POST http://127.0.0.1:30309/json_rpc -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":"0","method":"transfer_split","params":{"mixin":5,"get_tx_key": true , "sc_tx":{"entrypoint":"Withdraw","scid":"55aaf55b5203cd10f473a9bcf641f305885235e176270ae5e38ba6fa05dbf2b0", "params":{ "amount":"1" } } }}';

**Eg: To transfer ownership**

.. code-block:: php

curl -X POST http://127.0.0.1:30309/json_rpc -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":"0","method":"transfer_split","params":{"mixin":5,"get_tx_key": true , "sc_tx":{"entrypoint":"TransferOwnership","scid":"55aaf55b5203cd10f473a9bcf641f305885235e176270ae5e38ba6fa05dbf2b0", "params":{ "newowner":"dETohFmTunwF58wAs5Jn3d1N1oaJqwRxvarNJudUh95nVbZyigTja1W8Ljzp3j8VhxbB9gv3TBs4W5gnFa24cehz2cM6nUg84s" } } }}';
**Eg: To claim ownership**

.. code-block:: php

curl -X POST http://127.0.0.1:30308/json_rpc -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":"0","method":"transfer_split","params":{"mixin":;
Return Statement
----------------

It is used to return from a function and can be used anywhere within a function

syntax

1. RETURN ( return nil )
2. RETURN expression ( evaluates expression and returns value )

any return value must match with the type defined while declaring function

Support Functions
-----------------

.. code-block:: php
:linenos:
Support Functions are inbuilt functions which provide some functionality or expose internals for speed and technical reasons.


LOAD(variable)
==============

LOAD loads a variable which was previously stored in the blockchain using STORE function. Return type will be Uint64/String depending on what is stored.
It will panic if the value does NOT exists

Uint64 EXISTS(variable)
=======================
EXISTS return 1 if the variable is store in DB and 0 otherwise

STORE(key variable, value variable)
===================================
STORE stores key and value in the DB. All storage state of the SC is accessible only from the SC which created it.

Uint64 RANDOM()
Uint64 RANDOM(limit Uin64)
============================
RANDOM returns a random using a PRNG seeded on BLID,SCID,TXID. First form gives a uint64, second form returns
random number in the range 0 - (limit), 0 is inclusive, limit is exclusive

String SCID()
==============
Returns SMART CONTRACT ID which is currently running

String BLID()
==============
Returns current BLOCK ID which contains current execution-in-progress TXID

String TXID()
=============
Returns current TXID which is execution-in-progress.

Uint64 BLOCK_HEIGHT()
=====================
Returns current chain height of BLID()

Uint64 BLOCK_TOPOHEIGHT()
===========================
Returns current topoheight of BLID()

String SIGNER()
=================
Returns address of who signed this transaction

Uint64 IS_ADDRESS_VALID(p String)
=================================
Returns 1 is address is valid, 0 otherwise


String ADDRESS_RAW(p String)
============================
Returns address in RAW form as 64 byte keys, stripping away textual/presentation form. 2 address should always be compared in RAW form

SEND_DERO_TO_ADDRESS(a String, amount Uint64)
==============================================
Sends amount DERO from SC DERO balance to a address. address must in string form DERO/DETO form
If the SC does not have enough balance, it will panic












+ 18
- 0
build/html/_sources/rtd_pages/dev_smartcontract.rst.txt View File

@@ -0,0 +1,18 @@
.. _dev_smartcontract:

DERO Smart Contracts
=====================

**Smart Contracts**

The DERO team is pleased to announce the release of the Smart Contracts and DERO Virtual Machine testnet, codenamed Stargate

Please see links below for DERO DVM, source and binaries for the Stargate testnet.

​`Docs,<https://git.dero.io/DeroProject/dvm_doc>`_ `Source, <https://git.dero.io/DeroProject/derosuite_stargate>`_ `Binaries​, <https://git.dero.io/DeroProject/Dero_Stargate_testnet_binaries>`_

We welcome any questions you may have and look forward to seeing your feedback and innovations.

We request that feedback/discussions is submitted in `Dero forum <https://forum.dero.io/t/dero-stargate-testnet-discussions/888>`_ or in #stargate in `Dero Discord. <https://discord.gg/H95TJDp>`_



+ 835
- 0
build/html/_static/basic.css View File

@@ -0,0 +1,835 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/

/* -- main layout ----------------------------------------------------------- */

div.clearer {
clear: both;
}

/* -- relbar ---------------------------------------------------------------- */

div.related {
width: 100%;
font-size: 90%;
}

div.related h3 {
display: none;
}

div.related ul {
margin: 0;
padding: 0 0 0 10px;
list-style: none;
}

div.related li {
display: inline;
}

div.related li.right {
float: right;
margin-right: 5px;
}

/* -- sidebar --------------------------------------------------------------- */

div.sphinxsidebarwrapper {
padding: 10px 5px 0 10px;
}

div.sphinxsidebar {
float: left;
width: 230px;
margin-left: -100%;
font-size: 90%;
word-wrap: break-word;
overflow-wrap : break-word;
}

div.sphinxsidebar ul {
list-style: none;
}

div.sphinxsidebar ul ul,
div.sphinxsidebar ul.want-points {
margin-left: 20px;
list-style: square;
}

div.sphinxsidebar ul ul {
margin-top: 0;
margin-bottom: 0;
}

div.sphinxsidebar form {
margin-top: 10px;
}

div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}

div.sphinxsidebar #searchbox form.search {
overflow: hidden;
}

div.sphinxsidebar #searchbox input[type="text"] {
float: left;
width: 80%;
padding: 0.25em;
box-sizing: border-box;
}

div.sphinxsidebar #searchbox input[type="submit"] {
float: left;
width: 20%;
border-left: none;
padding: 0.25em;
box-sizing: border-box;
}


img {
border: 0;
max-width: 100%;
}

/* -- search page ----------------------------------------------------------- */

ul.search {
margin: 10px 0 0 20px;
padding: 0;
}

ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
}

ul.search li a {
font-weight: bold;
}

ul.search li div.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
}

ul.keywordmatches li.goodmatch a {
font-weight: bold;
}

/* -- index page ------------------------------------------------------------ */

table.contentstable {
width: 90%;
margin-left: auto;
margin-right: auto;
}

table.contentstable p.biglink {
line-height: 150%;
}

a.biglink {
font-size: 1.3em;
}

span.linkdescr {
font-style: italic;
padding-top: 5px;
font-size: 90%;
}

/* -- general index --------------------------------------------------------- */

table.indextable {
width: 100%;
}

table.indextable td {
text-align: left;
vertical-align: top;
}

table.indextable ul {
margin-top: 0;
margin-bottom: 0;
list-style-type: none;
}

table.indextable > tbody > tr > td > ul {
padding-left: 0em;
}

table.indextable tr.pcap {
height: 10px;
}

table.indextable tr.cap {
margin-top: 10px;
background-color: #f2f2f2;
}

img.toggler {
margin-right: 3px;
margin-top: 3px;
cursor: pointer;
}

div.modindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}

div.genindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}

/* -- domain module index --------------------------------------------------- */

table.modindextable td {
padding: 2px;
border-collapse: collapse;
}

/* -- general body styles --------------------------------------------------- */

div.body {
min-width: 450px;
max-width: 800px;
}

div.body p, div.body dd, div.body li, div.body blockquote {
-moz-hyphens: auto;
-ms-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
}

a.headerlink {
visibility: hidden;
}

a.brackets:before,
span.brackets > a:before{
content: "[";
}

a.brackets:after,
span.brackets > a:after {
content: "]";
}

h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink,
caption:hover > a.headerlink,
p.caption:hover > a.headerlink,
div.code-block-caption:hover > a.headerlink {
visibility: visible;
}

div.body p.caption {
text-align: inherit;
}

div.body td {
text-align: left;
}

.first {
margin-top: 0 !important;
}

p.rubric {
margin-top: 30px;
font-weight: bold;
}

img.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}

img.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}

img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}

img.align-default, .figure.align-default {
display: block;
margin-left: auto;
margin-right: auto;
}

.align-left {
text-align: left;
}

.align-center {
text-align: center;
}

.align-default {
text-align: center;
}

.align-right {
text-align: right;
}

/* -- sidebars -------------------------------------------------------------- */

div.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px;
background-color: #ffe;
width: 40%;
float: right;
clear: right;
overflow-x: auto;
}

p.sidebar-title {
font-weight: bold;
}

div.admonition, div.topic, pre, div[class|="highlight"] {
clear: both;
}

/* -- topics ---------------------------------------------------------------- */

div.topic {
border: 1px solid #ccc;
padding: 7px;
margin: 10px 0 10px 0;
overflow-x: auto;
}

p.topic-title {
font-size: 1.1em;
font-weight: bold;
margin-top: 10px;
}

/* -- admonitions ----------------------------------------------------------- */

div.admonition {
margin-top: 10px;
margin-bottom: 10px;
padding: 7px;
overflow-x: auto;
}

div.admonition dt {
font-weight: bold;
}

p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
}

div.body p.centered {
text-align: center;
margin-top: 25px;
}

/* -- content of sidebars/topics/admonitions -------------------------------- */

div.sidebar > :last-child,
div.topic > :last-child,
div.admonition > :last-child {
margin-bottom: 0;
}

/* -- tables ---------------------------------------------------------------- */

table.docutils {
margin-top: 10px;
margin-bottom: 10px;
border: 0;
border-collapse: collapse;
}

table.align-center {
margin-left: auto;
margin-right: auto;
}

table.align-default {
margin-left: auto;
margin-right: auto;
}

table caption span.caption-number {
font-style: italic;
}

table caption span.caption-text {
}

table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid #aaa;
}

table.footnote td, table.footnote th {
border: 0 !important;
}

th {
text-align: left;
padding-right: 5px;
}

table.citation {
border-left: solid 1px gray;
margin-left: 1px;
}

table.citation td {
border-bottom: none;
}

th > :first-child,
td > :first-child {
margin-top: 0px;
}

th > :last-child,
td > :last-child {
margin-bottom: 0px;
}

/* -- figures --------------------------------------------------------------- */

div.figure {
margin: 0.5em;
padding: 0.5em;
}

div.figure p.caption {
padding: 0.3em;
}

div.figure p.caption span.caption-number {
font-style: italic;
}

div.figure p.caption span.caption-text {
}

/* -- field list styles ----------------------------------------------------- */

table.field-list td, table.field-list th {
border: 0 !important;
}

.field-list ul {
margin: 0;
padding-left: 1em;
}

.field-list p {
margin: 0;
}

.field-name {
-moz-hyphens: manual;
-ms-hyphens: manual;
-webkit-hyphens: manual;
hyphens: manual;
}

/* -- hlist styles ---------------------------------------------------------- */

table.hlist {
margin: 1em 0;
}

table.hlist td {
vertical-align: top;
}


/* -- other body styles ----------------------------------------------------- */

ol.arabic {
list-style: decimal;
}

ol.loweralpha {
list-style: lower-alpha;
}

ol.upperalpha {
list-style: upper-alpha;
}

ol.lowerroman {
list-style: lower-roman;
}

ol.upperroman {
list-style: upper-roman;
}

ol > li:first-child > :first-child,
ul > li:first-child > :first-child {
margin-top: 0px;
}

ol ol > li:first-child > :first-child,
ol ul > li:first-child > :first-child,
ul ol > li:first-child > :first-child,
ul ul > li:first-child > :first-child {
margin-top: revert;
}

ol > li:last-child > :last-child,
ul > li:last-child > :last-child {
margin-bottom: 0px;
}

ol ol > li:last-child > :last-child,
ol ul > li:last-child > :last-child,
ul ol > li:last-child > :last-child,
ul ul > li:last-child > :last-child {
margin-bottom: revert;
}

dl.footnote > dt,
dl.citation > dt {
float: left;
margin-right: 0.5em;
}

dl.footnote > dd,
dl.citation > dd {
margin-bottom: 0em;
}

dl.footnote > dd:after,
dl.citation > dd:after {
content: "";
clear: both;
}

dl.field-list {
display: grid;
grid-template-columns: fit-content(30%) auto;
}

dl.field-list > dt {
font-weight: bold;
word-break: break-word;
padding-left: 0.5em;
padding-right: 5px;
}

dl.field-list > dt:after {
content: ":";
}

dl.field-list > dd {
padding-left: 0.5em;
margin-top: 0em;
margin-left: 0em;
margin-bottom: 0em;
}

dl {
margin-bottom: 15px;
}

dd > :first-child {
margin-top: 0px;
}

dd ul, dd table {
margin-bottom: 10px;
}

dd {
margin-top: 3px;
margin-bottom: 10px;
margin-left: 30px;
}

dl > dd:last-child,
dl > dd:last-child > :last-child {
margin-bottom: 0;
}

dt:target, span.highlighted {
background-color: #fbe54e;
}

rect.highlighted {
fill: #fbe54e;
}

dl.glossary dt {
font-weight: bold;
font-size: 1.1em;
}

.optional {
font-size: 1.3em;
}

.sig-paren {
font-size: larger;
}

.versionmodified {
font-style: italic;
}

.system-message {
background-color: #fda;
padding: 5px;
border: 3px solid red;
}

.footnote:target {
background-color: #ffa;
}

.line-block {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}

.line-block .line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 1.5em;
}

.guilabel, .menuselection {
font-family: sans-serif;
}

.accelerator {
text-decoration: underline;
}

.classifier {
font-style: oblique;
}

.classifier:before {
font-style: normal;
margin: 0.5em;
content: ":";
}

abbr, acronym {
border-bottom: dotted 1px;
cursor: help;
}

/* -- code displays --------------------------------------------------------- */

pre {
overflow: auto;
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}

span.pre {
-moz-hyphens: none;
-ms-hyphens: none;
-webkit-hyphens: none;
hyphens: none;
}

div[class^="highlight-"] {
margin: 1em 0;
}

td.linenos pre {
border: 0;
background-color: transparent;
color: #aaa;
}

table.highlighttable {
display: block;
}

table.highlighttable tbody {
display: block;
}

table.highlighttable tr {
display: flex;
}

table.highlighttable td {
margin: 0;
padding: 0;
}

table.highlighttable td.linenos {
padding-right: 0.5em;
}

table.highlighttable td.code {
flex: 1;
overflow: hidden;
}

.highlight .hll {
display: block;
}

div.highlight pre,
table.highlighttable pre {
margin: 0;
}

div.code-block-caption + div {
margin-top: 0;
}

div.code-block-caption {
margin-top: 1em;
padding: 2px 5px;
font-size: small;
}

div.code-block-caption code {
background-color: transparent;
}

table.highlighttable td.linenos,
div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */
user-select: none;
}

div.code-block-caption span.caption-number {
padding: 0.1em 0.3em;
font-style: italic;
}

div.code-block-caption span.caption-text {
}

div.literal-block-wrapper {
margin: 1em 0;
}

code.descname {
background-color: transparent;
font-weight: bold;
font-size: 1.2em;
}

code.descclassname {
background-color: transparent;
}

code.xref, a code {
background-color: transparent;
font-weight: bold;
}

h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
background-color: transparent;
}

.viewcode-link {
float: right;
}

.viewcode-back {
float: right;
font-family: sans-serif;
}

div.viewcode-block:target {
margin: -1px -10px;
padding: 0 10px;
}

/* -- math display ---------------------------------------------------------- */

img.math {
vertical-align: middle;
}

div.body div.math p {
text-align: center;
}

span.eqno {
float: right;
}

span.eqno a.headerlink {
position: absolute;
z-index: 1;
}

div.math:hover a.headerlink {
visibility: visible;
}

/* -- printout stylesheet --------------------------------------------------- */

@media print {
div.document,
div.documentwrapper,
div.bodywrapper {
margin: 0 !important;
width: 100%;
}

div.sphinxsidebar,
div.related,
div.footer,
#top-link {
display: none;
}
}

+ 1
- 0
build/html/_static/css/badge_only.css View File

@@ -0,0 +1 @@
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}

BIN
build/html/_static/css/fonts/Roboto-Slab-Bold.woff View File


BIN
build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 View File


BIN
build/html/_static/css/fonts/Roboto-Slab-Regular.woff View File


BIN
build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 View File


BIN
build/html/_static/css/fonts/fontawesome-webfont.eot View File


+ 2671
- 0
build/html/_static/css/fonts/fontawesome-webfont.svg
File diff suppressed because it is too large
View File


BIN
build/html/_static/css/fonts/fontawesome-webfont.ttf View File


BIN
build/html/_static/css/fonts/fontawesome-webfont.woff View File


BIN
build/html/_static/css/fonts/fontawesome-webfont.woff2 View File


BIN
build/html/_static/css/fonts/lato-bold-italic.woff View File


BIN
build/html/_static/css/fonts/lato-bold-italic.woff2 View File


BIN
build/html/_static/css/fonts/lato-bold.woff View File


BIN
build/html/_static/css/fonts/lato-bold.woff2 View File


BIN
build/html/_static/css/fonts/lato-normal-italic.woff View File


BIN
build/html/_static/css/fonts/lato-normal-italic.woff2 View File


BIN
build/html/_static/css/fonts/lato-normal.woff View File


BIN
build/html/_static/css/fonts/lato-normal.woff2 View File


+ 4
- 0
build/html/_static/css/theme.css
File diff suppressed because it is too large
View File


BIN
build/html/_static/docs_logo.png View File

Before After
Width: 400  |  Height: 400  |  Size: 149KB

+ 315
- 0
build/html/_static/doctools.js View File

@@ -0,0 +1,315 @@
/*
* doctools.js
* ~~~~~~~~~~~
*
* Sphinx JavaScript utilities for all documentation.
*
* :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/

/**
* select a different prefix for underscore
*/
$u = _.noConflict();

/**
* make the code below compatible with browsers without
* an installed firebug like debugger
if (!window.console || !console.firebug) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
"profile", "profileEnd"];
window.console = {};
for (var i = 0; i < names.length; ++i)
window.console[names[i]] = function() {};
}
*/

/**
* small helper function to urldecode strings
*/
jQuery.urldecode = function(x) {
return decodeURIComponent(x).replace(/\+/g, ' ');
};

/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;

/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s === 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};

/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node, addItems) {
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 &&
!jQuery(node.parentNode).hasClass(className) &&
!jQuery(node.parentNode).hasClass("nohighlight")) {
var span;
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.className = className;
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
var bbox = node.parentElement.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
addItems.push({
"parent": node.parentNode,
"target": rect});
}
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this, addItems);
});
}
}
var addItems = [];
var result = this.each(function() {
highlight(this, addItems);
});
for (var i = 0; i < addItems.length; ++i) {
jQuery(addItems[i].parent).before(addItems[i].target);
}
return result;
};

/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();

var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];

return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}

/**
* Small JavaScript module for the documentation.
*/
var Documentation = {

init : function() {
this.fixFirefoxAnchorBug();
this.highlightSearchWords();
this.initIndexTable();
if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
this.initOnKeyListeners();
}
},

/**
* i18n support
*/
TRANSLATIONS : {},
PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
LOCALE : 'unknown',

// gettext and ngettext don't access this so that the functions
// can safely bound to a different name (_ = Documentation.gettext)
gettext : function(string) {
var translated = Documentation.TRANSLATIONS[string];
if (typeof translated === 'undefined')
return string;
return (typeof translated === 'string') ? translated : translated[0];
},

ngettext : function(singular, plural, n) {
var translated = Documentation.TRANSLATIONS[singular];
if (typeof translated === 'undefined')
return (n == 1) ? singular : plural;
return translated[Documentation.PLURALEXPR(n)];
},

addTranslations : function(catalog) {
for (var key in catalog.messages)
this.TRANSLATIONS[key] = catalog.messages[key];
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
this.LOCALE = catalog.locale;
},

/**
* add context elements like header anchor links
*/
addContextElements : function() {
$('div[id] > :header:first').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this headline')).
appendTo(this);
});
$('dt[id]').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this definition')).
appendTo(this);
});
},

/**
* workaround a firefox stupidity
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
*/
fixFirefoxAnchorBug : function() {
if (document.location.hash && $.browser.mozilla)
window.setTimeout(function() {
document.location.href += '';
}, 10);
},

/**
* highlight the search words provided in the url in the text
*/
highlightSearchWords : function() {
var params = $.getQueryParameters();
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
if (terms.length) {
var body = $('div.body');
if (!body.length) {
body = $('body');
}
window.setTimeout(function() {
$.each(terms, function() {
body.highlightText(this.toLowerCase(), 'highlighted');
});
}, 10);
$('<p class="highlight-link"><a href="javascript:Documentation.' +
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
.appendTo($('#searchbox'));
}
},

/**
* init the domain index toggle buttons
*/
initIndexTable : function() {
var togglers = $('img.toggler').click(function() {
var src = $(this).attr('src');
var idnum = $(this).attr('id').substr(7);
$('tr.cg-' + idnum).toggle();
if (src.substr(-9) === 'minus.png')
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
else
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
}).css('display', '');
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
togglers.click();
}
},

/**
* helper function to hide the search marks again
*/
hideSearchWords : function() {
$('#searchbox .highlight-link').fadeOut(300);
$('span.highlighted').removeClass('highlighted');