You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit a9b384d
Browse filesBrowse the repository at this point in the historyBrowse files
<ahref="https://twitter.com/intent/follow?screen_name=Dashpay"><imgalt="Follow on Twitter"src="https://img.shields.io/twitter/follow/Dashpay.svg?style=social&label=Follow"></a>
17
17
</p>
18
18
19
-
Dash Platform is a technology stack for building decentralized applications on
20
-
the Dash network. The two main architectural components, Drive and DAPI, turn
21
-
the Dash P2P network into a cloud that developers can integrate with their
-**IMPORTANT (OSX only)**: built-in `llvm` on OSX does not work, needs to be installed from brew:
76
-
-`brew install llvm`
77
-
- LLVM installed from brew is keg only, and path to it must be provided in the profile file,
78
-
in terminal run `echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> ~/.zshrc` or `echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> ~/.bash_profile` depending on your default shell.
79
-
You can find your default shell with `echo $SHELL`
80
-
- Reload your shell with `source ~/.zshrc` or `source ~/.bash_profile`
81
-
-`cargo install wasm-bindgen-cli@0.2.103`
82
-
-*double-check that wasm-bindgen-cli version above matches wasm-bindgen version in Cargo.lock file*
83
-
-*Depending on system, additional packages may need to be installed as a prerequisite for wasm-bindgen-cli. If anything is missing, installation will error and prompt what packages are missing (i.e. clang, llvm, libssl-dev)*
84
-
- essential build tools - example for Debian/Ubuntu: `apt install -y build-essential libssl-dev pkg-config clang cmake llvm`
|**Decentralized querying**| Keys only (UTXO lookup) | Keys only (no native indexing) | Keys only (via RPC, no proofs) | Keys only (per parachain) | Keys only (via RPC, no proofs) |**Rich queries with indexes, ordering, and ranges -- all with proofs**|
57
+
|**State proofs**| SPV (block headers) | Merkle-Patricia proofs | No native proofs | Merkle proofs (per parachain) | Merkle-Patricia proofs |**GroveDB Merkle proofs for every query**|
58
+
|**Light client trust**| Follows longest chain | Needs sync committee | Trusts RPC provider | Trusts relay chain | Trusts RPC provider |**Cryptographic proof per response -- same security as a full node**|
|**Smart contracts**| No (limited Script opcodes) |**Yes (Solidity / Vyper on EVM)**|**Yes (Rust / C on SVM)**| Yes (per-parachain, typically Wasm) |**Yes (Rust / JS / AssemblyScript on Wasm VM)**| Coming in v4.0 |
61
+
62
+
The standout difference is light client verification. Most chains either offer
63
+
no state proofs (Solana), require trusting intermediaries (Polkadot's relay
64
+
chain, NEAR's RPC providers), or give proofs that are expensive to verify
65
+
(Ethereum's sync committee). Dash Platform serves a cryptographic proof with
66
+
every query response, and a single BLS threshold signature is all a client needs
67
+
to verify it. A mobile wallet gets the same security guarantees as a full node.
68
+
69
+
### Architecture deep dive
70
+
71
+
The central problem Dash Platform solves is: how do you let a light client --
72
+
a mobile wallet, a browser app, a third-party service -- query decentralized
73
+
state and **know** the answer is correct, without running a full node and
74
+
without trusting the node that served the response?
75
+
76
+
Platform's answer stacks four layers. At the bottom,
77
+
[GroveDB](https://github.com/dashpay/grovedb) provides the raw authenticated
78
+
storage -- a hierarchy of Merkle trees where every key-value pair has a
79
+
cryptographic path up to a single root hash. GroveDB handles insertions,
80
+
deletions, and proof generation, but it knows nothing about documents,
81
+
identities, or application logic. Think of it as Platform's assembly language:
82
+
powerful and provable, but operating at the level of individual tree operations.
83
+
84
+
**Drive** is the layer that gives GroveDB meaning -- much as C gives structure
85
+
and abstraction over assembly. Drive organizes GroveDB's raw trees into a
86
+
structured query system with secondary indexes: it defines how documents,
87
+
identities, balances, tokens, and data contracts are laid out across the tree
88
+
hierarchy, how indexes are maintained, and how queries are translated into
89
+
authenticated tree operations. When an application asks "give me all documents
90
+
where `owner = X`, sorted by `createdAt`", it is Drive that maps that query onto
91
+
the right set of GroveDB tree traversals and returns a result with a proof.
92
+
93
+
Above Drive sits **Drive-ABCI**, the execution layer that ties everything
94
+
together. It connects Drive to
95
+
[Tenderdash](https://github.com/dashpay/tenderdash) consensus via ABCI,
96
+
validates and applies state transitions, enforces protocol rules, and commits
97
+
the GroveDB root hash into each consensus block. Tenderdash itself runs Scalable
98
+
Byzantine Fault Tolerant (SBFT) consensus across a rotating quorum of
99
+
masternodes. Unlike classical BFT where every validator signs every block,
100
+
Tenderdash selects a deterministic quorum for each block and recovers a single
101
+
BLS threshold signature from that quorum. One compact signature attests to the
102
+
entire committed state, and that state root cryptographically commits to every
103
+
individual piece of data in the system.
104
+
105
+
The result is that to verify any single query result, a client needs only three
106
+
things: the data itself, its Merkle proof against the state root, and the
107
+
threshold signature on that root. No full node, no chain of block headers, no
108
+
trust in the serving node.
109
+
110
+
### Key capabilities
111
+
112
+
**Identities and naming.** Users register identities on-chain -- first-class
113
+
protocol objects with hierarchical key management, not just addresses. Identities
114
+
can hold multiple authentication and encryption keys with different security
115
+
levels and purposes. The Dash Platform Naming Service (DPNS) maps human-readable
116
+
usernames to identities, resolved directly by the network.
117
+
118
+
**Credits and fees.** Users convert Dash into credits that pay for storage and
119
+
state transitions. Fees are deterministic and based on the actual storage and
120
+
processing cost of each operation. The platform supports transparent fee payment
121
+
from Dash addresses as well as private fee payment through a shielded pool using
122
+
Orchard-based zero-knowledge proofs (Halo2).
123
+
124
+
**Tokens.** The platform supports user-created tokens with protocol-enforced
125
+
rules for minting, burning, transferring, and freezing. Token behavior is
126
+
configured declaratively through data contract definitions. Pre-programmed
127
+
distributions, group-based minting authority, and manual/managed supply models
128
+
are all native protocol features rather than user-written contract logic.
129
+
130
+
**Decentralized API.** Clients interact with the network through DAPI, a gRPC
131
+
interface served by every masternode. There is no central API server, gateway, or
132
+
RPC provider. Any masternode can serve any request, and every response can carry
133
+
a proof. DAPI provides endpoints for querying documents, broadcasting state
134
+
transitions, and verifying proofs.
135
+
136
+
For a detailed treatment of each of these areas, see
0 commit comments