From 9f22958a825b7a05c630998454189cc62bbe9906 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 30 Oct 2017 15:06:11 -0400 Subject: [PATCH] Guide - add PrivateSend info --- _includes/devdoc/guide_p2p_network.md | 30 ++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/guide_p2p_network.md b/_includes/devdoc/guide_p2p_network.md index bd5a5138..5d037eda 100644 --- a/_includes/devdoc/guide_p2p_network.md +++ b/_includes/devdoc/guide_p2p_network.md @@ -15,7 +15,7 @@ The Bitcoin network protocol allows full nodes transaction exchange. Full nodes download and verify every block and transaction prior to relaying them to other nodes. Archival nodes are full nodes which store the entire blockchain and can serve historical blocks to other nodes. -Pruned nodes are full nodes which do not store the entire blockchain. Many SPV +Pruned nodes are full nodes which do not store the entire blockchain. Many SPV clients also use the Bitcoin network protocol to connect to full nodes. Consensus rules do not cover networking, so Bitcoin programs may use @@ -589,6 +589,34 @@ Earlier versions of Bitcoin Core allowed developers and trusted community member {% endautocrossref %} +### PrivateSend + +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +Dash Core's PrivateSend feature provides a way to improve privacy by performing +coin-mixing without relinquishing custodial access. For additional details, +reference this [Official Documentation PrivateSend page](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/1146924/PrivateSend). + +*PrivateSend Data Flow* + +| **PrivateSend Clients** | **Direction** | **Masternode** | **Description** | +| `dsa` message | → | | Clients asks to join mixing pool (or have MN start a new one) +| | ← | `dssu` message | Masternode provides a mixing pool status update (Typical - State: `POOL_STATE_QUEUE`, Message: `MSG_NOERR`) +| | ← | `dsq` message | Masternode notifies clients when it is ready to mix +| `dsi` message | → | | Clients each provide a list of their inputs (unsigned) to be mixed, collateral, and a list of outputs where mixed funds should be sent +| | ← | `dssu` message | Masternode provides a mixing pool status update (typical - State: `POOL_STATE_ACCEPTING_ENTRIES`, Message: `MSG_ENTRIES_ADDED`) +| | ← | `dsf` message | Masternode sends the final transaction containing all clients inputs (unsiged) and all client outputs to each client for verification +| | ← | `dssu` message | Masternode provides a mixing pool status update (Typical - State: `POOL_STATE_SIGNING`, Message: `MSG_NOERR`) +| `dss` message | → | | After verifying the final transaction, clients each sign their own inputs and send them back +| | ← | `dsc` message | Masternode verifies the signed inputs, creates a `dstx` message to broadcast the transaction, and notifies clients that the mixing transaction is complete (Typical - Message: `MSG_SUCCESS`) +| | ← | `inv` message | Masternode broadcasts a `dstx` inventory message +| `getdata` message (dstx) | → | | (Optional) + +{% endautocrossref %} + + ### Masternode Payment {% include helpers/subhead-links.md %}