Welcome to the Dune Developer Documentation!¶
Dune is a distributed consensus platform with meta-consensus capability. Dune not only comes to consensus about the state of its ledger, like Bitcoin or Ethereum. It also attempts to come to consensus about how the protocol and the nodes should adapt and upgrade.
The source code of Dune is placed under the GPLv3 License.
The Dune network is the current incarnation of the Dune blockchain.
It runs with real DUNs from several sources:
- Foundators of Dune received tokens on June 24, 2019
- Tezos users received tokens through an airdrop in September 2019
- Tezos ICO participants can claim DUNs equivalent to their Tezos allocation (see Activate ICO account - Mainnet).
The Dune network has been live and open since June 24th, 2019.
All the instructions in this documentation are valid for Mainnet however we strongly encourage users to first try all the introduction tutorials on Testnet to familiarize themselves without risks.
Dune Testnet is a test network for the Dune blockchain with a faucet to obtain free DUNs (see Get free DUNs). It is updated and rebooted rarely and it is running the same code as the Mainnet. It is the reference network for developers wanting to test their software before going to beta and for users who want to familiarize themselves with Dune before using their real DUNs.
We offer support for Testnet on IRC.
The best place to start exploring the project is following the How Tos in the introduction.
- Key Management
- Baker Account Management
- Sandboxed mode
- History modes
- Dune Software Architecture
- The peer-to-peer layer
- The validation subsystem
- Michelson: the language of Smart Contracts in Dune
- Proof-of-stake in Dune
- Love Reference
- Love primitives
- Prefix & Infix primitives
- Comparison between values
- Raising exceptions
- Operations on tuples
- Operations on numeric values
- Operations on contracts
- Cryptographic operations
- Operations on bytes
- Operations on strings
- Operations on lambdas
- Operations on lists
- Operations on sets
- Operations on maps
- Operations on Big maps
- Tutorial for Love (coming soon)
- JSON/RPC interface
- The Error Monad
- Michelson Anti-Patterns
- How to start reading protocol Alpha
- Economic protocol sandboxing
- How to test a protocol proposal
- Profiling the Dune node
- Flexible Network Sandboxes
- Python Execution and Testing Environment
- How to contribute
- Building documentation locally
- Online OCaml Documentation
- Command Line Interface
- RPCs - Index
- RPCs - Full description
- RPC Errors
- P2P message format
- Block header (shell)
- Operation (shell)
- Block_header (alpha-specific)
- Operation (alpha-specific)
- X_7 (Determined from data, 8-bit tag)
- scripted.opt_or_hash (Determined from data, 8-bit tag)
- contract_id (22 bytes, 8-bit tag)
- entrypoint (Determined from data, 8-bit tag)
- public_key (Determined from data, 8-bit tag)
- public_key_hash (21 bytes, 8-bit tag)
- inlined.endorsement.contents (5 bytes, 8-bit tag)
- operation.alpha.contents (Determined from data, 8-bit tag)