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
- 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
- JSON/RPC interface
- The Error Monad
- Michelson Anti-Patterns
- How to start reading protocol Alpha
- Economic protocol sandboxing
- Profiling the Dune node
- Flexible Network Sandboxes
- 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_2 (Determined from data, 8-bit tag)
- scripted.opt_or_hash (Determined from data, 8-bit tag)
- contract_id (22 bytes, 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)