Skip to content

Commit a9b384d

Browse files
docs: rewrite README with technical overview of Dash Platform (#3276)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent ac72dae commit a9b384d

4 files changed

Lines changed: 347 additions & 97 deletions

File tree

‎README.md‎

Lines changed: 172 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
: <!-- markdownlint-disable MD033 MD041 -->
1+
<!-- markdownlint-disable MD033 MD041 -->
22
<p align="center">
33
<a href="https://dashplatform.readme.io/docs/introduction-what-is-dash-platform/">
4-
<img alt="babel" src="https://media.dash.org/wp-content/uploads/dash_digital-cash_logo_2018_rgb_for_screens.png" width="546">
4+
<img alt="Dash" src="https://media.dash.org/wp-content/uploads/dash_digital-cash_logo_2018_rgb_for_screens.png" width="546">
55
</a>
66
</p>
77

@@ -16,11 +16,6 @@
1616
<a href="https://twitter.com/intent/follow?screen_name=Dashpay"><img alt="Follow on Twitter" src="https://img.shields.io/twitter/follow/Dashpay.svg?style=social&label=Follow"></a>
1717
</p>
1818

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
22-
applications.
23-
2419
<details>
2520
<summary>Per-Crate Coverage</summary>
2621

@@ -30,99 +25,179 @@ applications.
3025
| drive | [![codecov](https://codecov.io/gh/dashpay/platform/branch/v3.1-dev/graph/badge.svg?component=drive)](https://codecov.io/gh/dashpay/platform/component/drive) |
3126
| drive-abci | [![codecov](https://codecov.io/gh/dashpay/platform/branch/v3.1-dev/graph/badge.svg?component=drive-abci)](https://codecov.io/gh/dashpay/platform/component/drive-abci) |
3227
| sdk | [![codecov](https://codecov.io/gh/dashpay/platform/branch/v3.1-dev/graph/badge.svg?component=sdk)](https://codecov.io/gh/dashpay/platform/component/sdk) |
33-
| dapi-client | [![codecov](https://codecov.io/gh/dashpay/platform/branch/v3.1-dev/graph/badge.svg?component=dapi-client)](https://codecov.io/gh/dashpay/platform/component/dapi-client) |
34-
| platform-version | [![codecov](https://codecov.io/gh/dashpay/platform/branch/v3.1-dev/graph/badge.svg?component=platform-version)](https://codecov.io/gh/dashpay/platform/component/platform-version) |
35-
| platform-value | [![codecov](https://codecov.io/gh/dashpay/platform/branch/v3.1-dev/graph/badge.svg?component=platform-value)](https://codecov.io/gh/dashpay/platform/component/platform-value) |
36-
| platform-wallet | [![codecov](https://codecov.io/gh/dashpay/platform/branch/v3.1-dev/graph/badge.svg?component=platform-wallet)](https://codecov.io/gh/dashpay/platform/component/platform-wallet) |
37-
| drive-proof-verifier | [![codecov](https://codecov.io/gh/dashpay/platform/branch/v3.1-dev/graph/badge.svg?component=drive-proof-verifier)](https://codecov.io/gh/dashpay/platform/component/drive-proof-verifier) |
3828

3929
</details>
4030

41-
If you are looking for how to contribute to the project or need any help with
42-
building an app on the Dash Platform - message us on the [Dash
43-
Discord](https://discordapp.com/invite/PXbUxJB)!
44-
45-
## Intro
46-
47-
This is a multi-package repository - sometimes also known as monorepository -
48-
that contains all packages that comprise the Dash platform - for example, Drive,
49-
which is the storage component of Dash Platform, the JavaScript SDK, wallet-lib,
50-
DAPI, and others. Every individual package contains its own readme. Packages are
51-
located in the [packages](./packages) directory.
52-
53-
### Supported networks
54-
55-
Dash Platform is currently undergoing testing and final development necessary to
56-
support its release on the Dash production network (mainnet). The packages in
57-
this repository may be used on the following networks:
58-
59-
- [x] **Development networks** ([**devnets**](https://docs.dash.org/projects/platform/en/stable/docs/reference/glossary.html#devnet))
60-
- [x] [**Testnet**](https://docs.dash.org/projects/platform/en/stable/docs/reference/glossary.html#testnet)
61-
- [x] [Mainnet](https://docs.dash.org/projects/platform/en/stable/docs/reference/glossary.html#mainnet)
62-
63-
## FAQ
64-
65-
### How to build and set up a node from the code in this repo?
66-
67-
- Clone the repo
68-
- Install prerequisites:
69-
- [node.js](https://nodejs.org/) v20
70-
- [docker](https://docs.docker.com/get-docker/) v20.10+
71-
- [rust](https://www.rust-lang.org/tools/install) v1.92+, with wasm32 target (`rustup target add wasm32-unknown-unknown`)
72-
- [protoc - protobuf compiler](https://github.com/protocolbuffers/protobuf/releases) v32.0+
73-
- if needed, set PROTOC environment variable to location of `protoc` binary
74-
- [wasm-bindgen toolchain](https://rustwasm.github.io/wasm-bindgen/):
75-
- **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`
85-
- wasm-pack: `curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh`
86-
- Run `corepack enable` to enable [corepack](https://nodejs.org/dist/latest/docs/api/corepack.html) and install yarn
87-
- Run `yarn setup` to install dependencies and configure and build all packages
88-
- Run `yarn start` to start the local dev environment built from the sources
89-
- Run `yarn test` to run the whole test suite (note that running tests requires a running node,
90-
so be sure to call `yarn start` first). Alternatively, you can run tests for a specific
91-
package by running `yarn workspace <package_name> test`, for example running
92-
`yarn workspace @dashevo/dapi-client test` will run tests for the JS DAPI client. To see
93-
all available packages, please see the [packages readme](./packages/README.md)
94-
- `yarn stop` will stop the local dev environment. Running a dev environment requires a non-trivial amount of system resources,
95-
so it is best to stop the local node when not in use
96-
- Run `yarn build` to rebuild the project after changes. If you have a local node
97-
running, you may need to restart it by running `yarn restart`
98-
- To completely reset all local data and builds, run `yarn reset`
99-
100-
### Looking for support?
101-
102-
For questions and support, please join our [Dash Discord](https://discordapp.com/invite/PXbUxJB)
103-
104-
### Where are the docs?
105-
106-
Our docs are hosted on
107-
[docs.dash.org](https://docs.dash.org/projects/platform/en/stable/docs/intro/what-is-dash-platform.html).
108-
You can create issues and feature requests in the
109-
[issues](https://github.com/dashpay/platform/issues) for this repository.
110-
111-
### Want to report a bug or request a feature?
112-
113-
Please read through our [CONTRIBUTING.md](CONTRIBUTING.md) and fill out the
114-
issue template at [platform/issues](https://github.com/dashpay/platform/issues)!
115-
116-
### Want to contribute to Dash Platform?
117-
118-
Check out:
119-
120-
- Our [Dash Discord](https://discordapp.com/invite/PXbUxJB)
121-
- Our [CONTRIBUTING.md](CONTRIBUTING.md) to get started with setting up the
122-
repo.
123-
- Our concise contributor guide: [AGENTS.md](AGENTS.md) (repo structure, commands, style, tests).
124-
- Our [news](https://www.dash.org/news/) and [blog](https://www.dash.org/blog/) which contains release posts and
125-
explanations.
31+
For in-depth architecture, internals, and developer documentation, see
32+
[The Dash Platform Book](https://dashpay.github.io/platform/).
33+
34+
## What is Dash Platform
35+
36+
Dash Platform is a decentralized data storage and application layer built on top
37+
of the Dash payment network. It lets developers store, query, and
38+
cryptographically verify structured data on the Dash masternode network without
39+
deploying or executing user-written code on-chain.
40+
41+
Instead of smart contracts, developers define **data contracts** -- JSON
42+
Schema-based specifications that describe the structure and validation rules for
43+
their application data. The network stores, indexes, and enforces these schemas
44+
directly. Applications interact with the platform through structured data reads
45+
and writes (called **state transitions**) rather than arbitrary code execution.
46+
Smart contract support is planned for Platform v4.0 (targeted for mainnet in
47+
2027).
48+
49+
### How Dash Platform compares
50+
51+
| | Bitcoin | Ethereum | Solana | Polkadot | NEAR | Dash Platform |
52+
|---|---|---|---|---|---|---|
53+
| **Primary purpose** | Payments | General-purpose smart contracts | High-throughput smart contracts | Multi-chain shared security | Sharded smart contracts | Decentralized data storage and querying |
54+
| **Consensus** | Nakamoto (PoW) | Gasper (PoS) | Tower BFT (PoS) | GRANDPA + BABE (PoS) | Nightshade (PoS) | Tenderdash SBFT (masternode quorums, BLS threshold signatures) |
55+
| **Finality** | Probabilistic (~60 min) | ~13 min (2 epochs) | **~0.4s (optimistic)** | ~12-60s (2 rounds) | **~1-2s** | **Instant (1 block)** |
56+
| **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** |
59+
| **Data model** | UTXOs | Account / key-value | Account / key-value | Account / key-value | Account / key-value | **Structured documents with secondary indexes** |
60+
| **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
137+
[The Dash Platform Book](https://dashpay.github.io/platform/).
138+
139+
## Foundation libraries
140+
141+
Dash Platform builds on several standalone libraries developed by the Dash
142+
project:
143+
144+
- [Tenderdash](https://github.com/dashpay/tenderdash) -- SBFT consensus engine
145+
(Go), a fork of Tendermint redesigned for Dash's masternode quorum model
146+
- [rs-tenderdash-abci](https://github.com/dashpay/rs-tenderdash-abci) -- Rust
147+
ABCI interface for connecting Drive to Tenderdash
148+
- [GroveDB](https://github.com/dashpay/grovedb) -- authenticated key-value
149+
store built on hierarchical Merkle trees, providing proof generation for
150+
arbitrary queries
151+
- [rust-dashcore](https://github.com/dashpay/rust-dashcore) -- Rust
152+
implementation of Dash Core primitives (transactions, blocks, BLS keys,
153+
addresses)
154+
155+
## Repository structure
156+
157+
This is a monorepo containing all packages that comprise Dash Platform. Packages
158+
are located in the [packages](./packages) directory. Key packages include:
159+
160+
- **rs-drive** -- Drive query and indexing layer over GroveDB
161+
- **rs-drive-abci** -- Execution layer connecting Drive to Tenderdash consensus
162+
- **rs-dpp** -- Dash Platform Protocol (data contracts, documents, state
163+
transitions, identities)
164+
- **rs-sdk** -- Rust SDK for building applications on Dash Platform
165+
- **wasm-sdk** / **wasm-dpp2** -- WebAssembly bindings for browser-based
166+
applications
167+
- **rs-sdk-ffi** / **swift-sdk** -- FFI layer and iOS/Swift SDK
168+
- **js-evo-sdk** -- JavaScript SDK
169+
- **dashmate** -- Node management and local development tool
170+
- **dapi** / **rs-dapi** -- Decentralized API server implementations
171+
172+
## SDK support
173+
174+
| SDK | Status | Package |
175+
|-----|--------|---------|
176+
| **Rust** | Available now | [`rs-sdk`](./packages/rs-sdk) |
177+
| **JavaScript** | Available now | [`js-evo-sdk`](./packages/js-evo-sdk) |
178+
| **iOS (Swift)** | Coming in v3.1 | [`swift-sdk`](./packages/swift-sdk) |
179+
| **Android** | Coming in v3.2 | -- |
180+
181+
For details on choosing an SDK and what each one provides, see the
182+
[SDK Support](https://dashpay.github.io/platform/sdk-support.html) chapter in
183+
The Dash Platform Book.
184+
185+
## Getting started
186+
187+
For prerequisites, local development setup, and build instructions, see the
188+
[Getting Started](https://dashpay.github.io/platform/getting-started.html)
189+
chapter in The Dash Platform Book.
190+
191+
## Contributing
192+
193+
- Join the [Dash Discord](https://discordapp.com/invite/PXbUxJB) for questions
194+
and discussion
195+
- Read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on submitting issues
196+
and pull requests
197+
- See [AGENTS.md](AGENTS.md) for a concise contributor guide covering repo
198+
structure, commands, style, and tests
199+
- File issues and feature requests at
200+
[platform/issues](https://github.com/dashpay/platform/issues)
126201

127202
## License
128203

‎book/src/SUMMARY.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Summary
22

33
[Introduction](introduction.md)
4+
[SDK Support](sdk-support.md)
5+
[Getting Started](getting-started.md)
46

57
---
68

0 commit comments

Comments
 (0)