Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,14 @@
templates_path = ['_templates']
exclude_patterns = [
'_build',
'.venv',
'venv',
'Thumbs.db',
'.DS_Store',
'README.md',
'CLAUDE.md',
'.devcontainer',
'.codex',
'.local',
'scripts',
'img/dev/gifs/README.md',
Expand Down
2 changes: 1 addition & 1 deletion docs/explanations/dpns.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ After voting ends, the name is either awarded to one of the identities or locked
Assuming masternodes do not vote to lock, the identity receiving the most votes takes ownership of the name. However, if the vote locks the name, no identity receives it. If only one identity requests the name, they will receive it even if no masternodes vote.

:::{note}
Locked names can no longer be requested or awarded in Dash Platform v1, but the plan is to change this in future updates.
Locked names cannot currently be re-requested or awarded. This policy may be revisited in future Platform releases.
:::

### Implementation
Expand Down
10 changes: 6 additions & 4 deletions docs/explanations/fees.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ Fees on Dash Platform are divided into two main categories:
Storage fees cover the costs to store the various types of data throughout the network, while processing fees cover the computational costs incurred by the masternodes to process state transitions. For everyday use, processing fees are minuscule compared to storage fees. However, they are important in the prevention of attacks on the network, in which case they become prohibitively expensive.

:::{tip}
Comprehensive details regarding fees will be available in an upcoming *Dash Platform Fee System* DIP.
For the implementation-level constants and limits currently used by Platform, see the
[protocol constants reference](../protocol-ref/protocol-constants.md).
:::

## Costs
Expand Down Expand Up @@ -46,7 +47,7 @@ Given fluctuations of the Dash price, a variable *Fee Multiplier* provides a way
feePaid = initialFee * feeMultiplier
```

The Fee Multiplier is subject to change at any time at the discretion of the masternodes via a voting mechanism. Dash Core Group research indicates maintaining fees at approximately 2x the cost of hosting the network is optimal.
The Fee Multiplier is subject to change at any time via network governance and protocol updates.

<!-- Uncomment once link available
An in-depth look at the Fee Multiplier can be found at **link**
Expand All @@ -58,7 +59,8 @@ In an attempt to minimize Dash Platform's storage requirements, users are incent

## User Tip

Wallets will be enabled to give users the option to provide a tip to the block proposer in hopes of incentivizing them to include their state transition in the next block. This feature will be especially useful in times of high traffic.
Platform supports a user tip component that can be used to incentivize inclusion of a state
transition in the next block, especially during periods of high traffic.

## Formula

Expand All @@ -70,4 +72,4 @@ The high level formula for a state transition's fee is:

<!-- Uncomment once DIP available
See *DIPXX: Dash Platform Fee System* for a detailed breakdown of each component.
-->
-->
16 changes: 8 additions & 8 deletions docs/explanations/platform-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@ For additional detail, see the [State Transition](../explanations/platform-proto

## Versions

| Version | Information |
| :------ | :---------- |
| 0.25 | See details in the [GitHub release](https://github.com/dashpay/platform/releases/tag/v0.25.0). |
| 0.24 | See details in the [GitHub release](https://github.com/dashpay/platform/releases/tag/v0.24.0). |
| 0.23 | See details in the [GitHub release](https://github.com/dashpay/platform/releases/tag/v0.23.0). |
| 0.22 | See details in the [GitHub release](https://github.com/dashpay/platform/releases/tag/v0.22.0). |
| 0.21 | See details in the [GitHub release](https://github.com/dashevo/js-dpp/releases/tag/v0.21.0). |
| 0.20 | This release updated to a newer version of JSON Schema (2020-12 spec) and also switched to a new regex module ([Re2](https://github.com/google/re2)) for improved security. See more details in the [GitHub release](https://github.com/dashevo/js-dpp/releases/tag/v0.20.0). |
Platform Protocol evolves together with the public Dash Platform codebase. For the latest
implementation details and release history, see the
[Dash Platform monorepo](https://github.com/dashpay/platform) and the
[GitHub releases page](https://github.com/dashpay/platform/releases).

Older version-specific notes that referenced pre-mainnet releases have been removed from this page
because they no longer reflect the current public Platform state as clearly as the source
repositories do.

```{toctree}
:maxdepth: 2
Expand Down
17 changes: 13 additions & 4 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,15 @@
# Platform docs

Welcome to the Dash Platform developer documentation. You'll find guides and documentation to help
you start working with Dash Platform and building decentralized applications based on the Dash
cryptocurrency. Let's jump right in!
you start working with Dash Platform and building decentralized applications on Dash. This site
focuses on the developer-facing concepts, tutorials, and API references for working with Platform's
public network and open-source tooling.

:::{note}
Looking for the current source tree or lower-level implementation details? See the
[Dash Platform monorepo](https://github.com/dashpay/platform) and the
[Dash Platform Book](https://dashpay.github.io/platform/).
:::

```{eval-rst}
.. grid:: 1 2 3 3
Expand All @@ -26,8 +33,8 @@ cryptocurrency. Let's jump right in!
:link-type: ref
:link: tutorials-intro

Basics of building with Dash Platform
Hands-on guides for connecting to Platform and submitting data

+++
:ref:`Click to begin <tutorials-intro>`

Expand Down Expand Up @@ -157,6 +164,8 @@ protocol-ref/errors

resources/faq
resources/repository-overview
Dash Platform Monorepo <https://github.com/dashpay/platform>
Dash Platform Book <https://dashpay.github.io/platform/>
Platform Bridge <https://bridge.thepasta.org/>
Platform Explorer <https://platform-explorer.com/>
Testnet Block Explorer <https://insight.testnet.networks.dash.org/insight/>
Expand Down
35 changes: 27 additions & 8 deletions docs/intro/what-is-dash-platform.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,21 @@

# What is Dash Platform

Dash Platform is a [Web3](https://en.wikipedia.org/wiki/Web3) technology stack for building decentralized applications on the Dash network. The two main architectural components, [Drive](../explanations/drive.md) and [DAPI](../explanations/dapi.md), turn the Dash P2P network into a cloud that developers can integrate with their applications.
Dash Platform is a [Web3](https://en.wikipedia.org/wiki/Web3) technology stack for building
decentralized applications on the Dash network. It is best understood as a decentralized data
storage and application layer on top of Dash: developers define schemas and submit structured state
transitions instead of deploying arbitrary user-written code on-chain.

Its core components, [Drive](../explanations/drive.md) and [DAPI](../explanations/dapi.md),
provide structured data storage, identity primitives, rich queries, and verifiable data access on
top of the Dash network.

:::{tip}
Dash Platform is developed in the open. For the current implementation details, package layout, and
build instructions, see the [Dash Platform monorepo](https://github.com/dashpay/platform). For a
broader architectural walkthrough of the Rust codebase, see the
[Dash Platform Book](https://dashpay.github.io/platform/).
:::

```{eval-rst}
.. raw:: html
Expand All @@ -18,19 +32,22 @@ Dash Platform is a [Web3](https://en.wikipedia.org/wiki/Web3) technology stack f

### Decentralized Cloud Storage

Store your application data in the safest place on the Internet. All data stored on the Dash network is protected by Dash's consensus algorithm, ensuring data integrity and availability.
Store structured application data on the Dash network with consensus-backed integrity and
availability.

### Reduced Data Silos

Because your application data is stored across many nodes on the Dash network, it is safe and always available for customers, business partners, and investors.
Because application data is stored across the Dash masternode network, it can be shared and queried
without relying on a single hosted backend.

### Client Libraries

Write code and integrate with Dash Platform using the languages that matter to your business. Don't worry about understanding blockchain infrastructure: a growing number of client libraries abstract away the complexity typically associated with working on blockchain-based networks.

### Instant Data Confirmation

Unlike many blockchain-based networks, data stored on the platform is instantly confirmed by the Dash consensus algorithm to ensure the best user experience for users. With Dash Platform, you can gain the advantages of a blockchain-based storage network without the usual UX compromises.
Unlike many blockchain-based networks, Platform is designed for fast finality and proof-based data
verification, making it practical for light clients and user-facing applications.

```{eval-rst}
.. figure:: ../../img/join-community.svg
Expand All @@ -48,12 +65,14 @@ DAPI is a _decentralized_ HTTP API exposing [JSON-RPC](https://www.jsonrpc.org/)

DAPI provides developers the same access and security as running their own Dash node without the cost and maintenance overhead. Unlike traditional APIs which have a single point of failure, DAPI allows clients to connect to different instances depending on resource availability in the Dash network.

Developers can connect to DAPI directly or use a client library. This initial client library, dapi-client, is a relatively simple API wrapper developed by Dash Core Group to provide function calls to the DAPI endpoints.
Developers can connect to DAPI directly or use higher-level SDKs and client libraries maintained in
the Dash Platform monorepo. These libraries handle connection management, data serialization, and
common application workflows. A major design goal of Platform is that clients can verify responses
with proofs rather than trusting the node that served them.

The source for both DAPI and dapi-client are available on GitHub:
The source for these components is available on GitHub:

- DAPI: <https://github.com/dashpay/platform/tree/master/packages/dapi>
- DAPI-Client: <https://github.com/dashpay/platform/tree/master/packages/js-dapi-client>
- Platform monorepo: <https://github.com/dashpay/platform>

### Drive - Decentralized Storage

Expand Down
13 changes: 7 additions & 6 deletions docs/reference/platform-proofs.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

# Platform Proofs

>❗️ Platform v0.22.0
>
> Note: As part of the transition from MongoDB to Dash's [GroveDB](https://github.com/dashpay/grovedb), proofs will be not be available for at least the initial version of Platform v0.22.
Platform proofs are an important part of Dash Platform's trust model. When a response is requested
with `prove: true`, Platform can return proof data that allows clients to verify that the response
matches consensus state.

Since data verification is a critical aspect of Dash Platform, all [Platform endpoints](../reference/dapi-endpoints-platform-endpoints.md) can provide an optional proof that the response is correct. Set the optional `prove` parameter (`"prove": true`) in the request to receive a proof that contains the requested data.

Expand Down Expand Up @@ -57,9 +57,10 @@ Dash Platform 0.21.0 introduced updates to support returning multiple store tree
- `documentsProof`
- `stateTransitionProof`

> 🚧
>
> Dash Platform 0.21.0 introduced a 4 byte [protocol version](https://github.com/dashevo/js-dpp/pull/325) that is prepended to the binary format and is not part of the CBOR-encoded data. When parsing proofs it is necessary to exclude these bytes before decoding the returned data with CBOR.
:::{note}
Some proof payloads include a 4-byte protocol version prefix that is not part of the CBOR-encoded
value. When decoding those values, strip the version prefix before CBOR decoding.
:::

#### Structure

Expand Down
20 changes: 8 additions & 12 deletions docs/resources/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@ Dash Platform has numerous significant advantages, including:
API](../explanations/dapi.md).
- Verifiable data: Efficient [GroveDB proofs](https://www.grovedb.org/) for query responses provide
transparent data integrity.
- Open development: Core Platform components, SDKs, and tooling are developed in public repos and
can be inspected directly.

Although the current feature set covers many use cases, future versions will include features like
smart contracts to make it even more competitive and directly comparable with projects like
Ethereum, etc.
The current feature set already supports identities, names, structured application data, proofs,
and related developer tooling. New capabilities continue to ship in ongoing releases.

:::

Expand All @@ -31,8 +32,8 @@ It already is! Dash Platform [launched on
mainnet](https://www.dash.org/news/dash-evolution-v1-0-0-release-announcement/) in Q3 2024 and has
had multiple releases since then to add features such as [NFTs](../explanations/nft.md).

The next major release, v2.0, includes a flexible token system. Multiple teams are working to
improve the SDK experience so developers can more easily get to work building their applications.
To see the current code and implementation work, check the
[Dash Platform repository](https://github.com/dashpay/platform).

:::

Expand All @@ -45,13 +46,8 @@ Dash Platform Name Service (DPNS).

:::{dropdown} How can I register a name?

Currently, names can be registered using several technical tools; however, the upcoming [DashPay
Android](https://play.google.com/store/apps/details?id=hashengineering.darkcoin.wallet) update will
provide a much easier way to do this.

Developers and other technical users may want to experiment with registering names using the [JS
SDK](https://docs.dash.org/projects/platform/en/stable/docs/tutorials/identities-and-names/register-a-name-for-an-identity.html)
or [Platform TUI](https://github.com/dashpay/platform-tui/).
Currently, names can be registered using the [DashPay Android wallet](https://play.google.com/store/apps/details?id=hashengineering.darkcoin.wallet).
Developers and other technical users may want to experiment with registering names using the [Dash Evo Tool](https://github.com/dashpay/dash-evo-tool) or the [JavaScript SDK](https://docs.dash.org/projects/platform/en/stable/docs/tutorials/identities-and-names/register-a-name-for-an-identity.html).
:::

::::{dropdown} Can I register multiple names?
Expand Down
18 changes: 11 additions & 7 deletions docs/resources/repository-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,23 @@
# Repository Overview

Dash Platform uses a [monorepo](https://en.wikipedia.org/wiki/Monorepo) structure containing most
packages that comprise Dash Platform. Packages are located in the
[packages](https://github.com/dashpay/platform/tree/master/packages) directory.
of the source code that powers the network, SDKs, and development tooling. The public source tree
is available in the [dashpay/platform](https://github.com/dashpay/platform) repository.

If you want a higher-level architectural walkthrough of the current Rust codebase, see the
[Dash Platform Book](https://dashpay.github.io/platform/).

## SDKs

These are the primary tools for developers building on Dash Platform.
These are the primary tools for developers building on Dash Platform. Package names and exact module
layout can change over time, so treat the monorepo as the source of truth.

| Component | Description |
| - | - |
| [js-evo-sdk](https://github.com/dashpay/platform/tree/master/packages/js-evo-sdk) | JavaScript SDK (`npm install @dashevo/evo-sdk`) |
| [rs-sdk](https://github.com/dashpay/platform/tree/master/packages/rs-sdk) | Rust SDK for building applications on Dash Platform |
| [rs-sdk-ffi](https://github.com/dashpay/platform/tree/master/packages/rs-sdk-ffi) / [swift-sdk](https://github.com/dashpay/platform/tree/master/packages/swift-sdk) | FFI layer and iOS/Swift SDK |
| [wasm-sdk](https://github.com/dashpay/platform/tree/master/packages/wasm-sdk) | WebAssembly bindings for browser-based applications |
| [js-evo-sdk](https://github.com/dashpay/platform/tree/master/packages/js-evo-sdk) | JavaScript tooling for connecting to Platform, creating identities, and submitting state transitions |
| [rs-sdk](https://github.com/dashpay/platform/tree/master/packages/rs-sdk) | Rust-first SDK for building applications and verifying Platform data |
| [rs-sdk-ffi](https://github.com/dashpay/platform/tree/master/packages/rs-sdk-ffi) / [swift-sdk](https://github.com/dashpay/platform/tree/master/packages/swift-sdk) | Shared components used for Swift and other native integrations |
| [wasm-sdk](https://github.com/dashpay/platform/tree/master/packages/wasm-sdk) | WebAssembly-oriented bindings for browser and hybrid environments |
Comment thread
thephez marked this conversation as resolved.

## Platform and Supporting Repositories

Expand Down
18 changes: 12 additions & 6 deletions docs/sdk-rs/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ based on the Dash Platform Protocol (DPP).

See the [Quick Start page](quick-start.md) for example setup and use of the SDK.

:::{note}
For the current monorepo layout and lower-level implementation details, see the
[Dash Platform repository](https://github.com/dashpay/platform) and the
[Dash Platform Book](https://dashpay.github.io/platform/).
:::

## Usage

### Cargo.toml
Expand All @@ -21,16 +27,16 @@ dash-sdk = { git="https://github.com/dashpay/platform" }
### Examples

You can inspect tests in the
[`tests/`](https://github.com/dashpay/platform/tree/v1.0-dev/packages/rs-sdk/tests/) folder for
[`tests/`](https://github.com/dashpay/platform/tree/master/packages/rs-sdk/tests/) folder for
detailed examples or see a simple example in the
[`examples/`](https://github.com/dashpay/platform/tree/v1.0-dev/packages/rs-sdk/examples) folder.
[`examples/`](https://github.com/dashpay/platform/tree/master/packages/rs-sdk/examples) folder.
See the [Platform Terminal User Interface (TUI)](https://github.com/dashpay/platform-tui/) for an
application that uses the SDK to execute various state transitions.

:::{attention}
SDK documentation will be available on docs.rs once the Dash SDK crate is published. Meanwhile,
the [pre-release documentation](https://dashpay.github.io/docs-platform/dash_sdk/) is available
for reference. Please keep in mind that it is incomplete and may be outdated.
:::{note}
If you need the latest usage details, examples, or implementation references, prefer the
[Dash Platform monorepo](https://github.com/dashpay/platform) and the
[Dash Platform Book](https://dashpay.github.io/platform/) over older hosted snapshots.
:::

### Mocking
Expand Down
Loading