diff --git a/conf.py b/conf.py index ed1695462..3470600e9 100644 --- a/conf.py +++ b/conf.py @@ -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', diff --git a/docs/explanations/dpns.md b/docs/explanations/dpns.md index 20cb6d867..0e19f74e2 100644 --- a/docs/explanations/dpns.md +++ b/docs/explanations/dpns.md @@ -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 diff --git a/docs/explanations/fees.md b/docs/explanations/fees.md index e120ccd72..1c351c365 100644 --- a/docs/explanations/fees.md +++ b/docs/explanations/fees.md @@ -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 @@ -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. \ No newline at end of file +--> diff --git a/docs/explanations/platform-protocol.md b/docs/explanations/platform-protocol.md index d02446bb0..408320f19 100644 --- a/docs/explanations/platform-protocol.md +++ b/docs/explanations/platform-protocol.md @@ -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 diff --git a/docs/index.md b/docs/index.md index 97708f394..07ea44988 100644 --- a/docs/index.md +++ b/docs/index.md @@ -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 @@ -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 ` @@ -157,6 +164,8 @@ protocol-ref/errors resources/faq resources/repository-overview +Dash Platform Monorepo +Dash Platform Book Platform Bridge Platform Explorer Testnet Block Explorer diff --git a/docs/intro/what-is-dash-platform.md b/docs/intro/what-is-dash-platform.md index e971de497..cfa9952cf 100644 --- a/docs/intro/what-is-dash-platform.md +++ b/docs/intro/what-is-dash-platform.md @@ -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 @@ -18,11 +32,13 @@ 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 @@ -30,7 +46,8 @@ Write code and integrate with Dash Platform using the languages that matter to y ### 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 @@ -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: -- DAPI-Client: +- Platform monorepo: ### Drive - Decentralized Storage diff --git a/docs/reference/platform-proofs.md b/docs/reference/platform-proofs.md index 083fb625c..9bb23259c 100644 --- a/docs/reference/platform-proofs.md +++ b/docs/reference/platform-proofs.md @@ -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. @@ -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 diff --git a/docs/resources/faq.md b/docs/resources/faq.md index 998b86a93..88d907f11 100644 --- a/docs/resources/faq.md +++ b/docs/resources/faq.md @@ -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. ::: @@ -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). ::: @@ -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? diff --git a/docs/resources/repository-overview.md b/docs/resources/repository-overview.md index 6d1d7e0d2..f0f16279e 100644 --- a/docs/resources/repository-overview.md +++ b/docs/resources/repository-overview.md @@ -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 | ## Platform and Supporting Repositories diff --git a/docs/sdk-rs/overview.md b/docs/sdk-rs/overview.md index 8307a6618..67e751758 100644 --- a/docs/sdk-rs/overview.md +++ b/docs/sdk-rs/overview.md @@ -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 @@ -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 diff --git a/docs/sdk-rs/quick-start.md b/docs/sdk-rs/quick-start.md index e9bf3dbec..fa11aca1a 100644 --- a/docs/sdk-rs/quick-start.md +++ b/docs/sdk-rs/quick-start.md @@ -10,7 +10,7 @@ Several packages are required to use the Dash SDK. Install them by running: # Install required packages sudo apt-get install clang cmake gcc unzip # Install recent protobuf version -wget https://github.com/protocolbuffers/protobuf/releases/download/v26.1/protoc-26.1-linux-x86_64.zip +wget https://github.com/protocolbuffers/protobuf/releases/download/v34.1/protoc-34.1-linux-x86_64.zip sudo unzip protoc-*-linux-x86_64.zip -d /usr/local ``` @@ -41,9 +41,11 @@ You should see the installed version of Rust. ### Install Dash Core -Currently, the SDK is dependent on a Dash Core full node to support proof verification and provide -wallet access. Follow the instructions below to install Dash Core and run it on Testnet. **Note:** -it is possible, although not recommended, to retrieve data from Dash Platform without proof +The Rust SDK is the best fit when you want proof-aware Platform access and tighter integration with +the current Rust codebase. Many workflows still assume access to a Dash Core full node for proof +verification and wallet-related operations. Follow the instructions below to install Dash Core and +run it on testnet. **Note:** it is possible, although not recommended, to retrieve data from Dash +Platform without proof verification. - [Dash Core installation instructions](inv:user:std#dashcore-installation) - [Running Dash Core on Testnet](inv:user:std#dashcore-testnet) @@ -170,10 +172,11 @@ Identity balance: 932523994 ## SDK documentation -:::{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} +For the current code, examples, and package layout, refer to the +[Dash Platform monorepo](https://github.com/dashpay/platform) and the +[Dash Platform Book](https://dashpay.github.io/platform/). Hosted API docs may lag behind the +latest source changes. ::: ## DAPI client example diff --git a/docs/tutorials/building-platform.md b/docs/tutorials/building-platform.md index 0c25ef1c2..d01215c4b 100644 --- a/docs/tutorials/building-platform.md +++ b/docs/tutorials/building-platform.md @@ -84,6 +84,7 @@ docker --version docker compose version protoc --version rustc --version +wasm-bindgen --version ``` ## Configure firewall