Introduction¶
The Base SDK for Dash is a collection of packages that enable applications to parse, construct and interact with the
Dash blockchain. This is achieved by leveraging the rust-bitcoin
ecosystem to provide a framework that builds upon existing, familiar APIs and contract expectations.
To achieve this, state-independent portions of the consensus engine have been split into composable packages that can be imported as needed.
| Crate | Description | CI | Coverage | Version |
|---|---|---|---|---|
| dash-num | Hash blobs, 256-bit arithmetic, compact target encoding | |||
| dash-p2p-core | P2P message types and wire format | Unreleased. | ||
| dash-params | Chain parameters for mainnet, testnet3, and regtest |
Unreleased. | ||
| dash-pkc | BLS (legacy + IETF) and secp256k1 operations | |||
| dash-pow | Proof of work scheme | |||
| dash-primitives | Blocks, transactions, payloads, governance objects | Unreleased. | ||
| dash-script | Script opcodes, classification, and address derivation | Unreleased. | ||
| dash-types | Shared byte and integer newtypes, serde helpers |
System Requirements¶
Some crates rely on instruction set extensions that set hardware minimums for the architectures listed below.
Builds for these architectures fail unless the build flags for them are
defined or the portable feature is
enabled. Builds for other architectures run without hardware acceleration.
- (x86_64) Intel Broadwell, AMD Zen, or newer with AES-NI and ADX enabled.
- (AArch64) ARMv8-A or newer with cryptographic extensions.
- (WebAssembly) Wasm 2.0-capable runtime with support for vector instructions.
Using non-portable builds on hosts that do not meet the above requirements will likely result in abrupt termination
due to illegal instructions (SIGILL).
Is the SDK a full node?¶
The Base SDK is not a full node implementation nor does it intend to be. no_std + alloc restricts I/O and networking
making it better suited for resource-constrained, sandboxed or otherwise limited environments. The public contract
reflects this, restricted to only stateless or relatively context-independent portions of the overall consensus engine.
For a more batteries-included solution, consider rust-dashcore or the C++
reference implementation, Dash Core over
RPC,
REST or
ZMQ.