Welcome to the Dune Developer Documentation!¶
The Project¶
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.
- Developer documentation is available online at https://dune.network/docs/dune-node-mainnet . Make sure you are consulting the right version.
- The website https://dune.network/ contains more information about the project.
- All development happens on GitLab at https://gitlab.com/dune-network
The source code of Dune is placed under the GPLv3 License.
The Community¶
The website of the Dune Foundation.
Dune sub-reddit is an important meeting point of the community.
Several community-built block explorers are available:
More resources can be found on https://docs.dune.network
The Networks¶
Mainnet¶
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.
Testnet¶
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.
Getting started¶
The best place to start exploring the project is following the How Tos in the introduction.
Documentation:
Introduction tutorials:
User documentation:
White doc:
- Dune Software Architecture
- The peer-to-peer layer
- The validation subsystem
- Michelson: a low-level language for Smart Contracts in Dune
- Semantics of smart contracts and transactions
- Language semantics
- Introduction to the type system and notations
- Core data types and notations
- Core instructions
- Operations
- Domain specific data types
- Domain specific operations
- Macros
- Concrete syntax
- Annotations
- Entrypoints
- JSON syntax
- Examples
- Full grammar
- Reference implementation
- Proof-of-stake in Dune
- Protocol 005 Babylon
the Love Smart-Contract Language:
- Introduction
- Love Reference
- Love primitives
- Prefix & Infix primitives
- Comparison between values
- Raising exceptions
- Operations on tuples
- Operations on numeric values
- Translators
- Operations on lambdas
- Operation on lists
- The Bytes module
- Operation on strings
- The
Set
module - The
Map
module - The
BigMap
module - The
Current
module - The
Voting
module - The
Contract
module - The
Account
module - The
Crypto
module
- Tutorial for Love
Developer Tutorials:
APIs:
- Building documentation locally
- Online OCaml Documentation
- Command Line Interface
- RPCs - Index
- RPCs - Full description
- RPC Errors
- P2P message format
- Block header (shell)
- fitness.elem
- Operation (shell)
- Block_header (alpha-specific)
- Operation (alpha-specific)
- X_0
- X_2
- X_3
- X_5
- Z.t
- X_6
- X_4
- 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)
- X_8
- N.t
- public_key (Determined from data, 8-bit tag)
- public_key_hash (21 bytes, 8-bit tag)
- fitness.elem
- block_header.alpha.full_header
- inlined.endorsement.contents (5 bytes, 8-bit tag)
- inlined.endorsement
- operation.alpha.contents (Determined from data, 8-bit tag)