From 4f177fb8461b3dff62f7270edbd13cae34ab3a55 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 12 Feb 2018 14:35:31 -0500 Subject: [PATCH 01/38] content - Masternode count RPC update - RPC result / output examples and summary table - Closes #22 --- .../devdoc/dash-core/rpcs/rpcs/masternode.md | 73 +++++++++++++++++-- _includes/layout/base/rpc-table.html | 2 +- 2 files changed, 68 insertions(+), 7 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md index 4c380e0b..071813bf 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md @@ -30,7 +30,7 @@ The `masternode count` RPC prints the number of all known masternode - n: "Mode" t: "string (hex)" p: "Optional
(exactly 1)" - d: "Which masternodes to count:
`ps` - PrivateSend capable,
`enabled` - Enabled,
`all` - All,
`qualify` - Eligible for payment" + d: "Which masternodes to count:
`total` - Pre-0.12.3 default result,
`ps` - PrivateSend capable,
`enabled` - Enabled,
`all` - All,
`qualify` - Eligible for payment" {% enditemplate %} @@ -38,13 +38,33 @@ The `masternode count` RPC prints the number of all known masternode {% itemplate ntpd1 %} - n: "`result`" - t: "string (hex)" + t: "object" p: "Required
(exactly 1)" - d: "Transaction ID for the collateral transaction" + d: "Masternode count by mode" + +- n: "→
`total`" + t: "int" + p: "Required
(exactly 1)" + d: "Count of all masternodes" + +- n: "→
`ps_compatible`" + t: "int" + p: "Required
(exactly 1)" + d: "Count of PrivateSend compatible masternodes" + +- n: "→
`enabled`" + t: "int" + p: "Required
(exactly 1)" + d: "Count of enabled masternodes" + +- n: "→
`qualify`" + t: "int" + p: "Required
(exactly 1)" + d: "Count of masternodes qualified to receive payment" {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* {% highlight bash %} dash-cli -testnet masternode count @@ -52,10 +72,28 @@ dash-cli -testnet masternode count Result: {% highlight bash %} -120 +{ + "total": 142, + "ps_compatible": 13, + "enabled": 13, + "qualify": 6 +} {% endhighlight %} -Get summarized count of all masternodes + +**Get summarized count of all masternodes** + +*Result---summary of known masternodes* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string" + p: "Required
(exactly 1)" + d: "Summary of masternodes in each state" + +{% enditemplate %} + +*Example from Dash Core 0.12.3* {% highlight bash %} dash-cli -testnet masternode count all @@ -66,6 +104,29 @@ Result: Total: 129 (PS Compatible: 97 / Enabled: 97 / Qualify: 90) {% endhighlight %} +**Get total count of all masternodes (default output of `masternode count` pre-0.12.3)** + +*Result---number of known masternodes in mode* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "int" + p: "Required
(exactly 1)" + d: "Number of masternodes" + +{% enditemplate %} + +*Example from Dash Core 0.12.3* + +{% highlight bash %} +dash-cli -testnet masternode count total +{% endhighlight %} + +Result: +{% highlight bash %} +142 +{% endhighlight %} + {% endautocrossref %} ###### Masternode Current diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index c6b0b24a..7e9802f7 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -251,7 +251,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash Masternode Y - + Updated in 0.12.3 Dash From ebb6ce29fa10c1cce104821fb07b949afd57904d Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 12 Feb 2018 12:30:24 -0500 Subject: [PATCH 02/38] content - Spork 13 removal updates - RPC output examples / summary table - Spork list - Closes #19 --- _includes/devdoc/dash-core/rpcs/rpcs/spork.md | 6 ++---- _includes/devdoc/ref_p2p_networking.md | 6 ++++-- _includes/layout/base/rpc-table.html | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/spork.md b/_includes/devdoc/dash-core/rpcs/rpcs/spork.md index 2ac92546..0d1e059b 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/spork.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/spork.md @@ -44,7 +44,7 @@ To display the status of sporks, use the `show` or `active` syntax. {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* {% highlight bash %} dash-cli -testnet spork show @@ -60,7 +60,6 @@ Result: "SPORK_9_SUPERBLOCKS_ENABLED": 0, "SPORK_10_MASTERNODE_PAY_UPDATED_NODES": 0, "SPORK_12_RECONSIDER_BLOCKS": 0, - "SPORK_13_OLD_SUPERBLOCK_FLAG": 4070908800, "SPORK_14_REQUIRE_SENTINEL_FLAG": 0 } {% endhighlight %} @@ -82,7 +81,7 @@ Result: {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* {% highlight bash %} dash-cli -testnet spork active @@ -98,7 +97,6 @@ Result: "SPORK_9_SUPERBLOCKS_ENABLED": true, "SPORK_10_MASTERNODE_PAY_UPDATED_NODES": true, "SPORK_12_RECONSIDER_BLOCKS": true, - "SPORK_13_OLD_SUPERBLOCK_FLAG": false, "SPORK_14_REQUIRE_SENTINEL_FLAG": true } {% endhighlight %} diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 76ac0ed5..5fd4001a 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1310,7 +1310,7 @@ signature before accepting the spork message as valid. | 8 | nTimeSigned | int64_t | Required | Time the spork value was signed | 66 | vchSig | char[] | Required | Length (1 byte) + Signature (65 bytes) -Defined Sporks (per [`src/spork.h`][spork.h]) +Sporks (per [`src/spork.h`][spork.h]) | Spork ID | Number | Name | Description | | ---------- | ---------- | ----------- | ----------- | @@ -1321,8 +1321,10 @@ Defined Sporks (per [`src/spork.h`][spork.h]) | 10008 | 9 | `SUPERBLOCKS_ENABLED` | Superblocks are enabled (10% of the block reward allocated to fund the dash treasury for funding approved proposals) | 10009 | 10 | `MASTERNODE_PAY_UPDATED_NODES` | Only current protocol version masternode's will be paid (not older nodes) | 10011 | 12 | `RECONSIDER_BLOCKS` | Forces reindex of a specified number of blocks to recover from unintentional network forks -| 10012 | 13 | `OLD_SUPERBLOCK_FLAG` | Deprecated. No network function since block 614820 | 10013 | 14 | `REQUIRE_SENTINEL_FLAG` | Only masternode's running sentinel will be paid +| | | | +| | | **Removed Sporks** | +| _10012_ | _13_ | _`OLD_SUPERBLOCK_FLAG`_ | _Removed in Dash Core 0.12.3. No network function since block 614820_ To verify `vchSig`, compare the hard-coded spork public key (`strSporkPubKey` from [`src/chainparams.cpp`][spork pubkey]) with the public key recovered from diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 7e9802f7..c1490f6c 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -287,7 +287,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash Spork Y - + Updated in 0.12.3 Dash From 7a1a6f07ca001ada6fa15d02b8501ee9b69b5a30 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 13 Feb 2018 09:53:04 -0500 Subject: [PATCH 03/38] content - Update DNS seed description - Closes #20 --- _includes/devdoc/guide_p2p_network.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/_includes/devdoc/guide_p2p_network.md b/_includes/devdoc/guide_p2p_network.md index 67db64f3..7ef46a5d 100644 --- a/_includes/devdoc/guide_p2p_network.md +++ b/_includes/devdoc/guide_p2p_network.md @@ -104,11 +104,13 @@ and a function to use them, but I don't see that function being used in any of the examples/wallet templates (but I'm not Java fluent, so maybe PEBKAC). -@harding --> -Dash Core also include a hardcoded list of IP -addresses and port numbers to several dozen nodes which were active -around the time that particular version of the software was first -released. Dash Core will start attempting to connect to these nodes -if none of the DNS seed servers have responded to a query within 60 +Dash Core also includes a hardcoded list of IP addresses and port numbers to +several dozen nodes which were active around the time that particular +version of the software was first released. Starting with Dash Core 0.12.3, +masternodes are used for the seed list since they must remain online to receive +their portion of the block reward (good availability) and must be compliant with +consensus rules (reliable). Dash Core will start attempting to connect to these +nodes if none of the DNS seed servers have responded to a query within 60 seconds, providing an automatic fallback option. As a manual fallback option, Dash Core also provides several From 45f02f5908bbd868fe565c19fe6beb7d9d5b851c Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 15 Feb 2018 12:15:54 -0500 Subject: [PATCH 04/38] [Content] Switch MN ID from CTxIn to COutPoint in P2P messages (#33) * content - Switch MN ID from CTxIn to COutPoint in P2P messages - mnb, mnp, mnw, dstx, dsq, govobj, govobjvote, mnv, and dseg message details /hexdump updated * content - Update mnb to use outPoint - Closes #32 --- _includes/devdoc/ref_p2p_networking.md | 120 ++++++------------------- 1 file changed, 26 insertions(+), 94 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 5fd4001a..bb6d260e 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1882,7 +1882,7 @@ message. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | | 4 | nDenom | int | Required | Denomination allowed in this mixing session -| 41+ | vin | txIn | Required | Unspent output from masternode which is hosting this session +| 36 | masternodeOutPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is hosting this session | 8 | nTime | int64_t | Required | Time this `dsq` message was created | 1 | fReady | bool | Required | Indicates if the mixing pool is ready to be executed | 66* | vchSig | char[] | Required | Signature of this message by masternode verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes)) @@ -2089,7 +2089,7 @@ fees (to provide security in mixing). | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | | # | tx | `tx` message | Required | The transaction -| 41 | vin | txIn | Required | Masternode unspent output +| 36 | masternodeOutPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is signing the message | 66 | vchSig | char[] | Required | Signature of this message by masternode verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes)) | 8 | sigTime | int64_t | Require | Time this message was signed @@ -2146,11 +2146,6 @@ Masternode Unspent Output | 387d522def2abfb9bdd15be899f074f3 | 49b414cef078ec642e1d14b42996b9fc ......... Outpoint TXID | 00000000 ................................. Outpoint index number: 0 -| -| 00 ....................................... Bytes in sig. script: 0 -| .......................................... Secp256k1 signature (None) -| -| ffffffff ................................. Sequence number: UINT32_MAX 1b6fb8f90f0df6e502bc10aab9604e49 2d14214e05331c9761c834d55c7536e3 @@ -2194,7 +2189,7 @@ request if they are not fully synced. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 41 | vin | txIn | Required | Request options:
`All Entries` - empty txIn
`Single Entry` - Masternode's unspent output which is holding 1000 DASH +| 36 | masternodeOutPoint | TxOut | Required | Request options:
`All Entries` - empty txIn
`Single Entry` - Masternode's unspent output which is holding 1000 DASH {% highlight text %} @@ -2210,11 +2205,6 @@ Masternode Unspent Output | 00000000000000000000000000000000 | 00000000000000000000000000000000 ......... Outpoint TXID | ffffffff ................................. Outpoint index number: 0 -| -| 00 ....................................... Bytes in sig. script: 0 -| .......................................... Secp256k1 signature: None -| -| ffffffff ................................. Sequence number: UINT32_MAX {% endhighlight %} The following annotated hexdump shows a `dseg` message requesting a specific @@ -2225,11 +2215,6 @@ Masternode Unspent Output | 7fe33a2901aa654598ae0af572d4fbec | ee97af2d0276f189d177dee5848ef3da ......... Outpoint TXID | 00000000 ................................. Outpoint index number: 0 -| -| 00 ....................................... Bytes in sig. script: 0 -| .......................................... Secp256k1 signature: None -| -| ffffffff ................................. Sequence number: UINT32_MAX {% endhighlight %} {% endautocrossref %} @@ -2245,7 +2230,7 @@ entry and how to validate messages from it. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 41 | vin | txIn | Required | The unspent output which is holding 1000 DASH +| 36 | outPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is signing the message | # | addr | CService | Required | IPv4 address of the masternode | 33-65 | pubKeyCollateralAddress | CPubKey | Required | CPubKey of the main 1000 DASH unspent output. Length determined by if it is a compressed public key or not. | 33-65 | pubKeyMasternode | CPubKey | Required | CPubKey of the secondary signing key (For all messaging other than the announce message). Length determined by if it is a compressed public key or not. @@ -2264,11 +2249,6 @@ Masternode Unspent Output | 3fbc7d4a8f68ba6ecb02a8db34d1f5b6 | 2dc105f0b5c3505243435cf815d02394 ......... Outpoint TXID | 01000000 ................................. Outpoint index number: 1 -| -| 00 ....................................... Bytes in sig. script: 0 -| .......................................... Secp256k1 signature: None -| -| ffffffff ................................. Sequence number: UINT32_MAX Masternode Address | 00000000000000000000ffffc0000233 ......... IP Address: ::ffff:192.0.2.51 @@ -2304,11 +2284,6 @@ Masternode Ping Message | | 3fbc7d4a8f68ba6ecb02a8db34d1f5b6 | | 2dc105f0b5c3505243435cf815d02394 ........ Outpoint TXID | | 01000000 ................................ Outpoint index number: 1 -| | -| | 00 ...................................... Bytes in sig. script: 0 -| | ......................................... Secp256k1 signature: None -| | -| | ffffffff ................................ Sequence number: UINT32_MAX | | 94fc0fad18b166c2fedf1a5dc0511372 | 26c353d57e086737ff05000000000000 ......... Chaintip block hash @@ -2364,7 +2339,7 @@ uses a minimum masternode ping time of 10 minutes. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 41 | vin | txIn | Required | The unspent output of the masternode (holding 1000 DASH) which is signing the message +| 36 | masternodeOutPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is signing the message | 32 | blockHash | uint256 | Required | Block hash from 12 blocks ago (current chaintip minus 12). This offset allows nodes to be slightly out of sync. | 8 | sigTime | int64_t | Required | Time which the signature was created | 66* | vchSig | char[] | Required | Signature of this message by masternode - verifiable via pubKeyMasternode (66 bytes in most cases. Length (1 byte) + Signature (65 bytes)) @@ -2377,11 +2352,6 @@ Masternode Unspent Output | 0bfa3616099771bb5f36181ff4060a9b | 9afe7b3e47d7f4327800f0f8ce586c6e ......... Outpoint TXID | 01000000 ................................. Outpoint index number: 1 -| -| 00 ....................................... Bytes in sig. script: 0 -| .......................................... Secp256k1 signature: None -| -| ffffffff ................................. Sequence number: UINT32_MAX a26a68ebb733192c1c40f9b42f872ac0 e23d4c360e20d5ab6608000000000000 ........... Chaintip block hash @@ -2410,8 +2380,8 @@ masternode 1 being validated as of the provided block height. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 41 | vin1 | txIn | Required | The unspent output which is holding 1000 DASH for masternode 1 -| 41 | vin2 | txIn | Required | The unspent output which is holding 1000 DASH for masternode 2 +| 36 | masternodeOutPoint1 | TxOut | Required | The unspent output which is holding 1000 DASH for masternode 1 +| 36 | masternodeOutPoint2 | TxOut | Required | The unspent output which is holding 1000 DASH for masternode 2 | # | addr | CService | Required | IPv4 address and port of masternode 1 | 4 | nonce | int | Required | Random nonce | 4 | nBlockHeight | int | Required | Block height @@ -2428,9 +2398,9 @@ in the table below. | | **Verification request** | | | **`mnv` message with no signatures** | | 1 | `mnv` message | → | | Contains `addr`, `nonce`, and `nBlockHeight`.
Sent by _SendVerifyRequest()_. | 2 | | ← | `mnv` message | Add `vchSig1` (signature of the IP address + nonce + hash of the requested block).
Sent by _SendVerifyReply()_. -| 3 | `mnv` message | → | | Verify `vchSig1`

Add `vin1`, `vin2`, and `vchSig2` (signature of the IP address + nonce + hash of the requested block + `vin1` prevout + `vin2` prevout) and relay message to peers if valid.
Sent by _ProcessVerifyReply()_. +| 3 | `mnv` message | → | | Verify `vchSig1`

Add `masternodeOutPoint1`, `masternodeOutPoint2`, and `vchSig2` (signature of the IP address + nonce + hash of the requested block + `masternodeOutPoint1` + `masternodeOutPoint2`) and relay message to peers if valid.
Sent by _ProcessVerifyReply()_. -Nodes receiving a relayed `mnv` message (one in which `vin1`, `vin2`, `vchSig1` +Nodes receiving a relayed `mnv` message (one in which `masternodeOutPoint1`, `masternodeOutPoint2`, `vchSig1` and `vchSig2` are already present) use it to update the PoSe ban score. If the ban score reaches `MASTERNODE_POSE_BAN_MAX_SCORE` (5), the masternode will be considered malicious and banned. If the received message is valid, nodes @@ -2456,21 +2426,11 @@ Masternode 1 Unspent Output (empty) | 00000000000000000000000000000000 | 00000000000000000000000000000000 ......... Outpoint TXID | ffffffff ................................. Outpoint index number: 0 -| -| 00 ....................................... Bytes in sig. script: 0 -| .......................................... Secp256k1 signature: None -| -| ffffffff ................................. Sequence number: UINT32_MAX Masternode 2 Unspent Output (empty) | 00000000000000000000000000000000 | 00000000000000000000000000000000 ......... Outpoint TXID | ffffffff ................................. Outpoint index number: 0 -| -| 00 ....................................... Bytes in sig. script: 0 -| .......................................... Secp256k1 signature: None -| -| ffffffff ................................. Sequence number: UINT32_MAX 00000000000000000000ffff2d20ed4c ........... IP Address: ::ffff:45.32.237.76 4e1f ....................................... Port: 19999 @@ -2496,21 +2456,11 @@ Masternode 1 Unspent Output (empty) | 00000000000000000000000000000000 | 00000000000000000000000000000000 ......... Outpoint TXID | ffffffff ................................. Outpoint index number: 0 -| -| 00 ....................................... Bytes in sig. script: 0 -| .......................................... Secp256k1 signature: None -| -| ffffffff ................................. Sequence number: UINT32_MAX Masternode 2 Unspent Output (empty) | 00000000000000000000000000000000 | 00000000000000000000000000000000 ......... Outpoint TXID | ffffffff ................................. Outpoint index number: 0 -| -| 00 ....................................... Bytes in sig. script: 0 -| .......................................... Secp256k1 signature: None -| -| ffffffff ................................. Sequence number: UINT32_MAX 00000000000000000000ffff2d20ed4c ........... IP Address: ::ffff:45.32.237.76 4e1f ....................................... Port: 19999 @@ -2542,7 +2492,7 @@ selected masternodes will issue the masternode payment vote message. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 41 | vin | txIn | Required | The unspent output which is holding 1000 DASH +| 36 | masternodeOutPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is signing the message | 4 | nBlockHeight | int | Required | The blockheight which the payee should be paid | ? | payeeAddress | CScript | Required | The address receiving payment | 66* | vchSig | char[] | Required | Signature of the masternode which is signing the message (66 bytes in most cases. Length (1 byte) + Signature (65 bytes)) @@ -2555,11 +2505,6 @@ Masternode Unspent Output | 0c1b5c5846792b25b05eeea9586d8c34 | ecb996c566bedb4ecf6a68fe8ffa9582 ......... Outpoint TXID | 00000000 ................................. Outpoint index number: 0 -| -| 00 ....................................... Bytes in sig. script: 0 -| .......................................... Secp256k1 signature: None -| -| ffffffff ................................. Sequence number: UINT32_MAX fb4f0a00 ................................... Block pay height: 675835 @@ -2669,7 +2614,7 @@ contract, or setting. Masternodes ignore this request if they are not fully sync | 32 | nCollateralHash | uint256 | Required* | Hash of the collateral fee transaction for proposals.

Set to all zeros for Triggers/Watchdogs. | 0-16384 | strData | string | Required | Data field - can be used for anything (leading varint indicates size of data) | 4 | nObjectType | int | Required | Type of governance object:
• `0` - Unknown
• `1` - Proposal
• `2` - Trigger
• `3` - Watchdog -| 41 | vinMasternode | CTxIn | Required* | Unspent output for the masternode which is signing this object.

Set to all zeros for proposals since they can be created by non-masternodes. +| 36 | masternodeOutPoint | TxOut | Required* | The unspent output of the masternode (holding 1000 DASH) which is signing this object.

Set to all zeros for proposals since they can be created by non-masternodes. | 66* | vchSig | char[] | Required* | Signature of the masternode (Length (1 byte) + Signature (65 bytes))

Not required for proposals - they will have a length of 0x00 and no Signature. Governance Object Types (defined by src/governance-object.h) @@ -2682,9 +2627,8 @@ Governance Object Types (defined by src/governance-object.h) | 3 | `GOVERNANCE_OBJECT_WATCHDOG` | Masternode generated. Two hour expiration time.

DEPRECATED since 12.2. The following annotated hexdump shows a `govobj` message for a Proposal object. -Notice the presence of a non-zero collateral hash, a vinMasternode that is an -empty CTxIn (hash of all zeros, index/sequence of 0xffffffff, no Signature), -and no vchSig. +Notice the presence of a non-zero collateral hash, a masternodeOutPoint that is an +empty TxOut (hash of all zeros), and no vchSig. (The message header has been omitted.) {% highlight text %} @@ -2701,14 +2645,10 @@ Data 01000000 ............................. Object Type: GOVERNANCE_OBJECT_PROPOSAL (1) -Transaction input -| Previous Output -| | 00000000000000000000000000000000 -| | 00000000000000000000000000000000 ... Outpoint TXID -| | ffffffff ........................... Outpoint index number: 0 -| 00 ................................... Script length: 0 -| ...................................... Signature: None -| ffffffff ............................. Sequence +Masternode Unspent Output +| 00000000000000000000000000000000 +| 00000000000000000000000000000000 ... Outpoint TXID +| ffffffff ........................... Outpoint index number: 0 00 ................................... Signature length: 0 @@ -2733,14 +2673,10 @@ Data 02000000 ............................. Object Type: GOVERNANCE_OBJECT_TRIGGER (2) -Transaction input -| Previous Output -| | ffefbe4959085907bcd2ba29e357a441 -| | fa7b6e26e25896d8127332bba2419e97 ... Outpoint TXID -| | 00000000 ........................... Outpoint index number: 0 -| 00 ................................... Script length: 0 -| ...................................... Signature: None -| ffffffff ............................. Sequence +Masternode Unspent Output +| ffefbe4959085907bcd2ba29e357a441 +| fa7b6e26e25896d8127332bba2419e97 ... Outpoint TXID +| 00000000 ........................... Outpoint index number: 0 41 ................................... Signature length: 65 @@ -2784,7 +2720,7 @@ the node being banned. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 41+ | vinMasternode | CTxIn | Required | Unspent output for the masternode which is voting +| 36 | masternodeOutPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is voting | 32 | nParentHash | uint256 | Required | Object (`govobj`) being voted on (proposal, contract, setting or final budget) | 4 | nVoteOutcome | int | Required | None (0), Yes (1), No (2), Abstain (3) | 4 | nVoteSignal | int | Required | None (0), Funding (1), Valid (2), Delete (3), Endorsed (4) @@ -2804,14 +2740,10 @@ The following annotated hexdump shows a `govobjvote` message. (The message header has been omitted.) {% highlight text %} -Transaction input -| Previous Output -| | 57566a0ef85e6cac3415ced67b0b07e1 -| | 781bafb853650d7c9d56d8bc132cc3b4 ... Outpoint TXID -| | 00000000 ........................... Outpoint index number: 0 -| 00 ................................... Script length: 0 -| ...................................... Signature: None -| ffffffff ............................. Sequence +Masternode Unspent Output +| 57566a0ef85e6cac3415ced67b0b07e1 +| 781bafb853650d7c9d56d8bc132cc3b4 ... Outpoint TXID +| 00000000 ........................... Outpoint index number: 0 ad9579d5c181eee904156df1c88b050f b8b4d39e5fda71f015996dbf14a51bff...... Parent Hash (0 = root) From 0b5b55e66599910d33fa18a3959a6bed9585c101 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 15 Feb 2018 15:09:11 -0500 Subject: [PATCH 05/38] content - Update GObject Getvotes with shortened outpoint output - Update example and Vote Info field - Ref #24 --- _includes/devdoc/dash-core/rpcs/rpcs/gobject.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md index 01617726..2861443f 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md @@ -717,7 +717,7 @@ The `gobject getvotes` RPC gets all votes for a governance object hash (includin - n: "→
Vote Info" t: "string" p: "Required
(1 or more)" - d: "Key: vote-hash

Value: vinMasternode, time, outcome, and signal of the vote" + d: "Key: vote-hash

Value: Masternode's unspent outpoint, time, outcome, and signal of the vote" {% enditemplate %} @@ -731,13 +731,13 @@ dash-cli -testnet gobject getvotes 78941af577f639ac94440e4855a1ed8f\ Result (truncated): {% highlight json %} { - "174aaba65982d25a23f437e2a66ec3836146ba7b7ce5b3fe2d5476907f7079d9": "CTxIn(COutPoint(2eab488e3a7b030303de0d18e357ce17a9fc6b8876705d61076bbe923b2e5fc8, 1), scriptSig=):1509354047:YES:DELETE", - "216cbc42addec1a6b83e1f2b0b3779594bd879f5671dd76a9826cc690c68286d": "CTxIn(COutPoint(b0320c1eff10ccb5e26086017a09e77dacb30fdcafccb3d98db3e5b610b9f1bd, 1), scriptSig=):1509117256:YES:DELETE", - "aa4dc9d3b9e74e8c1ffc725b737d07f8a32e43c64907e4bea19e64a86135f08a": "CTxIn(COutPoint(af9f5646ace92f76b3a01b0abe08716a0a7ded64074c2d2e712c93174b9013d1, 1), scriptSig=):1508866932:YES:FUNDING", - "73dd135ea7bece0f2047de75d8ca04f2985daebed9568d28ee58a60a12a2a082": "CTxIn(COutPoint(8e3fee7f668fed7019588be616225c6c4762ee632470878b2dc8eae3f0b3f67d, 1), scriptSig=):1508866932:YES:FUNDING", - "d13b9c5c28bbc8684a7291961a1023abbbe65b534804d0629fb44166cc1a6148": "CTxIn(COutPoint(08b2dbffd61d927bc12c20f6853513f41fbf7737446632b13c7ca0df8c6da282, 1), scriptSig=):1508866932:YES:FUNDING", - "8a4283d457d8635b43c6fa6cbf865813a80d965c777e8ba07364eb6468200ae1": "CTxIn(COutPoint(76c40abd280441b75577e99e9e4f253f9281a7deb4feebff83860f9cede7a09b, 1), scriptSig=):1508866932:YES:FUNDING", - "313e19607813cb0db3b3fb477982b4d3418f13f8511295419df8fe1f7ff6668f": "CTxIn(COutPoint(0fd502f28b9a9a256d9ba29a047c375fe2823b6e76e4853af16e079a709ab72a, 1), scriptSig=):1508866932:YES:FUNDING" + "174aaba65982d25a23f437e2a66ec3836146ba7b7ce5b3fe2d5476907f7079d9": "2eab488e3a7b030303de0d18e357ce17a9fc6b8876705d61076bbe923b2e5fc8-1:1509354047:YES:DELETE", + "216cbc42addec1a6b83e1f2b0b3779594bd879f5671dd76a9826cc690c68286d": "b0320c1eff10ccb5e26086017a09e77dacb30fdcafccb3d98db3e5b610b9f1bd-1:1509117256:YES:DELETE", + "aa4dc9d3b9e74e8c1ffc725b737d07f8a32e43c64907e4bea19e64a86135f08a": "af9f5646ace92f76b3a01b0abe08716a0a7ded64074c2d2e712c93174b9013d1-1:1508866932:YES:FUNDING", + "73dd135ea7bece0f2047de75d8ca04f2985daebed9568d28ee58a60a12a2a082": "8e3fee7f668fed7019588be616225c6c4762ee632470878b2dc8eae3f0b3f67d-1:1508866932:YES:FUNDING", + "d13b9c5c28bbc8684a7291961a1023abbbe65b534804d0629fb44166cc1a6148": "08b2dbffd61d927bc12c20f6853513f41fbf7737446632b13c7ca0df8c6da282-1:1508866932:YES:FUNDING", + "8a4283d457d8635b43c6fa6cbf865813a80d965c777e8ba07364eb6468200ae1": "76c40abd280441b75577e99e9e4f253f9281a7deb4feebff83860f9cede7a09b-1:1508866932:YES:FUNDING", + "313e19607813cb0db3b3fb477982b4d3418f13f8511295419df8fe1f7ff6668f": "0fd502f28b9a9a256d9ba29a047c375fe2823b6e76e4853af16e079a709ab72a-1:1508866932:YES:FUNDING" } {% endhighlight %} From 9ff2e0dd817f3f403dbca47d7e685cb93850be90 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 15 Feb 2018 16:34:07 -0500 Subject: [PATCH 06/38] content - Change TxOut to outPoint to avoid inaccurate cross reference --- _includes/devdoc/ref_p2p_networking.md | 54 +++++++++++++------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index bb6d260e..14a6ecd3 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1882,7 +1882,7 @@ message. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | | 4 | nDenom | int | Required | Denomination allowed in this mixing session -| 36 | masternodeOutPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is hosting this session +| 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is hosting this session | 8 | nTime | int64_t | Required | Time this `dsq` message was created | 1 | fReady | bool | Required | Indicates if the mixing pool is ready to be executed | 66* | vchSig | char[] | Required | Signature of this message by masternode verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes)) @@ -2089,7 +2089,7 @@ fees (to provide security in mixing). | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | | # | tx | `tx` message | Required | The transaction -| 36 | masternodeOutPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is signing the message +| 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message | 66 | vchSig | char[] | Required | Signature of this message by masternode verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes)) | 8 | sigTime | int64_t | Require | Time this message was signed @@ -2142,7 +2142,7 @@ Transaction Message | | 00000000 ................................... locktime: 0 (a block height) -Masternode Unspent Output +Masternode Unspent Outpoint | 387d522def2abfb9bdd15be899f074f3 | 49b414cef078ec642e1d14b42996b9fc ......... Outpoint TXID | 00000000 ................................. Outpoint index number: 0 @@ -2181,7 +2181,7 @@ and [Masternode Payment](developer-guide#masternode-payment) section The `dseg` message requests either the entire masternode list or a specific entry. To request the list of all masternodes, use an empty txIn (TXID of all zeros and an index of 0xFFFFFFFF). To request information about a specific -masternode, use the unspent output associated with that masternode. +masternode, use the unspent outpoint associated with that masternode. The response to a `dseg` message is an `mnb` message inventory and an `mnp` message inventory for each requested masternode. Masternodes ignore this @@ -2189,7 +2189,7 @@ request if they are not fully synced. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint | TxOut | Required | Request options:
`All Entries` - empty txIn
`Single Entry` - Masternode's unspent output which is holding 1000 DASH +| 36 | masternodeOutPoint | outPoint | Required | Request options:
`All Entries` - empty txIn
`Single Entry` - Masternode's unspent outpoint which is holding 1000 DASH {% highlight text %} @@ -2201,7 +2201,7 @@ The following annotated hexdump shows a `dseg` message requesting **all** masternodes. (The message header has been omitted.) {% highlight text %} -Masternode Unspent Output +Masternode Unspent Outpoint | 00000000000000000000000000000000 | 00000000000000000000000000000000 ......... Outpoint TXID | ffffffff ................................. Outpoint index number: 0 @@ -2211,7 +2211,7 @@ The following annotated hexdump shows a `dseg` message requesting a specific masternode. (The message header has been omitted.) {% highlight text %} -Masternode Unspent Output +Masternode Unspent Outpoint | 7fe33a2901aa654598ae0af572d4fbec | ee97af2d0276f189d177dee5848ef3da ......... Outpoint TXID | 00000000 ................................. Outpoint index number: 0 @@ -2230,9 +2230,9 @@ entry and how to validate messages from it. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 36 | outPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is signing the message +| 36 | outPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message | # | addr | CService | Required | IPv4 address of the masternode -| 33-65 | pubKeyCollateralAddress | CPubKey | Required | CPubKey of the main 1000 DASH unspent output. Length determined by if it is a compressed public key or not. +| 33-65 | pubKeyCollateralAddress | CPubKey | Required | CPubKey of the main 1000 DASH unspent outpoint. Length determined by if it is a compressed public key or not. | 33-65 | pubKeyMasternode | CPubKey | Required | CPubKey of the secondary signing key (For all messaging other than the announce message). Length determined by if it is a compressed public key or not. | 66 | sig | char[] | Required | Signature of this message verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes)) | 8 | sigTime | int64_t | Required | Time which the signature was created @@ -2245,7 +2245,7 @@ message header has been omitted and the actual IP address has been replaced with a RFC5737 reserved IP address.) {% highlight text %} -Masternode Unspent Output +Masternode Unspent Outpoint | 3fbc7d4a8f68ba6ecb02a8db34d1f5b6 | 2dc105f0b5c3505243435cf815d02394 ......... Outpoint TXID | 01000000 ................................. Outpoint index number: 1 @@ -2280,7 +2280,7 @@ Message Signature 3e120100 ................................... Protocol Version: 70206 Masternode Ping Message -| Masternode Unspent Output +| Masternode Unspent Outpoint | | 3fbc7d4a8f68ba6ecb02a8db34d1f5b6 | | 2dc105f0b5c3505243435cf815d02394 ........ Outpoint TXID | | 01000000 ................................ Outpoint index number: 1 @@ -2339,7 +2339,7 @@ uses a minimum masternode ping time of 10 minutes. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is signing the message +| 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message | 32 | blockHash | uint256 | Required | Block hash from 12 blocks ago (current chaintip minus 12). This offset allows nodes to be slightly out of sync. | 8 | sigTime | int64_t | Required | Time which the signature was created | 66* | vchSig | char[] | Required | Signature of this message by masternode - verifiable via pubKeyMasternode (66 bytes in most cases. Length (1 byte) + Signature (65 bytes)) @@ -2348,7 +2348,7 @@ The following annotated hexdump shows a `mnp` message. (The message header has been omitted.) {% highlight text %} -Masternode Unspent Output +Masternode Unspent Outpoint | 0bfa3616099771bb5f36181ff4060a9b | 9afe7b3e47d7f4327800f0f8ce586c6e ......... Outpoint TXID | 01000000 ................................. Outpoint index number: 1 @@ -2380,8 +2380,8 @@ masternode 1 being validated as of the provided block height. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint1 | TxOut | Required | The unspent output which is holding 1000 DASH for masternode 1 -| 36 | masternodeOutPoint2 | TxOut | Required | The unspent output which is holding 1000 DASH for masternode 2 +| 36 | masternodeOutPoint1 | outPoint | Required | The unspent outpoint which is holding 1000 DASH for masternode 1 +| 36 | masternodeOutPoint2 | outPoint | Required | The unspent outpoint which is holding 1000 DASH for masternode 2 | # | addr | CService | Required | IPv4 address and port of masternode 1 | 4 | nonce | int | Required | Random nonce | 4 | nBlockHeight | int | Required | Block height @@ -2422,12 +2422,12 @@ initial request (Step 1) so it does not contain any signatures. (The message header has been omitted.) {% highlight text %} -Masternode 1 Unspent Output (empty) +Masternode 1 Unspent Outpoint (empty) | 00000000000000000000000000000000 | 00000000000000000000000000000000 ......... Outpoint TXID | ffffffff ................................. Outpoint index number: 0 -Masternode 2 Unspent Output (empty) +Masternode 2 Unspent Outpoint (empty) | 00000000000000000000000000000000 | 00000000000000000000000000000000 ......... Outpoint TXID | ffffffff ................................. Outpoint index number: 0 @@ -2452,12 +2452,12 @@ initial response (Step 2) so it only contains the signature of masternode 1 (the masternode being verified). (The message header has been omitted.) {% highlight text %} -Masternode 1 Unspent Output (empty) +Masternode 1 Unspent Outpoint (empty) | 00000000000000000000000000000000 | 00000000000000000000000000000000 ......... Outpoint TXID | ffffffff ................................. Outpoint index number: 0 -Masternode 2 Unspent Output (empty) +Masternode 2 Unspent Outpoint (empty) | 00000000000000000000000000000000 | 00000000000000000000000000000000 ......... Outpoint TXID | ffffffff ................................. Outpoint index number: 0 @@ -2492,7 +2492,7 @@ selected masternodes will issue the masternode payment vote message. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is signing the message +| 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message | 4 | nBlockHeight | int | Required | The blockheight which the payee should be paid | ? | payeeAddress | CScript | Required | The address receiving payment | 66* | vchSig | char[] | Required | Signature of the masternode which is signing the message (66 bytes in most cases. Length (1 byte) + Signature (65 bytes)) @@ -2501,7 +2501,7 @@ The following annotated hexdump shows a `mnw` message. (The message header has been omitted.) {% highlight text %} -Masternode Unspent Output +Masternode Unspent Outpoint | 0c1b5c5846792b25b05eeea9586d8c34 | ecb996c566bedb4ecf6a68fe8ffa9582 ......... Outpoint TXID | 00000000 ................................. Outpoint index number: 0 @@ -2614,7 +2614,7 @@ contract, or setting. Masternodes ignore this request if they are not fully sync | 32 | nCollateralHash | uint256 | Required* | Hash of the collateral fee transaction for proposals.

Set to all zeros for Triggers/Watchdogs. | 0-16384 | strData | string | Required | Data field - can be used for anything (leading varint indicates size of data) | 4 | nObjectType | int | Required | Type of governance object:
• `0` - Unknown
• `1` - Proposal
• `2` - Trigger
• `3` - Watchdog -| 36 | masternodeOutPoint | TxOut | Required* | The unspent output of the masternode (holding 1000 DASH) which is signing this object.

Set to all zeros for proposals since they can be created by non-masternodes. +| 36 | masternodeOutPoint | outPoint | Required* | The unspent outpoint of the masternode (holding 1000 DASH) which is signing this object.

Set to all zeros for proposals since they can be created by non-masternodes. | 66* | vchSig | char[] | Required* | Signature of the masternode (Length (1 byte) + Signature (65 bytes))

Not required for proposals - they will have a length of 0x00 and no Signature. Governance Object Types (defined by src/governance-object.h) @@ -2628,7 +2628,7 @@ Governance Object Types (defined by src/governance-object.h) The following annotated hexdump shows a `govobj` message for a Proposal object. Notice the presence of a non-zero collateral hash, a masternodeOutPoint that is an -empty TxOut (hash of all zeros), and no vchSig. +empty Outpoint (hash of all zeros), and no vchSig. (The message header has been omitted.) {% highlight text %} @@ -2645,7 +2645,7 @@ Data 01000000 ............................. Object Type: GOVERNANCE_OBJECT_PROPOSAL (1) -Masternode Unspent Output +Masternode Unspent Outpoint | 00000000000000000000000000000000 | 00000000000000000000000000000000 ... Outpoint TXID | ffffffff ........................... Outpoint index number: 0 @@ -2673,7 +2673,7 @@ Data 02000000 ............................. Object Type: GOVERNANCE_OBJECT_TRIGGER (2) -Masternode Unspent Output +Masternode Unspent Outpoint | ffefbe4959085907bcd2ba29e357a441 | fa7b6e26e25896d8127332bba2419e97 ... Outpoint TXID | 00000000 ........................... Outpoint index number: 0 @@ -2720,7 +2720,7 @@ the node being banned. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint | TxOut | Required | The unspent output of the masternode (holding 1000 DASH) which is voting +| 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is voting | 32 | nParentHash | uint256 | Required | Object (`govobj`) being voted on (proposal, contract, setting or final budget) | 4 | nVoteOutcome | int | Required | None (0), Yes (1), No (2), Abstain (3) | 4 | nVoteSignal | int | Required | None (0), Funding (1), Valid (2), Delete (3), Endorsed (4) @@ -2740,7 +2740,7 @@ The following annotated hexdump shows a `govobjvote` message. (The message header has been omitted.) {% highlight text %} -Masternode Unspent Output +Masternode Unspent Outpoint | 57566a0ef85e6cac3415ced67b0b07e1 | 781bafb853650d7c9d56d8bc132cc3b4 ... Outpoint TXID | 00000000 ........................... Outpoint index number: 0 From d8c79f38762bb8ea3cdf77d7e2cc1886fe1a2ded Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 20 Feb 2018 13:43:17 -0500 Subject: [PATCH 07/38] content - RPC ref and table updates - Add 12.3 to quick-reference and update already modified RPCs --- _includes/devdoc/dash-core/rpcs/quick-reference.md | 14 +++++++++----- _includes/layout/base/rpc-table.html | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 8b227351..eb8c5ef3 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -19,17 +19,21 @@ Use v0.n.n in abbreviation title to prevent autocrossrefing. {% assign DASH_NOT_IMPLEMENTED='**Not Implemented**' %} + +{% assign DASH_NEW0_12_3='**New in Dash Core 0.12.3**' %} +{% assign DASH_UPDATED0_12_3='**Updated in Dash Core 0.12.3**' %} + -{% assign DASH_NEW0_12_2='*New in Dash Core 0.12.2*' %} +{% assign DASH_NEW0_12_2='**New in Dash Core 0.12.2**' %} {% assign DASH_UPDATED0_12_2='**Updated in Dash Core 0.12.2**' %} {% assign DASH_NEW0_12_1='*New in Dash Core 0.12.1*' %} -{% assign DASH_UPDATED0_12_1='**Updated in Dash Core 0.12.1**' %} +{% assign DASH_UPDATED0_12_1='*Updated in Dash Core 0.12.1*' %} {% assign DARKCOIN_NEW0_11_0='*New in Darkcoin Core 0.11.0*' %} -{% assign DARKCOIN_UPDATED0_11_0='**Updated in Darkcoin Core 0.11.0**' %} +{% assign DARKCOIN_UPDATED0_11_0='*Updated in Darkcoin Core 0.11.0*' %} {% assign DEPRECATED='**Deprecated**' %} @@ -147,8 +151,8 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} * [GetPoolInfo][rpc getpoolinfo]: {{summary_getPoolInfo}} * [GetSuperblockBudget][rpc getsuperblockbudget]: {{summary_getSuperblockBudget}} -* [GObject][rpc gobject]: {{summary_gObject}} -* [Masternode][rpc masternode]: {{summary_masternode}} +* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_12_3}} +* [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_12_3}} * [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}} * [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} * [MnSync][rpc mnsync]: {{summary_mnSync}} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index c1490f6c..b38b572e 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -245,7 +245,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash GObject Y - + Updated in 0.12.3 Dash From ded0b9a8cefa18d9f84ba9a8085052b1a5ea5f70 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 27 Feb 2018 16:01:30 -0500 Subject: [PATCH 08/38] [Content] v12.3 RPC changes (#38) * content - Mempool related RPC updates - Add getmempoolancestors, getmempooldescendants, and getmempoolentry RPCs - Update Ref and Table * content - Generate RPCs updated - Mark get/setgenerate as removed - Add generatetoaddress details - Update Ref and Table * content - Debug RPC updated - Change delimiter to + instead of comma - Update Ref and Table * content - GetInfo RPCs updated - getaddednodeinfo, getmemoryinfo, getnetworkinfo - Update Ref and Table * content - Added PreciousBlock RPC - Update Ref and Table * content - Added and update RPCs - Debug, estimatepriority, estimatesmartpriority, listunspent, signmessagewithprivkey, validateaddress - Update Ref and Table * Update GObject Getcurrentvotes with shortened outpoint output - Update example and Vote Info field - Ref #24 * content - Update generate RPC - Add iterations parameter - Ref dashpay/dash#1790 (and bitcoin/bitcoin#7663) * content - Update rawtransaction and generate RPCs - CreateRawTransaction, GetRawTransaction, and FundRawTransaction minor updates - Some minor generate RPC updates for removed commands * content - Update RPCs - Update GetBlockChainInfo and GetBlockTemplate - Add ImportMulti - Some minor generate RPC updates for removed commands * content - Update Dash RPCs - Update GetGovernanceInfo and MasternodeList * content - Update Pruning related RPCs - Update PruneBlockchain, ImportPrunedFunds, and RemovePrunedFunds * content - RPC table - Minor updates * content - Add SetBIP69Enabled RPC * build - Update Makefile check to allow numbers in summary name * content - Add example of RPC with named parameter --- Makefile | 2 +- _autocrossref.yaml | 2 + _config.yml | 1 + _includes/devdoc/dash-core/rpcs/intro.md | 13 ++- .../devdoc/dash-core/rpcs/quick-reference.md | 63 +++++----- .../rpcs/rpcs/createrawtransaction.md | 9 +- _includes/devdoc/dash-core/rpcs/rpcs/debug.md | 8 +- .../dash-core/rpcs/rpcs/disconnectnode.md | 2 +- .../dash-core/rpcs/rpcs/estimatepriority.md | 4 +- .../rpcs/rpcs/estimatesmartpriority.md | 4 +- .../dash-core/rpcs/rpcs/fundrawtransaction.md | 17 ++- .../devdoc/dash-core/rpcs/rpcs/generate.md | 13 +++ .../dash-core/rpcs/rpcs/generatetoaddress.md | 23 ++-- .../dash-core/rpcs/rpcs/getaddednodeinfo.md | 22 ++-- .../dash-core/rpcs/rpcs/getblockchaininfo.md | 91 ++++++++------- .../dash-core/rpcs/rpcs/getblocktemplate.md | 12 ++ .../devdoc/dash-core/rpcs/rpcs/getgenerate.md | 6 +- .../dash-core/rpcs/rpcs/getgovernanceinfo.md | 16 ++- .../dash-core/rpcs/rpcs/getmemoryinfo.md | 17 +-- .../rpcs/rpcs/getmempoolancestors.md | 71 ++++-------- .../rpcs/rpcs/getmempooldescendants.md | 73 +++++------- .../dash-core/rpcs/rpcs/getmempoolentry.md | 52 ++++----- .../dash-core/rpcs/rpcs/getnetworkinfo.md | 16 ++- .../dash-core/rpcs/rpcs/getrawtransaction.md | 9 +- .../devdoc/dash-core/rpcs/rpcs/gobject.md | 10 +- .../devdoc/dash-core/rpcs/rpcs/importmulti.md | 39 +++---- .../dash-core/rpcs/rpcs/importprunedfunds.md | 11 +- .../devdoc/dash-core/rpcs/rpcs/listunspent.md | 39 ++++--- .../dash-core/rpcs/rpcs/masternodelist.md | 81 ++++++------- .../dash-core/rpcs/rpcs/preciousblock.md | 18 ++- .../dash-core/rpcs/rpcs/pruneblockchain.md | 14 +-- .../dash-core/rpcs/rpcs/removeprunedfunds.md | 15 +-- .../dash-core/rpcs/rpcs/setbip69enabled.md | 48 ++++++++ .../devdoc/dash-core/rpcs/rpcs/setgenerate.md | 6 +- .../rpcs/rpcs/signmessagewithprivkey.md | 21 ++-- .../dash-core/rpcs/rpcs/validateaddress.md | 11 +- _includes/helpers/summaries.md | 5 +- _includes/helpers/vars.md | 2 +- _includes/layout/base/rpc-table.html | 108 +++++++++--------- _includes/references.md | 1 + en/developer-reference.md | 2 + 41 files changed, 525 insertions(+), 452 deletions(-) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/setbip69enabled.md diff --git a/Makefile b/Makefile index da773483..c78e24e2 100644 --- a/Makefile +++ b/Makefile @@ -219,7 +219,7 @@ check-for-missing-rpc-summaries: ## Make sure the Quick Reference section has a summary for each RPC we ## have documented $S for f in _includes/devdoc/dash-core/rpcs/rpcs/*.md ;\ - do grep -q "\[$$( grep '^##### ' $$f | sed 's/^##### *\([a-zA-Z]*\).*/\1/')\]\[" _includes/devdoc/dash-core/rpcs/quick-reference.md \ + do grep -q "\[$$( grep '^##### ' $$f | sed 's/^##### *\([a-zA-Z0-9]*\).*/\1/')\]\[" _includes/devdoc/dash-core/rpcs/quick-reference.md \ || echo 'missing summary for '$$f', you need to add the summary to _includes/devdoc/dash-core/rpcs/quick-ref.md and run make manual-updates' \ ; done | eval $(ERROR_ON_OUTPUT) diff --git a/_autocrossref.yaml b/_autocrossref.yaml index e4e46169..a4b23685 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -467,6 +467,8 @@ CVE-2012-2459: '`sendtoaddress` RPC': rpc sendtoaddress '`setaccount`': rpc setaccount '`setaccount` RPC': rpc setaccount +'`setbip69enabled`': rpc setbip69enabled +'`setbip69enabled` RPC': rpc setbip69enabled '`setban`': rpc setban '`setban` RPC': rpc setban '`setgenerate`': rpc setgenerate diff --git a/_config.yml b/_config.yml index 311ccd25..9667c3b7 100644 --- a/_config.yml +++ b/_config.yml @@ -297,6 +297,7 @@ devsearches: - 'SendToAddress': "/en/developer-reference#sendtoaddress" - 'SetAccount': "/en/developer-reference#setaccount" - 'SetBan': "/en/developer-reference#setban" + - 'SetBIP69Enabled': "/en/developer-reference#setbip69enabled" - 'SetGenerate': "/en/developer-reference#setgenerate" - 'SetNetworkActive': "/en/developer-reference#setnetworkactive" - 'SetTxFee': "/en/developer-reference#settxfee" diff --git a/_includes/devdoc/dash-core/rpcs/intro.md b/_includes/devdoc/dash-core/rpcs/intro.md index 4f49ab4b..9f900633 100644 --- a/_includes/devdoc/dash-core/rpcs/intro.md +++ b/_includes/devdoc/dash-core/rpcs/intro.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ### Remote Procedure Calls (RPCs) {% include helpers/subhead-links.md %} + + {% autocrossref %} Dash Core provides a remote procedure call (RPC) interface for various @@ -57,6 +59,7 @@ format: | →
`id` | string | Optional
(0 or 1) | An arbitrary string that will be returned with the response. May be omitted or set to an empty string ("") | →
`method` | string | Required
(exactly 1) | The RPC method name (e.g. `getblock`). See the RPC section for a list of available methods. | →
`params` | array | Optional
(0 or 1) | An array containing positional parameter values for the RPC. May be an empty array or omitted for RPC calls that don't have any required parameters. +| →
`params` | object | Optional
(0 or 1) | Starting from Dash Core 0.12.3 / Bitcoin Core 0.14.0 (replaces the params array above) An object containing named parameter values for the RPC. May be an empty object or omitted for RPC calls that don’t have any required parameters. | → →
Parameter | *any* | Optional
(0 or more) | A parameter. May be any JSON type allowed by the particular RPC method {:.ntpd} @@ -109,6 +112,12 @@ The command to send this request using `dash-cli` is: dash-cli getblockhash 0 {% endhighlight %} +The command to send this request using `dash-cli` with named parameters is: + +{% highlight bash %} +dash-cli -named getblockhash height=0 +{% endhighlight %} + Alternatively, we could `POST` this request using the cURL command-line program as follows: @@ -126,7 +135,7 @@ The HTTP response data for this request would be: {% highlight json %} { - "result": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", + "result": "00000bafbc94add76cb75e2ec92894837288a481e5c005f6563d91623bf8bc2c", "error": null, "id": "foo" } @@ -147,7 +156,7 @@ Continuing with the example above, the output from the `dash-cli` command would be simply: {% highlight text %} -00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6 +00000bafbc94add76cb75e2ec92894837288a481e5c005f6563d91623bf8bc2c {% endhighlight %} If there's an error processing a request, Dash Core sets the `result` field diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index eb8c5ef3..a44e38ed 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -98,7 +98,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetBestBlockHash][rpc getbestblockhash]: {{summary_getBestBlockHash}} * [GetBlock][rpc getblock]: {{summary_getBlock}} {{UPDATED0_13_0}} -* [GetBlockChainInfo][rpc getblockchaininfo]: {{summary_getBlockChainInfo}} {{UPDATED0_12_1}} +* [GetBlockChainInfo][rpc getblockchaininfo]: {{summary_getBlockChainInfo}} {{DASH_UPDATED0_12_3}} {{UPDATED0_12_1}} * [GetBlockCount][rpc getblockcount]: {{summary_getBlockCount}} * [GetBlockHash][rpc getblockhash]: {{summary_getBlockHash}} * [GetBlockHashes][rpc getblockhashes]: {{summary_getBlockHashes}} {{DASH_NEW0_12_1}} @@ -106,37 +106,31 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetBlockHeaders][rpc getblockheaders]: {{summary_getBlockHeaders}} {{DASH_NEW0_12_1}} * [GetChainTips][rpc getchaintips]: {{summary_getChainTips}} {{DASH_UPDATED0_12_1}} * [GetDifficulty][rpc getdifficulty]: {{summary_getDifficulty}} +* [GetMemPoolAncestors][rpc getmempoolancestors]: {{summary_getMemPoolAncestors}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} +* [GetMemPoolDescendants][rpc getmempooldescendants]: {{summary_getMemPoolDescendants}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} +* [GetMemPoolEntry][rpc getmempoolentry]: {{summary_getMemPoolEntry}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [GetMemPoolInfo][rpc getmempoolinfo]: {{summary_getMemPoolInfo}} {{UPDATED0_12_0}} * [GetRawMemPool][rpc getrawmempool]: {{summary_getRawMemPool}} {{UPDATED0_13_0}} * [GetSpentInfo][rpc getspentinfo]: {{summary_getSpentInfo}} {{DASH_NEW0_12_1}} * [GetTxOut][rpc gettxout]: {{summary_getTxOut}} * [GetTxOutProof][rpc gettxoutproof]: {{summary_getTxOutProof}} {{NEW0_11_0}} * [GetTxOutSetInfo][rpc gettxoutsetinfo]: {{summary_getTxOutSetInfo}} +* [PreciousBlock][rpc preciousblock]: {{summary_preciousBlock}} {{DASH_NEW0_12_3}} {{NEW0_14_0}} +* [PruneBlockChain][rpc pruneblockchain]: {{summary_pruneBlockChain}} {{DASH_NEW0_12_3}} {{NEW0_14_0}} * [VerifyChain][rpc verifychain]: {{summary_verifyChain}} * [VerifyTxOutProof][rpc verifytxoutproof]: {{summary_verifyTxOutProof}} {{NEW0_11_0}} {% endautocrossref %} -**Not implemented in Dash** - -{% autocrossref %} - -* {{DASH_NOT_IMPLEMENTED}} [GetMemPoolAncestors][rpc getmempoolancestors]: {{summary_getMemPoolAncestors}} {{NEW0_13_0}} -* {{DASH_NOT_IMPLEMENTED}} [GetMemPoolDescendants][rpc getmempooldescendants]: {{summary_getMemPoolDescendants}} {{NEW0_13_0}} -* {{DASH_NOT_IMPLEMENTED}} [GetMemPoolEntry][rpc getmempoolentry]: {{summary_getMemPoolEntry}} {{NEW0_13_0}} -* {{DASH_NOT_IMPLEMENTED}} [PreciousBlock][rpc preciousblock]: {{summary_preciousBlock}} {{NEW0_14_0}} -* {{DASH_NOT_IMPLEMENTED}} [PruneBlockChain][rpc pruneblockchain]: {{summary_pruneBlockChain}} {{NEW0_14_0}} - -{% endautocrossref %} - #### Control RPCs {:.no_toc} {% autocrossref %} -* [Debug][rpc debug]: {{summary_debug}} +* [Debug][rpc debug]: {{summary_debug}} {{DASH_UPDATED0_12_3}} * [GetInfo][rpc getinfo]: {{summary_getInfo}} {{DEPRECATED}} +* [GetMemoryInfo][rpc getmemoryinfo]: {{summary_getMemoryInfo}} {{DASH_NEW0_12_3}} {{NEW_14_0}} * [Help][rpc help]: {{summary_help}} * [Stop][rpc stop]: {{summary_stop}} @@ -148,13 +142,13 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} -* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} +* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_12_3}} * [GetPoolInfo][rpc getpoolinfo]: {{summary_getPoolInfo}} * [GetSuperblockBudget][rpc getsuperblockbudget]: {{summary_getSuperblockBudget}} * [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_12_3}} * [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_12_3}} * [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}} -* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} +* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_12_3}} * [MnSync][rpc mnsync]: {{summary_mnSync}} * [PrivateSend][rpc privatesend]: {{summary_privateSend}} * [SentinelPing][rpc sentinelping]: {{summary_sentinelPing}} @@ -169,10 +163,8 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} -* [Generate][rpc generate]: {{summary_generate}} {{NEW0_11_0}}, {{UPDATED0_13_0}} -* [GetGenerate][rpc getgenerate]: {{summary_getGenerate}} -* [SetGenerate][rpc setgenerate]: {{summary_setGenerate}} -* {{DASH_NOT_IMPLEMENTED}} [GenerateToAddress][rpc generatetoaddress]: {{summary_generateToAddress}} {{NEW0_13_0}} +* [Generate][rpc generate]: {{summary_generate}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} +* [GenerateToAddress][rpc generatetoaddress]: {{summary_generateToAddress}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} {% endautocrossref %} @@ -182,7 +174,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} -* [GetBlockTemplate][rpc getblocktemplate]: {{summary_getBlockTemplate}} +* [GetBlockTemplate][rpc getblocktemplate]: {{summary_getBlockTemplate}} {{DASH_UPDATED0_12_3}} * [GetMiningInfo][rpc getmininginfo]: {{summary_getMiningInfo}} {{UPDATED0_14_0}} * [GetNetworkHashPS][rpc getnetworkhashps]: {{summary_getNetworkHashPS}} * [PrioritiseTransaction][rpc prioritisetransaction]: {{summary_prioritiseTransaction}} @@ -199,10 +191,10 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [AddNode][rpc addnode]: {{summary_addNode}} {{UPDATED0_14_0}} * [ClearBanned][rpc clearbanned]: {{summary_clearBanned}} {{NEW0_12_0}} * [DisconnectNode][rpc disconnectnode]: {{summary_disconnectNode}} {{NEW0_12_0}} {{UPDATED0_14_1}} -* [GetAddedNodeInfo][rpc getaddednodeinfo]: {{summary_getAddedNodeInfo}} {{UPDATED0_14_0}} +* [GetAddedNodeInfo][rpc getaddednodeinfo]: {{summary_getAddedNodeInfo}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}} * [GetConnectionCount][rpc getconnectioncount]: {{summary_getConnectionCount}} * [GetNetTotals][rpc getnettotals]: {{summary_getNetTotals}} {{UPDATED0_12_0}} -* [GetNetworkInfo][rpc getnetworkinfo]: {{summary_getNetworkInfo}} {{UPDATED0_13_0}} +* [GetNetworkInfo][rpc getnetworkinfo]: {{summary_getNetworkInfo}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} * [GetPeerInfo][rpc getpeerinfo]: {{summary_getPeerInfo}} {{UPDATED0_13_0}} * [ListBanned][rpc listbanned]: {{summary_listBanned}} {{NEW0_12_0}} * [Ping][rpc ping]: {{summary_ping-rpc}} @@ -217,11 +209,11 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} -* [CreateRawTransaction][rpc createrawtransaction]: {{summary_createRawTransaction}} {{UPDATED0_14_1}} +* [CreateRawTransaction][rpc createrawtransaction]: {{summary_createRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_1}} * [DecodeRawTransaction][rpc decoderawtransaction]: {{summary_decodeRawTransaction}} {{UPDATED0_13_0}} * [DecodeScript][rpc decodescript]: {{summary_decodeScript}} -* [FundRawTransaction][rpc fundrawtransaction]: {{summary_fundRawTransaction}} {{NEW0_12_0}}, {{UPDATED0_14_0}} -* [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{UPDATED0_14_0}} +* [FundRawTransaction][rpc fundrawtransaction]: {{summary_fundRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}} +* [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}} * [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} * [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}} @@ -235,14 +227,14 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [CreateMultiSig][rpc createmultisig]: {{summary_createMultiSig}} * [EstimateFee][rpc estimatefee]: {{summary_estimateFee}} -* [EstimatePriority][rpc estimatepriority]: {{summary_estimatePriority}} +* [EstimatePriority][rpc estimatepriority]: {{summary_estimatePriority}} {{DEPRECATED}} * [EstimateSmartFee][rpc estimatesmartfee]: {{summary_estimateSmartFee}} {{DEPRECATED}} * [EstimateSmartPriority][rpc estimatesmartpriority]: {{summary_estimateSmartPriority}} {{DEPRECATED}} -* [ValidateAddress][rpc validateaddress]: {{summary_validateAddress}} {{UPDATED0_13_0}} +* [SetBIP69Enabled][rpc setbip69enabled]: {{summary_setBIP69Enabled}} {{DASH_NEW0_12_3}} +* [SignMessageWithPrivKey][rpc signmessagewithprivkey]: {{summary_signMessageWithPrivKey}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} +* [ValidateAddress][rpc validateaddress]: {{summary_validateAddress}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} * [VerifyMessage][rpc verifymessage]: {{summary_verifyMessage}} -* {{DASH_NOT_IMPLEMENTED}} [GetMemoryInfo][rpc getmemoryinfo]: {{summary_getMemoryInfo}} {{NEW_14_0}} - {% endautocrossref %} #### Wallet RPCs @@ -275,7 +267,9 @@ default. * [GetWalletInfo][rpc getwalletinfo]: {{summary_getWalletInfo}} * [ImportAddress][rpc importaddress]: {{summary_importAddress}} * [ImportElectrumWallet][rpc importelectrumwallet]: {{summary_importElectrumWallet}} {{DASH_NEW0_12_1}} +* [ImportMulti][rpc importmulti]: {{summary_importMulti}} {{DASH_NEW0_12_3}} {{NEW0_14_0}} * [ImportPrivKey][rpc importprivkey]: {{summary_importPrivKey}} +* [ImportPrunedFunds][rpc importprunedfunds]: {{summary_importPrunedFunds}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [ImportPubKey][rpc importpubkey]: {{summary_importPubKey}} * [ImportWallet][rpc importwallet]: {{summary_importWallet}} * [InstantSendToAddress][rpc instantsendtoaddress]: {{summary_instantSendToAddress}} @@ -288,9 +282,10 @@ default. * [ListReceivedByAddress][rpc listreceivedbyaddress]: {{summary_listReceivedByAddress}} * [ListSinceBlock][rpc listsinceblock]: {{summary_listSinceBlock}} * [ListTransactions][rpc listtransactions]: {{summary_listTransactions}} {{UPDATED0_12_1}} -* [ListUnspent][rpc listunspent]: {{summary_listUnspent}} {{UPDATED0_13_0}} +* [ListUnspent][rpc listunspent]: {{summary_listUnspent}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} * [LockUnspent][rpc lockunspent]: {{summary_lockUnspent}} * [Move][rpc move]: {{summary_move}} {{DEPRECATED}} +* [RemovePrunedFunds][rpc removeprunedfunds]: {{summary_removePrunedFunds}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [SendFrom][rpc sendfrom]: {{summary_sendFrom}} {{DEPRECATED}} * [SendMany][rpc sendmany]: {{summary_sendMany}} * [SendToAddress][rpc sendtoaddress]: {{summary_sendToAddress}} @@ -303,10 +298,6 @@ default. * {{DASH_NOT_IMPLEMENTED}} [AddWitnessAddress][rpc addwitnessaddress]: {{summary_addWitnessAddress}} {{NEW0_13_0}} * {{DASH_NOT_IMPLEMENTED}} [BumpFee][rpc bumpfee]: {{summary_bumpFee}} {{NEW0_14_0}} -* {{DASH_NOT_IMPLEMENTED}} [ImportMulti][rpc importmulti]: {{summary_importMulti}} {{NEW0_14_0}} -* {{DASH_NOT_IMPLEMENTED}} [ImportPrunedFunds][rpc importprunedfunds]: {{summary_importPrunedFunds}} {{NEW0_13_0}} -* {{DASH_NOT_IMPLEMENTED}} [RemovePrunedFunds][rpc removeprunedfunds]: {{summary_removePrunedFunds}} {{NEW0_13_0}} -* {{DASH_NOT_IMPLEMENTED}} [SignMessageWithPrivKey][rpc signmessagewithprivkey]: {{summary_signMessageWithPrivKey}} {{NEW0_13_0}} {% endautocrossref %} @@ -318,8 +309,6 @@ default. * [GetHashesPerSec][rpc gethashespersec]: {{summary_getHashesPerSec}} * [GetWork][rpc getwork]: {{summary_getWork}} - {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/createrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/createrawtransaction.md index 99e92915..72a3940f 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/createrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/createrawtransaction.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ##### CreateRawTransaction {% include helpers/subhead-links.md %} + + {% assign summary_createRawTransaction="creates an unsigned serialized transaction that spends a previous output to a new output with a P2PKH or P2SH address. The transaction is not stored in the wallet or transmitted to the network." %} {% autocrossref %} @@ -39,7 +41,7 @@ The `createrawtransaction` RPC {{summary_createRawTransaction}} - n: "→ →
`Sequence`" t: "number (int)" p: "Optional
(0 or 1)" - d: "NOT IMPLEMENTED IN DASH.

The sequence number to use for the input" + d: "Added in Dash Core 0.12.3.0.

The sequence number to use for the input" {% enditemplate %} @@ -56,6 +58,11 @@ The `createrawtransaction` RPC {{summary_createRawTransaction}} p: "Required
(1 or more)" d: "A key/value pair with the address to pay as a string (key) and the amount to pay that address (value) in Dash" +- n: "→
Data/Hex" + t: "data : hex" + p: "Required
(1 or more)" + d: "A key/value pair where the key is 'data' and the value is hex encoded data" + {% enditemplate %} *Parameter #3---locktime* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/debug.md b/_includes/devdoc/dash-core/rpcs/rpcs/debug.md index 589c5ea0..28725336 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/debug.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/debug.md @@ -19,20 +19,20 @@ The `debug` RPC {{summary_debug}} - n: "Debug category" t: "string" p: "Required
(1 or more)" - d: "The debug category to activate. Use a comma to specify multiple categories. Categories will be one of the following:
• `0` - Disables all categories
• `1` - Enables all categories
• `addrman`
• `alert`
• `bench`
• `coindb`
• `db`
• `lock`
• `rand`
• `rpc`
• `selectcoins`
• `mempool`
• `mempoolrej`
• `net`
• `proxy`
• `prune`
• `http`
• `libevent`
• `tor`
• `zmq`
• `dash`
• `privatesend`
• `instantsend`
• `masternode`
• `spork`
• `keepass`
• `mnpayments`
• `gobject`
" + d: "The debug category to activate. Use a `+` to specify multiple categories. Categories will be one of the following:
• `0` - Disables all categories
• `1` - Enables all categories
• `addrman`
• `alert`
• `bench`
• `coindb`
• `db`
• `lock`
• `rand`
• `rpc`
• `selectcoins`
• `mempool`
• `mempoolrej`
• `net`
• `proxy`
• `prune`
• `http`
• `libevent`
• `tor`
• `zmq`
• `dash`
• `privatesend`
• `instantsend`
• `masternode`
• `spork`
• `keepass`
• `mnpayments`
• `gobject`
" {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* {% highlight bash %} -dash-cli -testnet debug "net,mempool" +dash-cli -testnet debug "net+mempool" {% endhighlight %} Result: {% highlight text %} -Debug mode: net,mempool +Debug mode: net+mempool {% endhighlight %} *See also: none* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/disconnectnode.md b/_includes/devdoc/dash-core/rpcs/rpcs/disconnectnode.md index 058adcc4..175e32f7 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/disconnectnode.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/disconnectnode.md @@ -18,7 +18,7 @@ The `disconnectnode` RPC {{summary_disconnectNode}} *Parameter #1---hostname/IP address and port of node to disconnect* {% itemplate ntpd1 %} -- n: "`node`" +- n: "`address`" t: "string" p: "Required
(exactly 1)" d: "The node you want to disconnect from as a string in the form of `:`.

*Updated in Bitcoin Core 0.14.1*" diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/estimatepriority.md b/_includes/devdoc/dash-core/rpcs/rpcs/estimatepriority.md index 570d3243..9f5522d8 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/estimatepriority.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/estimatepriority.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ##### EstimatePriority {% include helpers/subhead-links.md %} + + {% autocrossref %} {% assign summary_estimatePriority="estimates the priority that a transaction needs in order to be included within a certain number of blocks as a free high-priority transaction." %} @@ -15,7 +17,7 @@ http://opensource.org/licenses/MIT. The `estimatepriority` RPC {{summary_estimatePriority}} This should not to be confused with the `prioritisetransaction` RPC which will remain supported for adding fee deltas to transactions. -{{WARNING}} `estimatepriority` has been [removed from Bitcoin](https://github.com/bitcoin/bitcoin/commit/fe282acd7604b5265762b24e531bdf1ebb1f009b) and will no longer be available in the next major release (planned for Bitcoin Core 0.15.0). Still present in Dash Core. +{{WARNING}} `estimatepriority` has been [removed from Bitcoin](https://github.com/bitcoin/bitcoin/commit/fe282acd7604b5265762b24e531bdf1ebb1f009b). While still present in Dash Core, it is deprecated as of 0.12.3 (should be considered unstable and will disappear in the future). Use the RPC listed in the "See Also" subsection below instead. Transaction priority is relative to a transaction's byte size. diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartpriority.md b/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartpriority.md index be63e1c4..8ac27612 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartpriority.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartpriority.md @@ -7,13 +7,15 @@ http://opensource.org/licenses/MIT. ##### EstimateSmartPriority {% include helpers/subhead-links.md %} + + {% autocrossref %} {% assign summary_estimateSmartPriority="estimates the priority that a transaction needs in order to be included within a certain number of blocks as a free high-priority transaction and returns the number of blocks for which the estimate is valid." %} The `estimatesmartpriority` RPC {{summary_estimateSmartPriority}} This should not to be confused with the `prioritisetransaction` RPC which will remain supported for adding fee deltas to transactions. -{{WARNING}} `estimatesmartpriority` has been [removed from Bitcoin](https://github.com/bitcoin/bitcoin/commit/fe282acd7604b5265762b24e531bdf1ebb1f009b) and will no longer be available in the next major release (planned for Bitcoin Core 0.15.0). While still present in Dash Core, the interface should be considered unstable and may disappear or change. Use the RPC listed in the "See Also" subsection below instead. +{{WARNING}} `estimatesmartpriority` has been [removed from Bitcoin](https://github.com/bitcoin/bitcoin/commit/fe282acd7604b5265762b24e531bdf1ebb1f009b). While still present in Dash Core, it is deprecated as of 0.12.3 (should be considered unstable and will disappear in the future). Use the RPC listed in the "See Also" subsection below instead. Transaction priority is relative to a transaction's byte size. diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/fundrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/fundrawtransaction.md index 7c490135..e233500c 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/fundrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/fundrawtransaction.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ##### FundRawTransaction {% include helpers/subhead-links.md %} + + {% assign summary_fundRawTransaction="adds inputs to a transaction until it has enough in value to meet its out value." %} {% autocrossref %} @@ -29,15 +31,7 @@ All existing inputs must have their previous output transaction be in the wallet *Parameter #2---Additional options* -{% itemplate ntpd1 %} -- n: "`includeWatching`" - t: "bool" - p: "Optional
(0 or 1)" - d: "Inputs from watch-only addresses are also considered. The default is `false`" - -{% enditemplate %} - -The following options from Bitcoin are not implemented in Dash Core. +Note: For backwards compatibility, passing in a `true` instead of an object will result in {\"includeWatching\":true}\n" {% itemplate ntpd1 %} - n: "Options" @@ -55,6 +49,11 @@ The following options from Bitcoin are not implemented in Dash Core. p: "Optional
(0 or 1)" d: "The index of the change output. If not set, the change position is randomly chosen" +- n: "`includeWatching`" + t: "bool" + p: "Optional
(0 or 1)" + d: "Inputs from watch-only addresses are also considered. The default is `false`" + - n: "→
`lockUnspent`" t: "bool" p: "Optional
(0 or 1)" diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/generate.md b/_includes/devdoc/dash-core/rpcs/rpcs/generate.md index b9291881..165de423 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/generate.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/generate.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ##### Generate {% include helpers/subhead-links.md %} + + {% assign summary_generate="mines blocks immediately (before the RPC call returns)." %} {% autocrossref %} @@ -25,6 +27,17 @@ The `generate` RPC {{summary_generate}} {% enditemplate %} +*Parameter #2---the number of iterations* + +{% itemplate ntpd1 %} +- n: "`numblocks`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The number of iterations to try (default = 1000000)." + +{% enditemplate %} + + *Result---the generated block header hashes* {% itemplate ntpd1 %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/generatetoaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/generatetoaddress.md index 9375c9fb..09b0c07f 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/generatetoaddress.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/generatetoaddress.md @@ -9,13 +9,12 @@ http://opensource.org/licenses/MIT. {% assign summary_generateToAddress="mines blocks immediately to a specified address." %} + + {% autocrossref %} -*Added in Bitcoin Core 0.13.0* +*Added in Dash Core 0.12.3 / Bitcoin Core 0.13.0* -**_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} *Requires wallet support.* The `generatetoaddress` RPC {{summary_generateToAddress}} @@ -26,7 +25,7 @@ The `generatetoaddress` RPC {{summary_generateToAddress}} - n: "Blocks" t: "number (int)" p: "Required
(exactly 1)" - d: "The number of blocks to generate. The RPC call will not return until all blocks have been generated or the maxium number of iterations has been reached" + d: "The number of blocks to generate. The RPC call will not return until all blocks have been generated or the maximum number of iterations has been reached" {% enditemplate %} @@ -36,7 +35,7 @@ The `generatetoaddress` RPC {{summary_generateToAddress}} - n: "Address" t: "string (base58)" p: "Required
(exactly 1)" - d: "The address to send the newly generated Bitcoin to" + d: "The address that will receive the newly generated Dash" {% enditemplate %} @@ -64,21 +63,21 @@ The `generatetoaddress` RPC {{summary_generateToAddress}} d: "The hashes of the headers of the blocks generated, as hex in RPC byte order" {% enditemplate %} -*Example from Bitcoin Core 0.13.1* +*Example from Dash Core 0.12.3* Using regtest mode, generate 2 blocks with maximal 500000 iterations: {% highlight bash %} -bitcoin-cli -regtest generatetoaddress 2 "1BRo7qrYHMPrzdBDzfjmzt\ -eBdYAyTMXW75" 500000 +dash-cli -regtest generatetoaddress 2 "yaQzdWrDVYGncLKSKG4bHQ\ +ML9UdAe726QN" 500000 {% endhighlight %} Result: {% highlight json %} [ - "36252b5852a5921bdfca8701f936b39edeb1f8c39fffe73b0d8437921401f9af", - "5f2956817db1e386759aa5794285977c70596b39ea093b9eab0aa4ba8cd50c06" + "34726c518d1688a9c56b3399e892089d3a639b43de194517c07da2b168a3a89c", + "1f030abe2bb323b8895542e3a85ed8386bd92c67af9d19fe9c163a4c5f5ef149" ] {% endhighlight %} @@ -88,6 +87,4 @@ Result: * [GetMiningInfo][rpc getmininginfo]: {{summary_getMiningInfo}} * [GetBlockTemplate][rpc getblocktemplate]: {{summary_getBlockTemplate}} -{% endcomment %} - {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getaddednodeinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getaddednodeinfo.md index ca655507..bc61e79b 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getaddednodeinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getaddednodeinfo.md @@ -7,23 +7,29 @@ http://opensource.org/licenses/MIT. ##### GetAddedNodeInfo {% include helpers/subhead-links.md %} + + {% assign summary_getAddedNodeInfo="returns information about the given added node, or all added nodes (except onetry nodes). Only nodes which have been manually added using the `addnode` RPC will have their information displayed." %} {% autocrossref %} The `getaddednodeinfo` RPC {{summary_getAddedNodeInfo}} -*Parameter #1---whether to display connection information* +Prior to Dash Core 0.12.3, this dummy parameter was required for historical purposes but not used: + +*DEPRECATED Parameter #1---whether to display connection information* {% itemplate ntpd1 %} -- n: "Dummy" - t: "bool" - p: "Required
(exactly 1)" - d: "Kept for historical purposes but ignored

*Removed in Bitcoin Core 0.14.0*" +- n: "_Dummy_" + t: "_bool_" + p: "_Required
(exactly 1)_" + d: "_Removed in Dash Core 0.12.3_" {% enditemplate %} -*Parameter #2---what node to display information about* +Beginning with Dash Core 0.12.3, this is the single (optional) parameter: + +*Parameter #1---what node to display information about* {% itemplate ntpd1 %} - n: "`node`" @@ -78,10 +84,10 @@ The `getaddednodeinfo` RPC {{summary_getAddedNodeInfo}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* {% highlight bash %} -dash-cli getaddednodeinfo true +dash-cli getaddednodeinfo {% endhighlight %} Result (real hostname and IP address replaced with [RFC5737][] reserved address): diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md index 9c34de4a..4e90fc8b 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ##### GetBlockChainInfo {% include helpers/subhead-links.md %} + + {% assign summary_getBlockChainInfo="provides information about the current state of the block chain." %} {% autocrossref %} @@ -163,9 +165,23 @@ The `getblockchaininfo` RPC {{summary_getBlockChainInfo}} p: "Optional
(0 or 1)" d: "The bit (0-28) in the block version field used to signal this softfork. Field is only shown when status is `started`" +- n: "→ → →
`startTime`" + t: "numeric
(int)" + p: "Required
(exactly 1)" + d: "The Unix epoch time when the softfork voting begins" + +- n: "→ → →
`timeout`" + t: "numeric
(int)" + p: "Required
(exactly 1)" + d: "The Unix epoch time at which the deployment is considered failed if not yet locked in" + +- n: "→ → →
`since`" + t: "numeric
(int)" + p: "Required
(exactly 1)" + d: "*Added in Bitcoin Core 0.14.0*

The height of the first block to which the status applies" {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* {% highlight bash %} dash-cli -testnet getblockchaininfo @@ -176,74 +192,57 @@ Result: {% highlight json %} { "chain": "test", - "blocks": 4622, - "headers": 4622, - "bestblockhash": "000000007f4141e557309da09911b1c3c65b8e9eed3f5e940f7083aec8999ac7", - "difficulty": 1.380236305048335, - "mediantime": 1507209819, - "verificationprogress": 0.9999053826626874, - "chainwork": "000000000000000000000000000000000000000000000000000001d17aeaf58b", + "blocks": 82244, + "headers": 82244, + "bestblockhash": "0000000004efcadbdb9d8b524e5ab982af3db039fdb585c2f1c1df56d42d4492", + "difficulty": 47.4955836390814, + "mediantime": 1519662782, + "verificationprogress": 0.9999999483744162, + "chainwork": "0000000000000000000000000000000000000000000000000021adf3af961831", "pruned": false, "softforks": [ { "id": "bip34", "version": 2, - "enforce": { - "status": true, - "found": 100, - "required": 51, - "window": 100 - }, "reject": { - "status": true, - "found": 100, - "required": 75, - "window": 100 + "status": true } }, { "id": "bip66", "version": 3, - "enforce": { - "status": true, - "found": 100, - "required": 51, - "window": 100 - }, "reject": { - "status": true, - "found": 100, - "required": 75, - "window": 100 + "status": true } }, { "id": "bip65", "version": 4, - "enforce": { - "status": true, - "found": 100, - "required": 51, - "window": 100 - }, "reject": { - "status": true, - "found": 100, - "required": 75, - "window": 100 + "status": true } } ], - "bip9_softforks": [ - { - "id": "csv", - "status": "started" + "bip9_softforks": { + "csv": { + "status": "active", + "startTime": 1506556800, + "timeout": 1538092800, + "since": 8064 }, - { - "id": "dip0001", - "status": "started" + "dip0001": { + "status": "active", + "startTime": 1505692800, + "timeout": 1537228800, + "since": 5600 + }, + "bip147": { + "status": "active", + "startTime": 1517792400, + "timeout": 1549328400, + "since": 78800 } - ] + } } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md index 891f25fc..7cf947f9 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ##### GetBlockTemplate {% include helpers/subhead-links.md %} + + {% assign summary_getBlockTemplate="gets a block template or proposal for use with mining software." %} {% autocrossref %} @@ -41,6 +43,16 @@ information, please see the following resources: p: "Optional
(exactly 1)" d: "Client side supported feature, `longpoll`, `coinbasetxn`, `coinbasevalue`, `proposal`, `serverlist`, `workid`" +- n: "→
`rules`" + t: "array (string)" + p: "Optional
(0 or more)" + d: "A list of strings" + +- n: "→ →
Rules" + t: "string" + p: "Optional
(exactly 1)" + d: "Client side supported softfork deployment, `csv`, `dip0001`, etc." + {% enditemplate %} *Result---block template* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getgenerate.md b/_includes/devdoc/dash-core/rpcs/rpcs/getgenerate.md index 7692a574..42860925 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getgenerate.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getgenerate.md @@ -7,13 +7,15 @@ http://opensource.org/licenses/MIT. ##### GetGenerate {% include helpers/subhead-links.md %} -{% assign summary_getGenerate="returns if the server is set to generate coins or not." %} + + +{% assign summary_getGenerate="was removed in Dash Core 0.12.3." %} {% autocrossref %} *Requires wallet support.* -*Removed in Bitcoin Core 0.13.0.* +**_Removed in Dash Core 0.12.3 / Bitcoin Core 0.13.0._** The `getgenerate` RPC {{summary_getGenerate}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md index 5e86da6a..feebc2de 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ##### GetGovernanceInfo {% include helpers/subhead-links.md %} + + {% assign summary_getGovernanceInfo="returns an object containing governance parameters." %} {% autocrossref %} @@ -31,7 +33,12 @@ The `getgovernanceinfo` RPC {{summary_getGovernanceInfo}} - n: "→
`masternodewatchdogmaxseconds`" t: "number (int)" p: "Required
(exactly 1)" - d: "Sentinel watchdog expiration time in seconds" + d: "*DEPRECATED in Dash Core 0.12.3*

Sentinel watchdog expiration time in seconds" + +- n: "→
`sentinelpingmaxseconds`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "*Added in Dash Core 0.12.3.0*

Sentinel ping expiration time in seconds" - n: "→
`proposalfee`" t: "number (int)" @@ -60,7 +67,7 @@ The `getgovernanceinfo` RPC {{summary_getGovernanceInfo}} {% enditemplate %} -*Example from Dash Core 0.12.2.2* +*Example from Dash Core 0.12.3.0* {% highlight bash %} dash-cli -testnet getgovernanceinfo @@ -71,10 +78,11 @@ Result: { "governanceminquorum": 1, "masternodewatchdogmaxseconds": 7200, + "sentinelpingmaxseconds": 7200, "proposalfee": 5.00000000, "superblockcycle": 24, - "lastsuperblock": 52872, - "nextsuperblock": 52896, + "lastsuperblock": 82704, + "nextsuperblock": 82728, "maxgovobjdatasize": 16384 } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmemoryinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmemoryinfo.md index 534464c9..2321a4d1 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getmemoryinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmemoryinfo.md @@ -13,11 +13,8 @@ http://opensource.org/licenses/MIT. {% autocrossref %} -*Added in Bitcoin Core 0.14.0* +*Added in Dash Core 0.12.3 / Bitcoin Core 0.14.0* -**_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} The `getmemoryinfo` RPC {{summary_getMemoryInfo}} *Parameters: none* @@ -67,10 +64,10 @@ The `getmemoryinfo` RPC {{summary_getMemoryInfo}} {% enditemplate %} -*Example from Bitcoin Core 0.14.1* +*Example from Dash Core 0.12.3* {% highlight bash %} -bitcoin-cli getmemoryinfo +dash-cli getmemoryinfo {% endhighlight %} Result: @@ -78,11 +75,11 @@ Result: {% highlight json %} { "locked": { - "used": 0, - "free": 65536, + "used": 32, + "free": 65504, "total": 65536, "locked": 65536, - "chunks_used": 0, + "chunks_used": 1, "chunks_free": 1 } } @@ -93,6 +90,4 @@ Result: * [GetMemPoolInfo][rpc getmempoolinfo]: {{summary_getMemPoolInfo}} -{% endcomment %} - {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolancestors.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolancestors.md index 2a4fd641..84099efd 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolancestors.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolancestors.md @@ -9,22 +9,21 @@ http://opensource.org/licenses/MIT. {% assign summary_getMemPoolAncestors="returns all in-mempool ancestors for a transaction in the mempool." %} + + {% autocrossref %} -*Added in Bitcoin Core 0.13.0* +*Added in Dash Core 0.12.3* -**_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} The `getmempoolancestors` RPC {{summary_getMemPoolAncestors}} *Parameter #1---a transaction identifier (TXID)* {% itemplate ntpd1 %} -- n: "Address" - t: "string" +- n: "TXID" + t: "string (hex)" p: "Required
(exactly 1)" - d: "The address whose transactions should be tallied" + d: "The TXID of a transaction in the memory pool, encoded as hex in RPC byte order" {% enditemplate %} @@ -143,66 +142,48 @@ The `getmempoolancestors` RPC {{summary_getMemPoolAncestors}} {% enditemplate %} -*Examples from Bitcoin Core 0.13.1* +*Examples from Dash Core 0.12.3* The default (`false`): {% highlight bash %} -bitcoin-cli getmempoolancestors 52273e0ce6cf3452932cfbc1c517c0ce\ -1af1d255fda67a6e3bd63ba1d908c8c2 +dash-cli getmempoolancestors 49a512c3d567effd4f605a6023df8b4b523\ +ac0ae7bccbaeed1c8a7db1e05e15a {% endhighlight %} Result: {% highlight json %} [ - "b104586f229e330caf42c475fd52684e9eb5e2d02f0fcd216d9554c5347b0873", - "094f7dcbc7494510d4daeceb2941ed73b1bd011bf527f6c3b7c897fee85c11d4" + "d1eefe8a006e2c21b55bc97c1f5b10000d63aa6a777bb11abc0daf62e4296660" ] {% endhighlight %} Verbose output (`true`): {% highlight bash %} -bitcoin-cli getmempoolancestors 52273e0ce6cf3452932cfbc1c517c0ce\ -1af1d255fda67a6e3bd63ba1d908c8c2 true +dash-cli getmempoolancestors 49a512c3d567effd4f605a6023df8b4b523\ +ac0ae7bccbaeed1c8a7db1e05e15a true {% endhighlight %} Result: {% highlight json %} { - "b104586f229e330caf42c475fd52684e9eb5e2d02f0fcd216d9554c5347b0873": { - "size": 485, - "fee": 0.00009700, - "modifiedfee": 0.00009700, - "time": 1479423635, - "height": 439431, - "startingpriority": 15327081.81818182, - "currentpriority": 21536936.36363636, - "descendantcount": 1, - "descendantsize": 485, - "descendantfees": 9700, + "d1eefe8a006e2c21b55bc97c1f5b10000d63aa6a777bb11abc0daf62e4296660": { + "size": 963, + "fee": 0.00000966, + "modifiedfee": 0.00000966, + "time": 1519160516, + "height": 79045, + "startingpriority": 4514051697.115385, + "currentpriority": 4520474899.74359, + "descendantcount": 2, + "descendantsize": 1189, + "descendantfees": 1192, "ancestorcount": 1, - "ancestorsize": 485, - "ancestorfees": 9700, - "depends": [ - ] - }, - "094f7dcbc7494510d4daeceb2941ed73b1bd011bf527f6c3b7c897fee85c11d4": { - "size": 554, - "fee": 0.00005540, - "modifiedfee": 0.00005540, - "time": 1479423327, - "height": 439430, - "startingpriority": 85074.91071428571, - "currentpriority": 3497174.4375, - "descendantcount": 1, - "descendantsize": 554, - "descendantfees": 5540, - "ancestorcount": 1, - "ancestorsize": 554, - "ancestorfees": 5540, + "ancestorsize": 963, + "ancestorfees": 966, "depends": [ ] } @@ -214,6 +195,4 @@ Result: * [GetMemPoolDescendants][rpc getmempooldescendants]: {{summary_getMemPoolDescendants}} * [GetRawMemPool][rpc getrawmempool]: {{summary_getRawMemPool}} -{% endcomment %} - {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmempooldescendants.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmempooldescendants.md index d430b6e0..c2d8c671 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getmempooldescendants.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmempooldescendants.md @@ -9,23 +9,21 @@ http://opensource.org/licenses/MIT. {% assign summary_getMemPoolDescendants="returns all in-mempool descendants for a transaction in the mempool." %} + + {% autocrossref %} -*Added in Bitcoin Core 0.13.0* - -**_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} +*Added in Dash Core 0.12.3* The `getmempooldescendants` RPC {{summary_getMemPoolDescendants}} *Parameter #1---a transaction identifier (TXID)* {% itemplate ntpd1 %} -- n: "Address" - t: "string" +- n: "TXID" + t: "string (hex)" p: "Required
(exactly 1)" - d: "The address whose transactions should be tallied" + d: "The TXID of a transaction in the memory pool, encoded as hex in RPC byte order" {% enditemplate %} @@ -144,67 +142,50 @@ The `getmempooldescendants` RPC {{summary_getMemPoolDescendants}} {% enditemplate %} -*Examples from Bitcoin Core 0.13.1* +*Examples from Dash Core 0.12.3* The default (`false`): {% highlight bash %} -bitcoin-cli getmempooldescendants 52273e0ce6cf3452932cfbc1c517c0\ -ce1af1d255fda67a6e3bd63ba1d908c8c2 +dash-cli getmempooldescendants 49a512c3d567effd4f605a6023df8b4b5\ +23ac0ae7bccbaeed1c8a7db1e05e15a {% endhighlight %} Result: {% highlight json %} [ - "b104586f229e330caf42c475fd52684e9eb5e2d02f0fcd216d9554c5347b0873", - "094f7dcbc7494510d4daeceb2941ed73b1bd011bf527f6c3b7c897fee85c11d4" + "49a512c3d567effd4f605a6023df8b4b523ac0ae7bccbaeed1c8a7db1e05e15a" ] {% endhighlight %} Verbose output (`true`): {% highlight bash %} -bitcoin-cli getmempooldescendants 52273e0ce6cf3452932cfbc1c517c0\ -ce1af1d255fda67a6e3bd63ba1d908c8c2 true +dash-cli getmempooldescendants 49a512c3d567effd4f605a6023df8b4b5\ +23ac0ae7bccbaeed1c8a7db1e05e15a true {% endhighlight %} Result: {% highlight json %} { - "b104586f229e330caf42c475fd52684e9eb5e2d02f0fcd216d9554c5347b0873": { - "size": 485, - "fee": 0.00009700, - "modifiedfee": 0.00009700, - "time": 1479423635, - "height": 439431, - "startingpriority": 15327081.81818182, - "currentpriority": 21536936.36363636, + "49a512c3d567effd4f605a6023df8b4b523ac0ae7bccbaeed1c8a7db1e05e15a": { + "size": 226, + "fee": 0.00000226, + "modifiedfee": 0.00000226, + "time": 1519160551, + "height": 79046, + "startingpriority": 0, + "currentpriority": 0, "descendantcount": 1, - "descendantsize": 485, - "descendantfees": 9700, - "ancestorcount": 1, - "ancestorsize": 485, - "ancestorfees": 9700, - "depends": [ - ] - }, - "094f7dcbc7494510d4daeceb2941ed73b1bd011bf527f6c3b7c897fee85c11d4": { - "size": 554, - "fee": 0.00005540, - "modifiedfee": 0.00005540, - "time": 1479423327, - "height": 439430, - "startingpriority": 85074.91071428571, - "currentpriority": 3497174.4375, - "descendantcount": 1, - "descendantsize": 554, - "descendantfees": 5540, - "ancestorcount": 1, - "ancestorsize": 554, - "ancestorfees": 5540, + "descendantsize": 226, + "descendantfees": 226, + "ancestorcount": 2, + "ancestorsize": 1189, + "ancestorfees": 1192, "depends": [ + "d1eefe8a006e2c21b55bc97c1f5b10000d63aa6a777bb11abc0daf62e4296660" ] } } @@ -215,6 +196,4 @@ Result: * [GetMemPoolAncestors][rpc getmempoolancestors]: {{summary_getMemPoolAncestors}} * [GetRawMemPool][rpc getrawmempool]: {{summary_getRawMemPool}} -{% endcomment %} - {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md index b62b7679..50ed6d5f 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md @@ -9,23 +9,21 @@ http://opensource.org/licenses/MIT. {% assign summary_getMemPoolEntry="returns mempool data for given transaction (must be in mempool)." %} + + {% autocrossref %} -*Added in Bitcoin Core 0.13.0* - -**_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} +*Added in Dash Core 0.12.3* The `getmempoolentry` RPC {{summary_getMemPoolEntry}} *Parameter #1---a transaction identifier (TXID)* {% itemplate ntpd1 %} -- n: "Address" - t: "string" +- n: "TXID" + t: "string (hex)" p: "Required
(exactly 1)" - d: "The address whose transactions should be tallied" + d: "The TXID of a transaction in the memory pool, encoded as hex in RPC byte order" {% enditemplate %} @@ -114,32 +112,32 @@ The `getmempoolentry` RPC {{summary_getMemPoolEntry}} {% enditemplate %} -*Examples from Bitcoin Core 0.13.1* +*Examples from Dash Core 0.12.3* {% highlight bash %} -bitcoin-cli getmempoolentry 52273e0ce6cf3452932cfbc1c517c0ce1af1\ -d255fda67a6e3bd63ba1d908c8c2 +dash-cli getmempoolentry d1eefe8a006e2c21b55bc97c1f5b10000d63aa6\ +a777bb11abc0daf62e4296660 {% endhighlight %} Result: {% highlight json %} { - "size": 485, - "fee": 0.00009700, - "modifiedfee": 0.00009700, - "time": 1479423635, - "height": 439431, - "startingpriority": 15327081.81818182, - "currentpriority": 21536936.36363636, - "descendantcount": 1, - "descendantsize": 485, - "descendantfees": 9700, - "ancestorcount": 1, - "ancestorsize": 485, - "ancestorfees": 9700, - "depends": [ - ] + "size": 226, + "fee": 0.00000226, + "modifiedfee": 0.00000226, + "time": 1519159538, + "height": 79036, + "startingpriority": 0, + "currentpriority": 0, + "descendantcount": 2, + "descendantsize": 452, + "descendantfees": 452, + "ancestorcount": 1, + "ancestorsize": 226, + "ancestorfees": 226, + "depends": [ + ] } {% endhighlight %} @@ -149,6 +147,4 @@ Result: * [GetMemPoolDescendants][rpc getmempooldescendants]: {{summary_getMemPoolDescendants}} * [GetRawMemPool][rpc getrawmempool]: {{summary_getRawMemPool}} -{% endcomment %} - {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md index e905e6e2..1f25f110 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ##### GetNetworkInfo {% include helpers/subhead-links.md %} + + {% assign summary_getNetworkInfo="returns information about the node's connection to the network." %} {% autocrossref %} @@ -94,10 +96,15 @@ The `getnetworkinfo` RPC {{summary_getNetworkInfo}} d: "*Added in Bitcoin Core 0.11.0*

Set to `true` if randomized credentials are set for this proxy. Otherwise set to `false`" - n: "→
`relayfee`" - t: "number (Dash)" + t: "number (DASH)" p: "Required
(exactly 1)" d: "The minimum relay fee for non-free transactions in order for this node to accept it into its memory pool" +- n: "→
`incrementalfee`" + t: "number (DASH)" + p: "Required
(exactly 1)" + d: "*Added in Dash Core 0.12.3*

The minimum fee increment for mempool limiting or BIP 125 replacement in DASH/kB" + - n: "→
`localaddresses`" t: "array" p: "Required
(exactly 1)" @@ -130,7 +137,7 @@ The `getnetworkinfo` RPC {{summary_getNetworkInfo}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* {% highlight bash %} dash-cli getnetworkinfo @@ -140,8 +147,8 @@ Result (actual addresses have been replaced with [RFC5737][] reserve {% highlight json %} { - "version": 120200, - "subversion": "/Dash Core:0.12.2/", + "version": 120300, + "subversion": "/Dash Core:0.12.3/", "protocolversion": 70208, "localservices": "0000000000000005", "localrelay": true, @@ -172,6 +179,7 @@ Result (actual addresses have been replaced with [RFC5737][] reserve } ], "relayfee": 0.00001000, + "incrementalfee": 0.00001000, "localaddresses": [ { "address": "192.0.2.113", diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md index 39fabadc..77d85687 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md @@ -7,12 +7,19 @@ http://opensource.org/licenses/MIT. ##### GetRawTransaction {% include helpers/subhead-links.md %} + + {% assign summary_getRawTransaction="gets a hex-encoded serialized transaction or a JSON object describing the transaction. By default, Dash Core only stores complete transaction data for UTXOs and your own transactions, so the RPC may fail on historic transactions unless you use the non-default `txindex=1` in your Dash Core startup settings." %} {% autocrossref %} The `getrawtransaction` RPC {{summary_getRawTransaction}} +Note: By default this function only works for mempool transactions. If the +`-txindex` option is enabled, it also works for blockchain transactions. For now, +it also works for transactions with unspent outputs although this feature is +deprecated. + {{reindexNote}} *Parameter #1---the TXID of the transaction to get* @@ -31,7 +38,7 @@ The `getrawtransaction` RPC {{summary_getRawTransaction}} - n: "Format" t: "bool" p: "Optional
(0 or 1)" - d: "For Dash:
Set to `0` (the default) to return the serialized transaction as hex. Set to `1` to return a decoded transaction.

*Updated in Bitcoin Core 0.14.0*

Set to `false` (the default) to return the serialized transaction as hex. Set to `true` to return a decoded transaction. Before 0.14.0, use `0` and `1`, respectively" + d: "*Updated in Dash Core 0.12.3 / Bitcoin Core 0.14.0*

Set to `false` (the default) to return the serialized transaction as hex. Set to `true` to return a decoded transaction. Before 0.12.3, use `0` and `1`, respectively" {% enditemplate %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md index 2861443f..98b52627 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md @@ -785,11 +785,11 @@ dash-cli -testnet gobject getcurrentvotes 78941af577f639ac94440e4855a1ed8f\ Result (truncated): {% highlight json %} { - "174aaba65982d25a23f437e2a66ec3836146ba7b7ce5b3fe2d5476907f7079d9": "CTxIn(COutPoint(2eab488e3a7b030303de0d18e357ce17a9fc6b8876705d61076bbe923b2e5fc8, 1), scriptSig=):1509354047:YES:DELETE", - "444d4d871ec35479804f060c733f516908382642ec2dfce6044a59fcadfdcd60": "CTxIn(COutPoint(18e496fe85b61ac9a5fcaec1ef683c7e3fc9bce4a83c883608427ecfb1002fca, 1), scriptSig=):1508866932:YES:FUNDING", - "d49a472c62e9d8105931829fc50ef6c6ce04a230507646ee0eaa615e863ef3a0": "CTxIn(COutPoint(18e496fe85b61ac9a5fcaec1ef683c7e3fc9bce4a83c883608427ecfb1002fca, 1), scriptSig=):1509117071:YES:DELETE", - "78442507441d4524d2493b8568d130415c1eb394adb2fe38d6ffeb199115bc5d": "CTxIn(COutPoint(3df7fb192e21c34da99bdd10c34e58ecaf3f3c37d6b2289f0ffedba5050188cc, 1), scriptSig=):1509312524:YES:DELETE", - "aa4dc9d3b9e74e8c1ffc725b737d07f8a32e43c64907e4bea19e64a86135f08a": "CTxIn(COutPoint(af9f5646ace92f76b3a01b0abe08716a0a7ded64074c2d2e712c93174b9013d1, 1), scriptSig=):1508866932:YES:FUNDING", + "174aaba65982d25a23f437e2a66ec3836146ba7b7ce5b3fe2d5476907f7079d9": "2eab488e3a7b030303de0d18e357ce17a9fc6b8876705d61076bbe923b2e5fc8-1:1509354047:YES:DELETE", + "444d4d871ec35479804f060c733f516908382642ec2dfce6044a59fcadfdcd60": "18e496fe85b61ac9a5fcaec1ef683c7e3fc9bce4a83c883608427ecfb1002fca-1:1508866932:YES:FUNDING", + "d49a472c62e9d8105931829fc50ef6c6ce04a230507646ee0eaa615e863ef3a0": "18e496fe85b61ac9a5fcaec1ef683c7e3fc9bce4a83c883608427ecfb1002fca-1:1509117071:YES:DELETE", + "78442507441d4524d2493b8568d130415c1eb394adb2fe38d6ffeb199115bc5d": "3df7fb192e21c34da99bdd10c34e58ecaf3f3c37d6b2289f0ffedba5050188cc-1:1509312524:YES:DELETE", + "aa4dc9d3b9e74e8c1ffc725b737d07f8a32e43c64907e4bea19e64a86135f08a": "af9f5646ace92f76b3a01b0abe08716a0a7ded64074c2d2e712c93174b9013d1-1:1508866932:YES:FUNDING", } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/importmulti.md b/_includes/devdoc/dash-core/rpcs/rpcs/importmulti.md index 32810d77..de8dfe10 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/importmulti.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/importmulti.md @@ -7,15 +7,14 @@ http://opensource.org/licenses/MIT. ##### ImportMulti {% include helpers/subhead-links.md %} + + {% assign summary_importMulti="imports addresses or scripts (with private keys, public keys, or P2SH redeem scripts) and optionally performs the minimum necessary rescan for all imports." %} {% autocrossref %} -*Added in Bitcoin Core 0.14.0* +*Added in Dash Core 0.12.3 / Bitcoin Core 0.14.0* -{{WARNING_ICON}} **_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} *Requires wallet support. Wallet must be unlocked.* The `importmulti` RPC {{summary_importMulti}} @@ -123,27 +122,27 @@ The `importmulti` RPC {{summary_importMulti}} p: "Optional
(0 or 1)" d: "The error code" -- n: "→ → →
`message`" +- n: "→ → →
`message`" t: "string" p: "Optional
(0 or 1)" d: "The error message" {% enditemplate %} -*Example from Bitcoin Core 0.14.1* +*Example from Dash Core 0.12.3* -Import the address 1NL9w5fP9kX2D9ToNZPxaiwFJCngNYEYJo (giving it a label and scanning the entire block chain) and the scriptPubKey 76a9149e857da0a5b397559c78c98c9d3f7f655d19c68688ac (giving a specific timestamp and label): +Import the address `ycCsAUKsjdmoP4qAXiS1cjYA4ixM48zJWe` (giving it a label and scanning the entire block chain) and the scriptPubKey `76a9146cf5870411edc31ba5630d61c7cddff55b884fda88ac` (giving a specific timestamp and label): {% highlight bash %} -bitcoin-cli importmulti ' +dash-cli importmulti ' [ { - "scriptPubKey" : { "address": "1NL9w5fP9kX2D9ToNZPxaiwFJCngNYEYJo" }, + "scriptPubKey" : { "address": "ycCsAUKsjdmoP4qAXiS1cjYA4ixM48zJWe" }, "timestamp" : 0, "label" : "Personal" }, { - "scriptPubKey" : "76a9149e857da0a5b397559c78c98c9d3f7f655d19c68688ac", + "scriptPubKey" : "76a9146cf5870411edc31ba5630d61c7cddff55b884fda88ac", "timestamp" : 1493912405, "label" : "TestFailure" } @@ -153,18 +152,18 @@ bitcoin-cli importmulti ' Result (scriptPubKey import failed because `internal` was not set to `true`): {% highlight json %} - [ - { - "success": true - }, - { - "success": false, - "error": { +[ + { + "success": true + }, + { + "success": false, + "error": { "code": -8, "message": "Internal must be set for hex scriptPubKey" - } } - ] + } +] {% endhighlight %} *See also* @@ -173,6 +172,4 @@ Result (scriptPubKey import failed because `internal` was not set to `true`): * [ImportAddress][rpc importaddress]: {{summary_importAddress}} * [ImportWallet][rpc importwallet]: {{summary_importWallet}} -{% endcomment %} - {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/importprunedfunds.md b/_includes/devdoc/dash-core/rpcs/rpcs/importprunedfunds.md index 7f4c2631..d3dc8892 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/importprunedfunds.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/importprunedfunds.md @@ -7,15 +7,14 @@ http://opensource.org/licenses/MIT. ##### ImportPrunedFunds {% include helpers/subhead-links.md %} + + {% assign summary_importPrunedFunds="imports funds without the need of a rescan. Meant for use with pruned wallets." %} {% autocrossref %} -*Added in Bitcoin Core 0.13.0* +*Added in Dash Core 0.12.3 / Bitcoin Core 0.13.0* -{{WARNING_ICON}} **_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} *Requires wallet support.* The `importprunedfunds` RPC {{summary_importPrunedFunds}} Corresponding address or script must previously be included in wallet. @@ -52,7 +51,7 @@ outputs or rescan after the point in the blockchain the transaction is included. {% enditemplate %} -*Example from Bitcoin Core 0.13.1* +*Example from Dash Core 0.12.3* {% highlight bash %} bitcoin-cli importprunedfunds "txhex" "txoutproof" @@ -65,6 +64,4 @@ bitcoin-cli importprunedfunds "txhex" "txoutproof" * [ImportPrivKey][rpc importprivkey]: {{summary_importPrivKey}} * [RemovePrunedFunds][rpc removeprunedfunds]: {{summary_removePrunedFunds}} -{% endcomment %} - {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md b/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md index 4763d8af..11a5ce3d 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md @@ -54,6 +54,17 @@ the *spendable* field in the results described below. {% enditemplate %} +*Parameter #4---include unsafe outputs* + +{% itemplate ntpd1 %} +- n: "Include Unsafe" + t: "bool" + p: "Optional
(false or true)" + d: "Include outputs that are not safe to spend because they come from unconfirmed untrusted transactions or unconfirmed replacement transactions (cases where we are less sure that a conflicting transaction won't be mined). Default is `true`" + +{% enditemplate %} + + *Result---the list of unspent outputs* {% itemplate ntpd1 %} @@ -107,11 +118,6 @@ the *spendable* field in the results described below. p: "Required
(exactly 1)" d: "The number of confirmations received for the transaction containing this output" -- n: "→ →
`ps_rounds`" - t: "number (int)" - p: "Required
(exactly 1)" - d: "The number of PrivateSend rounds" - - n: "→ →
`spendable`" t: "bool" p: "Required
(exactly 1)" @@ -122,9 +128,14 @@ the *spendable* field in the results described below. p: "Required
(exactly 1)" d: "*Added in Bitcoin Core 0.13.0*

Set to `true` if the wallet knows how to spend this output. Set to `false` if the wallet does not know how to spend the output. It is ignored if the private keys are available " +- n: "→ →
`ps_rounds`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The number of PrivateSend rounds" + {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* Get all outputs confirmed at least 6 times for a particular address: @@ -132,7 +143,7 @@ address: {% highlight bash %} dash-cli -testnet listunspent 6 99999999 ''' [ - "yTQNnbby2yhxoK1UtL9E5J9epGtkAoFWSm" + "yXGNabkdQ3JZ7LZ9RCnFe5dqhtBA3hVmU8" ] ''' {% endhighlight %} @@ -142,15 +153,15 @@ Result: {% highlight json %} [ { - "txid": "52e34eec71a4cf95c043b76567f55cec1bc293c444810d454a2d05f2a819b5ed", - "vout": 3, - "address": "yTQNnbby2yhxoK1UtL9E5J9epGtkAoFWSm", - "scriptPubKey": "76a9144db791c2388be4716f048be2648bafe1944f787688ac", + "txid": "0e86f58c56648175362443c1ef28e473acb4c4adc1b3f7983deaddfa3a61a4d7", + "vout": 4, + "address": "yXGNabkdQ3JZ7LZ9RCnFe5dqhtBA3hVmU8", + "scriptPubKey": "76a91478149277b5d820b04e60cbf96ff81fd1ccc6533388ac", "amount": 0.01000010, - "confirmations": 113, - "ps_rounds": 4, + "confirmations": 609, "spendable": true, - "solvable": true + "solvable": true, + "ps_rounds": 5 } ] {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md index 2f54f3bd..b0f7f68a 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ##### MasternodeList {% include helpers/subhead-links.md %} + + {% assign summary_masternodeList="returns a list of masternodes in different modes." %} {% autocrossref %} @@ -38,7 +40,7 @@ Mode | Description `protocol` | Print protocol of a masternode (can be additionally filtered, exact match) `pubkey` | Print the masternode (not collateral) public key `rank` | Print rank of a masternode based on current block -`status` | Print masternode status: PRE_ENABLED / ENABLED / EXPIRED / WATCHDOG_EXPIRED / NEW_START_REQUIRED / UPDATE_REQUIRED / POSE_BAN / OUTPOINT_SPENT (can be additionally filtered, partial match) +`status` | Print masternode status: PRE_ENABLED / ENABLED / EXPIRED / SENTINEL_PING_EXPIRED / NEW_START_REQUIRED / UPDATE_REQUIRED / POSE_BAN / OUTPOINT_SPENT (can be additionally filtered, partial match) *Parameter #2---List filter* @@ -65,7 +67,7 @@ Mode | Description {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* Get unfiltered Masternode list in default mode @@ -76,43 +78,44 @@ dash-cli -testnet masternodelist Result: {% highlight json %} { - "6125fc1da46cd2fdd013b1fbb02144367a95feffd379c08064f38de0e3deb80c-1": "NEW_START_REQUIRED", - "a4676419793d232359dfd7240bf1b0635b56f2a16aac4cb57f7e9ba459d50116-1": "ENABLED", - "2b5142cc7b5472cb34a28e7e1fdefe14f0b1ad4cc9fa9cdc68a169423c18c31d-1": "ENABLED", - "4573c2ba5d9d3f8fd2f903cd0f448ee0ad0ff7e20d8f44a14cfce0bdc894c627-1": "ENABLED", - "08c91dfff1f465b70377007426cd5edc37678991c9a864e39072409a5a0fd22a-1": "ENABLED", - "e3a6b7878a7e9413898bb379b323c521676f9d460db17ec3bf42d9ac0c9a432f-1": "ENABLED", - "866d66b88afed15ed1a936b680ace1a99e0ca14d0242bc2983c5fdd2c16c1637-1": "NEW_START_REQUIRED", - "97034d0cfabef04388f3eb1c78a064607f8ed42013ed0fb821361d6592f03338-0": "ENABLED", - "3003df6b886ed4b0cc84453d8034a546da03fc1052c2088b6b38fd84a4f6fa3f-1": "ENABLED", - "61c4696947438861222d7e992a049bfd2ed87f71eb806d8a111c973215141b59-1": "ENABLED", - "ea7e0a87aa823aa65d111ed767a4a02f55b3cd361cbd250908db00822e72fb59-1": "ENABLED", - "f7851e7f670afa3e758d857c48d477b2f3e1ee37f22de2ca4a852f3885d32e6d-1": "EXPIRED", - "f977fba1db0fd32708f0b9488be3806fed6f013a28630cff25ba06abd1f63d72-1": "ENABLED", - "b418a47e8dfbdbb8eb88c1a153bef27dcbdb057eb136b2bb93b439fe74b8c174-1": "ENABLED", - "7c17695bdccc617410164882bd8b5fb7bf4f5a3dceb0a7476800e161cba1c57f-1": "NEW_START_REQUIRED", - "547a86612325ff23945b052a023537aaa68140920143bbf42bd10aec33348487-1": "ENABLED", - "2c2cf299fdca7c07f820b1bc46bd786a1d57ac6c3d2e76ac24a5ba7641066488-0": "ENABLED", - "75fdd0e1dea139333b71f06f3f2a7440629b3cd106e655ae50b56df7d9aa788b-1": "ENABLED", - "320f83802b37f4bbf881cb565bb6e0884615d6b022a81a837cd3716f8dbcec93-0": "ENABLED", - "049f30949af536b0a866f7d39d05447405565160399d12b4f0796936e8b9b9a7-1": "ENABLED", - "0512f77ebceaf288386e9a050e3c80652c7bfb6e993659ded2dff43eae6904ac-1": "EXPIRED", - "94ce1c802de83977fbed283806a1ebef2dcb5539ce9b6c5627c5ac1d844b48bb-1": "ENABLED", - "b0320c1eff10ccb5e26086017a09e77dacb30fdcafccb3d98db3e5b610b9f1bd-1": "ENABLED", - "2eab488e3a7b030303de0d18e357ce17a9fc6b8876705d61076bbe923b2e5fc8-1": "ENABLED", - "18e496fe85b61ac9a5fcaec1ef683c7e3fc9bce4a83c883608427ecfb1002fca-1": "ENABLED", - "2fb6c98b37f1fce1c35b556e5f175dd77939f08c1687ad468d37fc677d297dd6-1": "ENABLED", - "1e2502158eb22e53c07dbae483e89ebd7fb27e2c0412147d4d376b99df1d94db-1": "ENABLED", - "cd0ee654eb517b8b5c36cfa09e1e5344d1766dc71406a112564636b7aef8c9db-1": "ENABLED", - "4222505288507e0f1abc32f0323cce1d6c4d22c8e785adb0cf8075b70ae92ddf-1": "EXPIRED", - "9f0cd683f88f79f757c6d68515dfb2b9fa5b65239b3c5f4487916aa233b9a4e0-1": "ENABLED", - "2102df0dec504b4bd3a1e80b320c5205fe1a8b2fb1366be83c407f048fd62ce6-1": "ENABLED", - "c6585f4ba88875eb2edc376b9ae24b74fd8c0ef89288923cf16a8fe2787b7ce8-1": "ENABLED", - "b454dd0efc19657f8d56a750385b90ebfb53dce5182a21238b225d6cbb3307f0-1": "NEW_START_REQUIRED", - "400f193988092f779104bab20eec042a2686a9903b1bbc84ece7539fd41103f3-1": "ENABLED", - "a087bcb1c2f7fc71f081f2d8eeeeb4928ae21af2087c3d77ce5a5c4e88ec26f4-1": "ENABLED", - "100a6ef1f9c660cfc6e47dab9905d7ca2a435f1870aba46847eae6503e2858fd-1": "ENABLED", - "bbbe50330423337a13501e6273663884f7cb9b475f6d5cf090ba3dabc611d9fe-1": "ENABLED" + "f6c83fd96bfaa47887c4587cceadeb9af6238a2c86fe36b883c4d7a6867eab0f-1": "ENABLED", + "2ff986f401bfc16ea42b0a402bff3a30cd5b1a3c14dc65c59612c20b6323e010-1": "ENABLED", + "54754314335419cc04ef09295ff7765c8062a6123486aed55fd7e9b04f300b13-0": "NEW_START_REQUIRED", + "a4676419793d232359dfd7240bf1b0635b56f2a16aac4cb57f7e9ba459d50116-1": "SENTINEL_PING_EXPIRED", + "f36420fff251df194de0251b70491df663e3dbed0c678f366a038b549c928c17-1": "NEW_START_REQUIRED", + "66eddd00e5927d0a03437d5b8a2f15367c978ef7951c80ae1608a45b1bf64318-1": "ENABLED", + "488cae91a9322ea3bb94ac783cce0d151d51529ec90a17e1c75bff381cdc671c-1": "ENABLED", + "c33926bb3115a6b6bbcc13989837743d9f2e36dc47886b687e3b8309361b8c2d-1": "NEW_START_REQUIRED", + "04390dd7fb4112bd4c2ab70906d8347749a30749fb18e80ba83c37500c02d12d-1": "ENABLED", + "e3a6b7878a7e9413898bb379b323c521676f9d460db17ec3bf42d9ac0c9a432f-1": "SENTINEL_PING_EXPIRED", + "7d5cc1fb5146d9a53b53c36107f46a6d2b7b110aa146628feeb1b5c2874c0a31-1": "ENABLED", + "9c3d7033d670f3e4c0275069c835ab4670b0670cae23b509f509698dee4c0f34-1": "ENABLED", + "866d66b88afed15ed1a936b680ace1a99e0ca14d0242bc2983c5fdd2c16c1637-1": "ENABLED", + "1165254749f75622800ccca026e7d1a47c2bcf3b9b9a4fa7fbe0bfcb56fa2237-1": "ENABLED", + "037735d68b6097a6ebd1e507a1bc39582cf4d0dcc96d4df0ee4f7c31c2fe2d37-1": "ENABLED", + "6ba3614f2832800b9cbe01b90c7d50d10eca94d91a5ce839597954ff5db39038-1": "ENABLED", + "7b6cfdafbc5f13e269e07310974de97e06d5fb0ee8125926eab500e0f2b9263c-1": "ENABLED", + "34c3b5e1b891a17009cc9d7f207c1d6cb818ed6a303520f55917821c5ed1a63f-1": "ENABLED", + "a7cada7173593b82b0b3b4c3ce4b316a1a3afbf94e7f218d476833fe2d022546-1": "ENABLED", + "386ac02fae1ac02c57253dddce93a2f492266e9d685ab69521c5807ae381b947-1": "ENABLED", + "3d64bd65cb84b935278420de3673cba33470a1e1996c4debfccb5d722254404c-1": "ENABLED", + "8e5b1a4ca31b136c2ac523a488799b11e3b78e1794e9e88055ead3c6ff6cad4d-1": "NEW_START_REQUIRED", + "9731e9da039780fd8c195e5cef87649bcd31e50cf0d2573e15ae57e948bff74d-1": "NEW_START_REQUIRED", + "c41fe473ee643b95f0583c3a2839fe4492dda7fc3b8de6fac00b206204cfa04f-1": "NEW_START_REQUIRED", + "a175efa6adce750f620e0e2b65c5336bc777668c21ab61c6d25d9f3492101551-1": "NEW_START_REQUIRED", + "4489b5a53933f2525db033bdb7bd0fa6d4db7c4b7e6a2bfaf61c16a5073b9f51-1": "ENABLED", + "aab5986b470495c1843f32ed7c2dce24eae5fc38899f594364cfbde1622b3d52-0": "NEW_START_REQUIRED", + "f45e6b24faa0ab68cd8e32936481be744851f5223dfe914fa5615779f9919c54-0": "SENTINEL_PING_EXPIRED", + "61c4696947438861222d7e992a049bfd2ed87f71eb806d8a111c973215141b59-1": "NEW_START_REQUIRED", + "ea7e0a87aa823aa65d111ed767a4a02f55b3cd361cbd250908db00822e72fb59-1": "SENTINEL_PING_EXPIRED", + "e2275d72303d0a78f1be2cd622f264ae52f66384f3bf75bac5d2d997a761235e-1": "ENABLED", + "fa77ae59f7c973da2d0fea1c96b24d2ceb0dc3054e4baabc0475d9c6404a625e-1": "ENABLED", + "3dadf953a250899164f0e75050d2cad2ae159c521d902168f4cead9243c79661-0": "NEW_START_REQUIRED", + "1466e0a5b65428465ae00bc476ff4955a6d2f292b900f720a67ea10d90f90462-1": "SENTINEL_PING_EXPIRED", + "66ab709c4132623279994a86af13e033b198e8a5b76290b288f314da94d80168-0": "NEW_START_REQUIRED", + "6bd4437d523e7440fd3578be22b3e5d2bdabb89ae70f2161bdc1a2e8dbff656b-1": "ENABLED", + "1b8a9b5f723e6fa1c3cb72f7d0160f3401886186cf972b3e44d3ad7bc995e370-1": "ENABLED", + } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/preciousblock.md b/_includes/devdoc/dash-core/rpcs/rpcs/preciousblock.md index 3c0d25f3..9057814e 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/preciousblock.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/preciousblock.md @@ -7,15 +7,13 @@ http://opensource.org/licenses/MIT. ##### PreciousBlock {% include helpers/subhead-links.md %} + + {% assign summary_preciousBlock="treats a block as if it were received before others with the same work." %} {% autocrossref %} -*Added in Bitcoin Core 0.14.0* - -**_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} +*Added in Dash Core 0.12.3 / Bitcoin Core 0.14.0* The `preciousblock` RPC {{summary_preciousBlock}} A later `preciousblock` call can override the effect of an earlier one. The effects of `preciousblock` are not retained across restarts. @@ -39,15 +37,13 @@ The `preciousblock` RPC {{summary_preciousBlock}} A later `preciousblock` call c {% enditemplate %} -*Example from Bitcoin Core 0.14.1* +*Example from Dash Core 0.12.3* {% highlight bash %} -bitcoin-cli preciousblock 000000000000000001517a0bac70b8cd6f27ee\ -1b50a8f12bf606ea6fb6d561cd +dash-cli preciousblock 00000000034d77e287b63922a94f12e8c4ab9e\ +1d8056060fd51f6153ea5dc757 {% endhighlight %} -Result (no output from `bitcoin-cli` because result is set to `null`). - -{% endcomment %} +Result (no output from `dash-cli` because result is set to `null`). {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/pruneblockchain.md b/_includes/devdoc/dash-core/rpcs/rpcs/pruneblockchain.md index 6fec51d4..9d8050ad 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/pruneblockchain.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/pruneblockchain.md @@ -7,15 +7,13 @@ http://opensource.org/licenses/MIT. ##### PruneBlockChain {% include helpers/subhead-links.md %} + + {% assign summary_pruneBlockChain="prunes the blockchain up to a specified height or timestamp." %} {% autocrossref %} -*Added in Bitcoin Core 0.14.0* - -**_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} +*Added in Dash Core 0.12.3 / Bitcoin Core 0.14.0* The `pruneblockchain` RPC {{summary_pruneBlockChain}} The `-prune` option needs to be enabled (disabled by default). @@ -39,10 +37,10 @@ The `pruneblockchain` RPC {{summary_pruneBlockChain}} The `-prune` option needs {% enditemplate %} -*Examples from Bitcoin Core 0.14.1* +*Examples from Dash Core 0.12.3* {% highlight bash %} -bitcoin-cli pruneblockchain 413555 +dash-cli pruneblockchain 413555 {% endhighlight %} Result: @@ -55,6 +53,4 @@ Result: * [ImportPrunedFunds][rpc importprunedfunds]: {{summary_importPrunedFunds}} -{% endcomment %} - {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/removeprunedfunds.md b/_includes/devdoc/dash-core/rpcs/rpcs/removeprunedfunds.md index c93b44e1..e4bdd83f 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/removeprunedfunds.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/removeprunedfunds.md @@ -7,15 +7,14 @@ http://opensource.org/licenses/MIT. ##### RemovePrunedFunds {% include helpers/subhead-links.md %} + + {% assign summary_removePrunedFunds="deletes the specified transaction from the wallet. Meant for use with pruned wallets and as a companion to importprunedfunds." %} {% autocrossref %} -*Added in Bitcoin Core 0.13.0* +*Added in Dash Core 0.12.3 / Bitcoin Core 0.13.0* -{{WARNING_ICON}} **_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} *Requires wallet support.* The `removeprunedfunds` RPC {{summary_removePrunedFunds}} This will effect wallet balances. @@ -40,11 +39,11 @@ The `removeprunedfunds` RPC {{summary_removePrunedFunds}} This will effect walle {% enditemplate %} -*Example from Bitcoin Core 0.13.1* +*Example from Dash Core 0.12.3* {% highlight bash %} -bitcoin-cli removeprunedfunds a8d0c0184dde994a09ec054286f1ce581b\ -ebf46446a512166eae7628734ea0a5 +dash-cli removeprunedfunds bb7daff525b83fa6a847ab50bf7f8f14d6\ +22761a19f69157b362ef3f25bda687 {% endhighlight %} (Success: no result displayed.) @@ -54,6 +53,4 @@ ebf46446a512166eae7628734ea0a5 * [ImportPrivKey][rpc importprivkey]: {{summary_importPrivKey}} * [ImportPrunedFunds][rpc importprunedfunds]: {{summary_importPrunedFunds}} -{% endcomment %} - {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/setbip69enabled.md b/_includes/devdoc/dash-core/rpcs/rpcs/setbip69enabled.md new file mode 100644 index 00000000..c6dd21c5 --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/setbip69enabled.md @@ -0,0 +1,48 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/setbip69enabled.md" %} + +##### SetBIP69Enabled +{% include helpers/subhead-links.md %} + +{% assign summary_setBIP69Enabled="enables or disables BIP69 input/output sorting (regtest network only)" %} + + + +{% autocrossref %} + +The `setbip69enabled` RPC {{summary_setBIP69Enabled}} + +*Parameter #1---enable/disable BIP69 sorting (regtest only)* + +{% itemplate ntpd1 %} +- n: "`enable`" + t: "boolean" + p: "Required
(exactly 1)" + d: "Set to true to turn on BIP69 sorting, false to turn off." + +{% enditemplate %} + +*Result---`null` or error on failure* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "null" + p: "Required
(exactly 1)" + d: "JSON `null`. The JSON-RPC error field will be set only if you entered an invalid parameter" + +{% enditemplate %} + +*Example from Dash Core 0.12.3* + +{% highlight bash %} +dash-cli -testnet setbip69enabled true +{% endhighlight %} + +Result (no output from `dash-cli` because result is set to `null`). + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/setgenerate.md b/_includes/devdoc/dash-core/rpcs/rpcs/setgenerate.md index 7b8bcdf4..9de1db84 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/setgenerate.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/setgenerate.md @@ -7,13 +7,15 @@ http://opensource.org/licenses/MIT. ##### SetGenerate {% include helpers/subhead-links.md %} -{% assign summary_setGenerate="enables or disables hashing to attempt to find the next block." %} +{% assign summary_setGenerate="was removed in Dash Core 0.12.3." %} + + {% autocrossref %} *Requires wallet support.* -*Removed in Bitcoin Core 0.13.0.* +**_Removed in Dash Core 0.12.3 / Bitcoin Core 0.13.0._** The `setgenerate` RPC {{summary_setGenerate}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/signmessagewithprivkey.md b/_includes/devdoc/dash-core/rpcs/rpcs/signmessagewithprivkey.md index c0388145..234da417 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/signmessagewithprivkey.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/signmessagewithprivkey.md @@ -9,19 +9,18 @@ http://opensource.org/licenses/MIT. {% assign summary_signMessageWithPrivKey="signs a message with a given private key." %} + + {% autocrossref %} -*Added in Bitcoin Core 0.13.0* +*Added in Dash Core 0.12.3 / Bitcoin Core 0.13.0* -{{WARNING_ICON}} **_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} The `signmessagewithprivkey` RPC {{summary_signMessageWithPrivKey}} *Parameter #1---the private key to sign with* {% itemplate ntpd1 %} -- n: "Privat Key" +- n: "Private Key" t: "string (base58)" p: "Required
(exactly 1)" d: "The private key to sign the message with encoded in base58check using wallet import format (WIF)" @@ -44,23 +43,23 @@ The `signmessagewithprivkey` RPC {{summary_signMessageWithPrivKey}} - n: "`result`" t: "string (base64)" p: "Required
(exactly 1)" - d: "The signature of the message, encoded in base64. Note that Bitcoin Core before 0.10.0 creates signatures with random *k* values, so each time you sign the same message, it will create a different signature" + d: "The signature of the message, encoded in base64." {% enditemplate %} -*Example from Bitcoin Core 0.13.1* +*Example from Dash Core 0.12.3* Sign a the message "Hello, World!" using the following private key: {% highlight bash %} -bitcoin-cli signmessagewithprivkey 5HpHagT65TZzG1PH3CSu63k8DbpvD\ -8s5ip4nEB3kEsreKamq6aB "Hello, World!" +dash-cli signmessagewithprivkey cNKbZBqUCjuBRSnAJWwFWxKESJ5Lw\ +G4uxBSJ1UeBNBGVRupFKr6S "Hello, World!" {% endhighlight %} Result: {% highlight text %} -G+ZauMFgQExAJRKZSldbAVEaZo4i0p2AVivbFASo50PkUnynAMDUiNMVdXDlpYMWvatxCmYmLn8C9zygPRn3Y1c= +IBx8jxFjutPlcZcFdQPlA2n/B4yTrYhH43qYJURKRj7LWhSD0ERE/nnRLOnXi/gwULUcqfqOKqnqkSvuJjlgEvc= {% endhighlight %} *See also* @@ -68,6 +67,4 @@ G+ZauMFgQExAJRKZSldbAVEaZo4i0p2AVivbFASo50PkUnynAMDUiNMVdXDlpYMWvatxCmYmLn8C9zyg * [SignMessage][rpc signmessage]: {{summary_signMessage}} * [VerifyMessage][rpc verifymessage]: {{summary_verifyMessage}} -{% endcomment %} - {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/validateaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/validateaddress.md index 35b8ce6d..b70a942c 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/validateaddress.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/validateaddress.md @@ -101,6 +101,11 @@ The `validateaddress` RPC {{summary_validateAddress}} p: "Optional
(0 or 1)" d: "*Deprecated: will be removed in a later version of Bitcoin Core*

The account this address belong to. May be an empty string for the default account. Only returned if the address belongs to the wallet" +- n: "→
`timestamp`" + t: "number (int)" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.12.3*

The creation time of the key if available in seconds since epoch (Jan 1 1970 GMT)" + - n: "→
`hdkeypath`" t: "string" p: "Optional
(0 or 1)" @@ -113,7 +118,7 @@ The `validateaddress` RPC {{summary_validateAddress}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* Validate the following P2PKH address from the wallet: @@ -133,7 +138,8 @@ Result: "isscript": false, "pubkey": "02eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29", "iscompressed": true, - "account": "Test" + "account": "Msig 1", + "timestamp": 0 } {% endhighlight %} @@ -162,6 +168,7 @@ Result: ], "sigsrequired": 2, "account": "test account" + "timestamp": 0 } {% endhighlight %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index 56810035..b6bbaa37 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -47,7 +47,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_getChainTips="returns information about the highest-height block (tip) of each local block chain." %} {% assign summary_getConnectionCount="returns the number of connections to other nodes." %} {% assign summary_getDifficulty="returns the proof-of-work difficulty as a multiple of the minimum difficulty." %} -{% assign summary_getGenerate="returns if the server is set to generate coins or not." %} +{% assign summary_getGenerate="was removed in Dash Core 0.12.3." %} {% assign summary_getGovernanceInfo="returns an object containing governance parameters." %} {% assign summary_getHashesPerSec="was removed in Bitcoin Core 0.11.0 and is not part of Dash." %} {% assign summary_getInfo="prints various information about the node and the network." %} @@ -123,8 +123,9 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_sendToAddress="spends an amount to a given address." %} {% assign summary_sentinelPing="sends a Sentinel Ping to the network." %} {% assign summary_setAccount="puts the specified address in the given account." %} +{% assign summary_setBIP69Enabled="enables or disables BIP69 input/output sorting (regtest network only)" %} {% assign summary_setBan="attempts add or remove a IP/Subnet from the banned list." %} -{% assign summary_setGenerate="enables or disables hashing to attempt to find the next block." %} +{% assign summary_setGenerate="was removed in Dash Core 0.12.3." %} {% assign summary_setNetworkActive="disables/enables all P2P network activity." %} {% assign summary_setTxFee="sets the transaction fee per kilobyte paid by transactions created by this wallet." %} {% assign summary_signMessage="signs a message with the private key of an address." %} diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index 5be65729..b3ba1ee9 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -427,4 +427,4 @@ NOT IN DASH {% assign WARNING="![Warning icon](/img/icons/icon_warning.svg) **Warning:**" %} {% assign WARNING_ICON="![Warning icon](/img/icons/icon_warning.svg)" %} -{% assign reindexNote="Note: if you begin using `txindex=1` after downloading the block chain, you must rebuild your indexes by starting Bitcoin Core with the option `-reindex`. This may take several hours to complete, during which time your node will not process new blocks or transactions. This reindex only needs to be done once." %} +{% assign reindexNote="Note: if you begin using `txindex=1` after downloading the block chain, you must rebuild your indexes by starting Dash Core with the option `-reindex`. This may take several hours to complete, during which time your node will not process new blocks or transactions. This reindex only needs to be done once." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index b38b572e..f62e2f07 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -77,7 +77,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain GetBlockChainInfo Y - + Updated in 0.12.3.0 Blockchain @@ -124,20 +124,20 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain GetMemPoolAncestors - N - N/A + Y + 0.12.3.0+ Blockchain GetMemPoolDescendants - N - N/A + Y + 0.12.3.0+ Blockchain GetMemPoolEntry - N - N/A + Y + 0.12.3.0+ Blockchain @@ -178,14 +178,14 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain PreciousBlock - N - N/A + Y + 0.12.3.0+ Blockchain PruneBlockChain - N - N/A + Y + 0.12.3.0+ Blockchain @@ -203,7 +203,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Control Debug Y - + Updated in 0.12.3.0 Control @@ -227,7 +227,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash GetGovernanceInfo Y - Updated in 0.12.2.2 + Updated in 0.12.3.0 Dash @@ -245,13 +245,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash GObject Y - Updated in 0.12.3 + Updated in 0.12.3.0 Dash Masternode Y - Updated in 0.12.3 + Updated in 0.12.3.0 Dash @@ -263,7 +263,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash MasternodeList Y - + Updated in 0.12.3.0 Dash @@ -287,7 +287,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash Spork Y - Updated in 0.12.3 + Dash @@ -299,31 +299,31 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Generating Generate Y - + Updated in 0.12.3.0 Generating GenerateToAddress - N - N/A - - - Generating - GetGenerate - Y - - - - Generating - SetGenerate Y - + 0.12.3.0+ + + + Removed + GetGenerate + N + Removed in 0.12.3.0 + + + Removed + SetGenerate + N + Removed in 0.12.3.0 Mining GetBlockTemplate Y - + Updated in 0.12.3.0 Mining @@ -371,7 +371,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Network GetAddedNodeInfo Y - + Updated in 0.12.3.0 Network @@ -389,7 +389,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Network GetNetworkInfo Y - + Updated in 0.12.3.0 Network @@ -425,7 +425,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Rawtransactions CreateRawTransaction Y - + Updated in 0.12.3.0 Rawtransactions @@ -443,13 +443,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Rawtransactions FundRawTransaction Y - + Updated in 0.12.3.0 Rawtransactions GetRawTransaction Y - + Updated in 0.12.3.0 Rawtransactions @@ -491,7 +491,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Util EstimatePriority Y - + Deprecated in 0.12.3.0 Util @@ -503,19 +503,25 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Util EstimateSmartPriority Y - + Deprecated in 0.12.3.0 Util GetMemoryInfo - N - N/A + Y + 0.12.3.0+ + + + Util + SetBIP69Enabled + Y + 0.12.3.0+ Util ValidateAddress Y - + Updated in 0.12.3.0 Util @@ -658,8 +664,8 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ImportMulti - N - N/A + Y + 0.12.3.0+ Wallet @@ -670,8 +676,8 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ImportPrunedFunds - N - N/A + Y + 0.12.3.0+ Wallet @@ -749,7 +755,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ListUnspent Y - + Updated in 0.12.3.0 Wallet @@ -766,8 +772,8 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet RemovePrunedFunds - N - N/A + Y + 0.12.3.0+ Wallet @@ -808,8 +814,8 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet SignMessageWithPrivKey - N - N/A + Y + 0.12.3.0+ Wallet diff --git a/_includes/references.md b/_includes/references.md index 4674464d..d81aa5f1 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -170,6 +170,7 @@ http://opensource.org/licenses/MIT. [rpc sendtoaddress]: /en/developer-reference#sendtoaddress [rpc setaccount]: /en/developer-reference#setaccount [rpc setban]: /en/developer-reference#setban +[rpc setbip69enabled]: /en/developer-reference#setbip69enabled [rpc setgenerate]: /en/developer-reference#setgenerate [rpc setnetworkactive]: /en/developer-reference#setnetworkactive [rpc settxfee]: /en/developer-reference#settxfee diff --git a/en/developer-reference.md b/en/developer-reference.md index b21f28e0..a17965b5 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -300,6 +300,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/setban.md %} +{% include devdoc/dash-core/rpcs/rpcs/setbip69enabled.md %} + {% include devdoc/dash-core/rpcs/rpcs/setgenerate.md %} {% include devdoc/dash-core/rpcs/rpcs/setnetworkactive.md %} From f1aa6f2312aff3be1be8fc03438e9a05aaff5fa2 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 1 Mar 2018 16:00:56 -0500 Subject: [PATCH 09/38] content - RPC updates - GetWalletInfo, PrivateSend, GetRawMempool --- .../devdoc/dash-core/rpcs/quick-reference.md | 6 +- .../dash-core/rpcs/rpcs/getrawmempool.md | 94 +++++++++++++------ .../dash-core/rpcs/rpcs/getwalletinfo.md | 8 +- .../devdoc/dash-core/rpcs/rpcs/privatesend.md | 2 + _includes/layout/base/rpc-table.html | 6 +- 5 files changed, 78 insertions(+), 38 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index a44e38ed..2aa3a143 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -110,7 +110,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetMemPoolDescendants][rpc getmempooldescendants]: {{summary_getMemPoolDescendants}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [GetMemPoolEntry][rpc getmempoolentry]: {{summary_getMemPoolEntry}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [GetMemPoolInfo][rpc getmempoolinfo]: {{summary_getMemPoolInfo}} {{UPDATED0_12_0}} -* [GetRawMemPool][rpc getrawmempool]: {{summary_getRawMemPool}} {{UPDATED0_13_0}} +* [GetRawMemPool][rpc getrawmempool]: {{summary_getRawMemPool}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} * [GetSpentInfo][rpc getspentinfo]: {{summary_getSpentInfo}} {{DASH_NEW0_12_1}} * [GetTxOut][rpc gettxout]: {{summary_getTxOut}} * [GetTxOutProof][rpc gettxoutproof]: {{summary_getTxOutProof}} {{NEW0_11_0}} @@ -150,7 +150,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}} * [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_12_3}} * [MnSync][rpc mnsync]: {{summary_mnSync}} -* [PrivateSend][rpc privatesend]: {{summary_privateSend}} +* [PrivateSend][rpc privatesend]: {{summary_privateSend}} {{DASH_UPDATED0_12_3}} * [SentinelPing][rpc sentinelping]: {{summary_sentinelPing}} * [Spork][rpc spork]: {{summary_spork-rpc}} * [VoteRaw][rpc voteraw]: {{summary_voteRaw}} @@ -264,7 +264,7 @@ default. * [GetReceivedByAddress][rpc getreceivedbyaddress]: {{summary_getReceivedByAddress}} * [GetTransaction][rpc gettransaction]: {{summary_getTransaction}} {{UPDATED0_12_0}} * [GetUnconfirmedBalance][rpc getunconfirmedbalance]: {{summary_getUnconfirmedBalance}} -* [GetWalletInfo][rpc getwalletinfo]: {{summary_getWalletInfo}} +* [GetWalletInfo][rpc getwalletinfo]: {{summary_getWalletInfo}} {{DASH_UPDATED0_12_3}} * [ImportAddress][rpc importaddress]: {{summary_importAddress}} * [ImportElectrumWallet][rpc importelectrumwallet]: {{summary_importElectrumWallet}} {{DASH_NEW0_12_1}} * [ImportMulti][rpc importmulti]: {{summary_importMulti}} {{DASH_NEW0_12_3}} {{NEW0_14_0}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawmempool.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawmempool.md index a95dc1f7..e5224288 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawmempool.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawmempool.md @@ -9,6 +9,8 @@ http://opensource.org/licenses/MIT. {% assign summary_getRawMemPool="returns all transaction identifiers (TXIDs) in the memory pool as a JSON array, or detailed information about each transaction in the memory pool as a JSON object." %} + + {% autocrossref %} The `getrawmempool` RPC {{summary_getRawMemPool}} @@ -101,6 +103,21 @@ The `getrawmempool` RPC {{summary_getRawMemPool}} p: "Required
(exactly 1)" d: "*Added in Bitcoin Core 0.12.0*

The modified fees (see `modifiedfee` above) of in-mempool descendants (including this one)" +- n: "→ →
`ancestorcount`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "*Added in Dash Core 0.12.3 / Bitcoin Core 0.13.0*

The number of in-mempool ancestor transactions (including this one)" + +- n: "→ →
`ancestorsize`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "*Added in Dash Core 0.12.3 / Bitcoin Core 0.13.0*

The size of in-mempool ancestors (including this one)" + +- n: "→ →
`ancestorfees`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "*Added in Dash Core 0.12.3 / Bitcoin Core 0.13.0*

The modified fees (see `modifiedfee` above) of in-mempool ancestors (including this one)" + - n: "→ →
`depends`" t: "array" p: "Required
(exactly 1)" @@ -111,28 +128,19 @@ The `getrawmempool` RPC {{summary_getRawMemPool}} p: "Optional (0 or more)" d: "The TXIDs of any unconfirmed transactions this transaction depends upon, encoded as hex in RPC byte order" +- n: "→ →
`instantsend`" + t: "bool" + p: "Required
(exactly 1)" + d: "*Added in Dash Core 0.12.3*

Set to `true` for transactions broadcast via the `ix` message (InstantSend lock requested). Set to `false` for standard (non-InstantSend) transactions" + +- n: "→ →
`instantlock`" + t: "bool" + p: "Required
(exactly 1)" + d: "*Added in Dash Core 0.12.3*

Set to `true` for locked InstantSend transactions (masternode quorum has locked the transaction inputs via `txlvote` messages). Set to `false` if the masternodes have not approved the InstantSend transaction" + {% enditemplate %} -*Changes from Bitcoin - Following items not present in Dash result* - -{% itemplate ntpd1 %} -- n: "→ TXID→
`ancestorcount`" - t: "number (int)" - p: "Required
(exactly 1)" - d: "*Added in Bitcoin Core 0.13.0*

The number of in-mempool ancestor transactions (including this one)" - -- n: "→ TXID→
`ancestorsize`" - t: "number (int)" - p: "Required
(exactly 1)" - d: "*Added in Bitcoin Core 0.13.0*

The size of in-mempool ancestors (including this one)" - -- n: "→ TXID→
`ancestorfees`" - t: "number (int)" - p: "Required
(exactly 1)" - d: "*Added in Bitcoin Core 0.13.0*

The modified fees (see `modifiedfee` above) of in-mempool ancestors (including this one)" -{% enditemplate %} - -*Examples from Dash Core 0.12.2* +*Examples from Dash Core 0.12.3* The default (`false`): @@ -158,20 +166,44 @@ Result: {% highlight json %} { - "286b3ec21e6ce5463fc712c98d86e02353525e09452113836651f3f91e562354": { - "size": 225, - "fee": 0.00000225, - "modifiedfee": 0.00000225, - "time": 1507735322, - "height": 7940, + "8fd1440ed74d3739aa4e1700e9b2fdb32bc5c138fe79dd319f965f67339eb1ce": { + "size": 372, + "fee": 0.00020000, + "modifiedfee": 0.00020000, + "time": 1519928121, + "height": 83907, + "startingpriority": 2224190635.564103, + "currentpriority": 2224190635.564103, + "descendantcount": 2, + "descendantsize": 598, + "descendantfees": 20226, + "ancestorcount": 1, + "ancestorsize": 372, + "ancestorfees": 20000, + "depends": [ + ], + "instantsend": true, + "instantlock": true + }, + "2d914d77305dd968bbd67aeb8604cf7e9d66a7df58bf5216724db69a54000f40": { + "size": 226, + "fee": 0.00000226, + "modifiedfee": 0.00000226, + "time": 1519928256, + "height": 83907, "startingpriority": 0, "currentpriority": 0, - "descendantcount": 4, - "descendantsize": 901, - "descendantfees": 902, + "descendantcount": 1, + "descendantsize": 226, + "descendantfees": 226, + "ancestorcount": 2, + "ancestorsize": 598, + "ancestorfees": 20226, "depends": [ - "2aacf53e0e15d3b4d778837792c7b6bd298edd3c41a0608586bdec41adcfe7c4" - ] + "8fd1440ed74d3739aa4e1700e9b2fdb32bc5c138fe79dd319f965f67339eb1ce" + ], + "instantsend": false, + "instantlock": false } } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getwalletinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getwalletinfo.md index f4754ec0..0f945f96 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getwalletinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getwalletinfo.md @@ -37,6 +37,11 @@ The `getwalletinfo` RPC {{summary_getWalletInfo}} p: "Required
(exactly 1)" d: "The total confirmed balance of the wallet. The same as returned by the `getbalance` RPC with default parameters" +- n: "→
`privatesendbalance`" + t: "number (dash)" + p: "Required
(exactly 1)" + d: "*Added in Dash Core 0.12.3*

The total PrivateSend balance of the wallet" + - n: "→
`unconfirmed_balance`" t: "number (dash)" p: "Required
(exactly 1)" @@ -109,7 +114,7 @@ The `getwalletinfo` RPC {{summary_getWalletInfo}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* {% highlight bash %} dash-cli -testnet getwalletinfo @@ -121,6 +126,7 @@ Result: { "walletversion": 61000, "balance": 3000.00000000, + "privatesend_balance": 413.20413200, "unconfirmed_balance": 10.10000000, "immature_balance": 11.25000000, "txcount": 267, diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/privatesend.md b/_includes/devdoc/dash-core/rpcs/rpcs/privatesend.md index ff886173..bd303a9b 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/privatesend.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/privatesend.md @@ -11,6 +11,8 @@ http://opensource.org/licenses/MIT. {% autocrossref %} +As of Dash Core 0.12.3, client-side mixing is not supported on masternodes. + The `privatesend` RPC {{summary_privateSend}} {% itemplate ntpd1 %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index f62e2f07..f6d74752 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -149,7 +149,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain GetRawMemPool Y - + Updated in 0.12.3.0 Blockchain @@ -275,7 +275,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash PrivateSend Y - + Updated in 0.12.3.0 Dash @@ -647,7 +647,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet GetWalletInfo Y - + Updated in 0.12.3.0 Wallet From 6fb8a24b63695d100e09312dcd79fa779fb7525f Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 12 Mar 2018 12:54:27 -0400 Subject: [PATCH 10/38] [Content] - P2P - Deprecate count in MnGet (#41) --- _includes/devdoc/ref_p2p_networking.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 14a6ecd3..092f83dd 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -2307,19 +2307,23 @@ Masternode Ping Message {% autocrossref %} The `mnget` message requests masternode payment sync. The response to an -`mnget` message is `mnw` message inventories (up to the number asked for in the -request). Masternodes ignore this request if they are not fully synced. +`mnget` message is `mnw` message inventories. Masternodes ignore this request if +they are not fully synced. + +In protocol versions <=70208, the `mnget` message has a payload consisting of an +integer value requesting a specific number of payment votes. In protocol versions +>70208, the `mnget` message has no payload. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 4 | nMnCount | int | Required | Number of masternode payment votes to request +| 4 | nMnCount | int | Deprecated | Number of masternode payment votes to request

Deprecated in Dash Core 0.12.3 {% highlight text %} Note: Dash Core limits how frequently a masternode payment sync can be requested. Frequent requests will result in the node being banned. {% endhighlight %} -The following annotated hexdump shows a `mnget` message. (The +The following annotated hexdump shows a pre-0.12.3 `mnget` message. (The message header has been omitted.) {% highlight text %} From 267c882abf297938d7a6617be39df3b7a4bef634 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 12 Mar 2018 15:10:19 -0400 Subject: [PATCH 11/38] content - RPC - MasternodeList update - Add new modes - Update example - Related to #46 --- .../dash-core/rpcs/rpcs/masternodelist.md | 160 +++++++++++++----- 1 file changed, 121 insertions(+), 39 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md index b0f7f68a..d51aa6ac 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md @@ -25,14 +25,16 @@ The `masternodelist` RPC {{summary_masternodeList}} {% enditemplate %} -*Mode Options* +*Mode Options (Default=json)* Mode | Description --- | --- | --- | `activeseconds` | Print number of seconds masternode recognized by the network as enabled (since latest issued \"masternodestart/start-many/start-alias\") `addr` | Print ip address associated with a masternode (can be additionally filtered, partial match) +`daemon` | Print daemon version of a masternode (can be additionally filtered, exact match) `full` | Print info in format 'status protocol payee lastseen activeseconds lastpaidtime lastpaidblock IP' (can be additionally filtered, partial match) `info` | Print info in format 'status protocol payee lastseen activeseconds sentinelversion sentinelstate IP' (can be additionally filtered, partial match) +`json` (Default) | Print info in JSON format (can be additionally filtered, partial match) `lastpaidblock` | Print the last block height a node was paid on the network `lastpaidtime` | Print the last time a node was paid on the network `lastseen` | Print timestamp of when a masternode was last seen on the network @@ -40,6 +42,7 @@ Mode | Description `protocol` | Print protocol of a masternode (can be additionally filtered, exact match) `pubkey` | Print the masternode (not collateral) public key `rank` | Print rank of a masternode based on current block +`sentinel` | Print sentinel version of a masternode (can be additionally filtered, exact match) `status` | Print masternode status: PRE_ENABLED / ENABLED / EXPIRED / SENTINEL_PING_EXPIRED / NEW_START_REQUIRED / UPDATE_REQUIRED / POSE_BAN / OUTPOINT_SPENT (can be additionally filtered, partial match) *Parameter #2---List filter* @@ -78,44 +81,123 @@ dash-cli -testnet masternodelist Result: {% highlight json %} { - "f6c83fd96bfaa47887c4587cceadeb9af6238a2c86fe36b883c4d7a6867eab0f-1": "ENABLED", - "2ff986f401bfc16ea42b0a402bff3a30cd5b1a3c14dc65c59612c20b6323e010-1": "ENABLED", - "54754314335419cc04ef09295ff7765c8062a6123486aed55fd7e9b04f300b13-0": "NEW_START_REQUIRED", - "a4676419793d232359dfd7240bf1b0635b56f2a16aac4cb57f7e9ba459d50116-1": "SENTINEL_PING_EXPIRED", - "f36420fff251df194de0251b70491df663e3dbed0c678f366a038b549c928c17-1": "NEW_START_REQUIRED", - "66eddd00e5927d0a03437d5b8a2f15367c978ef7951c80ae1608a45b1bf64318-1": "ENABLED", - "488cae91a9322ea3bb94ac783cce0d151d51529ec90a17e1c75bff381cdc671c-1": "ENABLED", - "c33926bb3115a6b6bbcc13989837743d9f2e36dc47886b687e3b8309361b8c2d-1": "NEW_START_REQUIRED", - "04390dd7fb4112bd4c2ab70906d8347749a30749fb18e80ba83c37500c02d12d-1": "ENABLED", - "e3a6b7878a7e9413898bb379b323c521676f9d460db17ec3bf42d9ac0c9a432f-1": "SENTINEL_PING_EXPIRED", - "7d5cc1fb5146d9a53b53c36107f46a6d2b7b110aa146628feeb1b5c2874c0a31-1": "ENABLED", - "9c3d7033d670f3e4c0275069c835ab4670b0670cae23b509f509698dee4c0f34-1": "ENABLED", - "866d66b88afed15ed1a936b680ace1a99e0ca14d0242bc2983c5fdd2c16c1637-1": "ENABLED", - "1165254749f75622800ccca026e7d1a47c2bcf3b9b9a4fa7fbe0bfcb56fa2237-1": "ENABLED", - "037735d68b6097a6ebd1e507a1bc39582cf4d0dcc96d4df0ee4f7c31c2fe2d37-1": "ENABLED", - "6ba3614f2832800b9cbe01b90c7d50d10eca94d91a5ce839597954ff5db39038-1": "ENABLED", - "7b6cfdafbc5f13e269e07310974de97e06d5fb0ee8125926eab500e0f2b9263c-1": "ENABLED", - "34c3b5e1b891a17009cc9d7f207c1d6cb818ed6a303520f55917821c5ed1a63f-1": "ENABLED", - "a7cada7173593b82b0b3b4c3ce4b316a1a3afbf94e7f218d476833fe2d022546-1": "ENABLED", - "386ac02fae1ac02c57253dddce93a2f492266e9d685ab69521c5807ae381b947-1": "ENABLED", - "3d64bd65cb84b935278420de3673cba33470a1e1996c4debfccb5d722254404c-1": "ENABLED", - "8e5b1a4ca31b136c2ac523a488799b11e3b78e1794e9e88055ead3c6ff6cad4d-1": "NEW_START_REQUIRED", - "9731e9da039780fd8c195e5cef87649bcd31e50cf0d2573e15ae57e948bff74d-1": "NEW_START_REQUIRED", - "c41fe473ee643b95f0583c3a2839fe4492dda7fc3b8de6fac00b206204cfa04f-1": "NEW_START_REQUIRED", - "a175efa6adce750f620e0e2b65c5336bc777668c21ab61c6d25d9f3492101551-1": "NEW_START_REQUIRED", - "4489b5a53933f2525db033bdb7bd0fa6d4db7c4b7e6a2bfaf61c16a5073b9f51-1": "ENABLED", - "aab5986b470495c1843f32ed7c2dce24eae5fc38899f594364cfbde1622b3d52-0": "NEW_START_REQUIRED", - "f45e6b24faa0ab68cd8e32936481be744851f5223dfe914fa5615779f9919c54-0": "SENTINEL_PING_EXPIRED", - "61c4696947438861222d7e992a049bfd2ed87f71eb806d8a111c973215141b59-1": "NEW_START_REQUIRED", - "ea7e0a87aa823aa65d111ed767a4a02f55b3cd361cbd250908db00822e72fb59-1": "SENTINEL_PING_EXPIRED", - "e2275d72303d0a78f1be2cd622f264ae52f66384f3bf75bac5d2d997a761235e-1": "ENABLED", - "fa77ae59f7c973da2d0fea1c96b24d2ceb0dc3054e4baabc0475d9c6404a625e-1": "ENABLED", - "3dadf953a250899164f0e75050d2cad2ae159c521d902168f4cead9243c79661-0": "NEW_START_REQUIRED", - "1466e0a5b65428465ae00bc476ff4955a6d2f292b900f720a67ea10d90f90462-1": "SENTINEL_PING_EXPIRED", - "66ab709c4132623279994a86af13e033b198e8a5b76290b288f314da94d80168-0": "NEW_START_REQUIRED", - "6bd4437d523e7440fd3578be22b3e5d2bdabb89ae70f2161bdc1a2e8dbff656b-1": "ENABLED", - "1b8a9b5f723e6fa1c3cb72f7d0160f3401886186cf972b3e44d3ad7bc995e370-1": "ENABLED", - + "83ab0eaeffc212fab5aea4a3057fba51dafdfa6da8b29c3f0de62ed9319fea03-0": { + "address": "203.0.113.1:19999", + "payee": "yiz8WZ9VY9F7SyGuc8mXj6wrDERs6T47B1", + "status": "ENABLED", + "protocol": 70208, + "daemonversion": "Unknown", + "sentinelversion": "1.0.2", + "sentinelstate": "current", + "lastseen": 1520876844, + "activeseconds": 3389581, + "lastpaidtime": 1520868832, + "lastpaidblock": 89879 + }, + "33a833559acc50b63e0909a550d10af26f41043382a9eed30e5218df5adf5304-1": { + "address": "203.0.113.2:39999", + "payee": "yfY21tLcuKtohnkKtwBQXzEKFapwuhb9FE", + "status": "ENABLED", + "protocol": 70208, + "daemonversion": "Unknown", + "sentinelversion": "1.1.0", + "sentinelstate": "current", + "lastseen": 1520876480, + "activeseconds": 2110895, + "lastpaidtime": 1520866020, + "lastpaidblock": 89862 + }, + "54754314335419cc04ef09295ff7765c8062a6123486aed55fd7e9b04f300b13-0": { + "address": "203.0.113.3:20019", + "payee": "ycn5RWc4Ruo35FTS8bJwugVyCEkfVcrw9a", + "status": "NEW_START_REQUIRED", + "protocol": 70208, + "daemonversion": "Unknown", + "sentinelversion": "Unknown", + "sentinelstate": "expired", + "lastseen": 1517843286, + "activeseconds": 0, + "lastpaidtime": 1520873295, + "lastpaidblock": 89898 + }, + "a4676419793d232359dfd7240bf1b0635b56f2a16aac4cb57f7e9ba459d50116-1": { + "address": "203.0.113.4:19999", + "payee": "ydZHEVgMX67xsi97BhN8KoacN6SCMz6Xho", + "status": "SENTINEL_PING_EXPIRED", + "protocol": 70208, + "daemonversion": "Unknown", + "sentinelversion": "1.0.2", + "sentinelstate": "expired", + "lastseen": 1520876776, + "activeseconds": 7694877, + "lastpaidtime": 0, + "lastpaidblock": 0 + }, + "3d64bd65cb84b935278420de3673cba33470a1e1996c4debfccb5d722254404c-1": { + "address": "203.0.113.5:19999", + "payee": "ySkDc9dHns1AFcjJzGqNmkNnErjakcB2Bp", + "status": "ENABLED", + "protocol": 70208, + "daemonversion": "Unknown", + "sentinelversion": "1.0.2", + "sentinelstate": "current", + "lastseen": 1520876576, + "activeseconds": 10796968, + "lastpaidtime": 1520876143, + "lastpaidblock": 89922 + }, + "54355b4b4d26b84821dab6e0e1c0bded7d8fefc72414f22f45515d1732f1c8e6-1": { + "address": "203.0.113.6:29999", + "payee": "yPk4NCyqvWjeJbE3tW1wmJ9LV2wgVLiYRT", + "status": "ENABLED", + "protocol": 70208, + "daemonversion": "Unknown", + "sentinelversion": "1.1.0", + "sentinelstate": "current", + "lastseen": 1520876323, + "activeseconds": 2110746, + "lastpaidtime": 1520875985, + "lastpaidblock": 89920 + }, + "c6585f4ba88875eb2edc376b9ae24b74fd8c0ef89288923cf16a8fe2787b7ce8-1": { + "address": "203.0.113.7:19999", + "payee": "yP1UHNx26ShYLej56SbHiTiPAUv2QppbUv", + "status": "SENTINEL_PING_EXPIRED", + "protocol": 70208, + "daemonversion": "Unknown", + "sentinelversion": "1.0.2", + "sentinelstate": "expired", + "lastseen": 1520876884, + "activeseconds": 7694986, + "lastpaidtime": 0, + "lastpaidblock": 0 + }, + "b7d45ac3d8c5ddea9ff90d81d92d362e09713a06b2a0089f49c7deb9b2521fef-0": { + "address": "203.0.113.8:19999", + "payee": "yN4iFe7a2G6YYoBtUXcoyixCTV3vDzWSrS", + "status": "NEW_START_REQUIRED", + "protocol": 70208, + "daemonversion": "Unknown", + "sentinelversion": "1.0.2", + "sentinelstate": "current", + "lastseen": 1508842770, + "activeseconds": 416775, + "lastpaidtime": 0, + "lastpaidblock": 0 + }, + "5ef4e5c9d09f6fb927b7b815ea2736ddfce468021d49704acfc3bb7939b425ff-1": { + "address": "203.0.113.9:19999", + "payee": "yPwTQgY8JDFaDjAgUdHmapG4SmzY6SDbE9", + "status": "ENABLED", + "protocol": 70208, + "daemonversion": "Unknown", + "sentinelversion": "1.1.0", + "sentinelstate": "current", + "lastseen": 1520876862, + "activeseconds": 2111317, + "lastpaidtime": 1520872118, + "lastpaidblock": 89892 + } } {% endhighlight %} From 9a803fdf48571ca62263998dae696773da3fec3b Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 13 Mar 2018 09:39:48 -0400 Subject: [PATCH 12/38] config - Travis config update - Temporary fix for deploy 1.9 issue (travis-ci/travis-ci#9312) --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index 7d8b7cc3..d56d2386 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,6 +48,10 @@ deploy: # # DEPLOY_SOURCE_BRANCH: Branch to deploy from + # Temp. fix for DPL 1.9 issue (https://github.com/travis-ci/travis-ci/issues/9312) + edge: + branch: v1.8.47 + provider: pages skip-cleanup: true github-token: $GITHUB_TOKEN # Set in travis-ci.org dashboard, marked secure From e3c34fef4c8504a18d920139298c52d2fbb7bd24 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 14 Mar 2018 12:44:13 -0400 Subject: [PATCH 13/38] [Content] - RPC - Add new ListAddressBalances RPC (#50) Closes #47 --- _autocrossref.yaml | 2 + _config.yml | 3 +- .../devdoc/dash-core/rpcs/quick-reference.md | 1 + .../rpcs/rpcs/listaddressbalances.md | 63 +++++++++++++++++++ .../rpcs/rpcs/listaddressgroupings.md | 1 + _includes/helpers/summaries.md | 1 + _includes/layout/base/rpc-table.html | 6 ++ _includes/references.md | 1 + en/developer-reference.md | 2 + 9 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/listaddressbalances.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index a4b23685..60a8a4dc 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -414,6 +414,8 @@ CVE-2012-2459: '`keypoolrefill` RPC': rpc keypoolrefill '`listaccounts`': rpc listaccounts '`listaccounts` RPC': rpc listaccounts +'`listaddressbalances`': rpc listaddressbalances +'`listaddressbalances` RPC': rpc listaddressbalances '`listaddressgroupings`': rpc listaddressgroupings '`listaddressgroupings` RPC': rpc listaddressgroupings '`listbanned`': rpc listbanned diff --git a/_config.yml b/_config.yml index 9667c3b7..194baadc 100644 --- a/_config.yml +++ b/_config.yml @@ -271,6 +271,7 @@ devsearches: - 'KeePass': "/en/developer-reference#keepass" - 'KeypoolRefill': "/en/developer-reference#keypoolrefill" - 'ListAccounts': "/en/developer-reference#listaccounts" + - 'ListAddressBalances': "/en/developer-reference#listaddressbalances" - 'ListAddressGroupings': "/en/developer-reference#listaddressgroupings" - 'ListBanned': "/en/developer-reference#listbanned" - 'ListLockUnspent': "/en/developer-reference#listlockunspent" @@ -297,7 +298,7 @@ devsearches: - 'SendToAddress': "/en/developer-reference#sendtoaddress" - 'SetAccount': "/en/developer-reference#setaccount" - 'SetBan': "/en/developer-reference#setban" - - 'SetBIP69Enabled': "/en/developer-reference#setbip69enabled" + - 'SetBIP69Enabled': "/en/developer-reference#setbip69enabled" - 'SetGenerate': "/en/developer-reference#setgenerate" - 'SetNetworkActive': "/en/developer-reference#setnetworkactive" - 'SetTxFee': "/en/developer-reference#settxfee" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 2aa3a143..07d29aba 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -276,6 +276,7 @@ default. * [KeePass][rpc keepass]: {{summary_keepass}} {{DARKCOIN_NEW0_11_0}} * [KeyPoolRefill][rpc keypoolrefill]: {{summary_keyPoolRefill}} * [ListAccounts][rpc listaccounts]: {{summary_listAccounts}} {{DEPRECATED}} +* [ListAddressBalances][rpc listaddressbalances]: {{summary_listAddressBalances}} {{DASH_NEW0_12_3}} * [ListAddressGroupings][rpc listaddressgroupings]: {{summary_listAddressGroupings}} * [ListLockUnspent][rpc listlockunspent]: {{summary_listLockUnspent}} * [ListReceivedByAccount][rpc listreceivedbyaccount]: {{summary_listReceivedByAccount}} {{DEPRECATED}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listaddressbalances.md b/_includes/devdoc/dash-core/rpcs/rpcs/listaddressbalances.md new file mode 100644 index 00000000..6deed894 --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listaddressbalances.md @@ -0,0 +1,63 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/listaddressbalances.md" %} + +##### ListAddressBalances +{% include helpers/subhead-links.md %} + +{% assign summary_listAddressBalances="lists addresses of this wallet and their balances" %} + + + +{% autocrossref %} + +The `listaddressbalances` RPC {{summary_listAddressBalances}} + +*Parameter #1---Minimum Amount* + +{% itemplate ntpd1 %} +- n: "Minimum Amount" + t: "numeric (int)" + p: "Optional
(0 or 1)" + d: "Minimum balance in DASH an address should have to be shown in the list (default=0)" + +{% enditemplate %} + +*Result---an object containing the addresses and their balances* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object" + p: "Required
(exactly 1)" + d: "An object containing key/value pairs corresponding to the addresses with balances > the minimum amount. May be empty" + +- n: "→
Address/Amount" + t: "string (base58):
number (DASH)" + p: "Optional
(1 or more)" + d: "A key/value pair with a base58check-encoded string containing the address as the key, and an amount of DASH as the value" + +{% enditemplate %} + +*Example from Dash Core 0.12.3* + +{% highlight bash %} +dash-cli -testnet listaddressbalances 25 +{% endhighlight %} + +Result: +{% highlight json %} +{ + "yMQtQkcMBXrAZyqTGZeg7tQHzmbypGEP4w": 299.99990000, + "yRyfgrHm4f5A8GGvqpqTFvbCrCQHJm1L4V": 99.13570000, + "ybePwhPzUbiWzFhkgxPgP6iHnTLTyFH6sU": 123.45600000, + "ycCdPQnjNEVRgrQY8j6mxEx9h7oaQpo5Ge": 500.00000000 +} +{% endhighlight %} + +*See also:* + +* [ListAddressGroupings][rpc listaddressgroupings]: {{summary_listAddressGroupings}} + +{% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listaddressgroupings.md b/_includes/devdoc/dash-core/rpcs/rpcs/listaddressgroupings.md index 52aaca26..4d15ba83 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listaddressgroupings.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listaddressgroupings.md @@ -91,5 +91,6 @@ Result (edited to only three results): * [GetAddressesByAccount][rpc getaddressesbyaccount]: {{summary_getAddressesByAccount}} * [GetTransaction][rpc gettransaction]: {{summary_getTransaction}} +* [ListAddressBalances][rpc listaddressbalances]: {{summary_listAddressBalances}} {% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index b6bbaa37..67a59ce0 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -89,6 +89,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_keepass="provides commands for configuring and managing KeePass authentication" %} {% assign summary_keyPoolRefill="fills the cache of unused pre-generated keys (the keypool)." %} {% assign summary_listAccounts="lists accounts and their balances." %} +{% assign summary_listAddressBalances="lists addresses of this wallet and their balances" %} {% assign summary_listAddressGroupings="lists groups of addresses that may have had their common ownership made public by common use as inputs in the same transaction or from being used as change from a previous transaction." %} {% assign summary_listBanned="lists all banned IPs/Subnets." %} {% assign summary_listLockUnspent="returns a list of temporarily unspendable (locked) outputs." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index f6d74752..05b07b55 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -715,6 +715,12 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y + + Wallet + ListAddressBalances + Y + 0.12.3.0+ + Wallet ListAddressGroupings diff --git a/_includes/references.md b/_includes/references.md index d81aa5f1..af4c4b5d 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -144,6 +144,7 @@ http://opensource.org/licenses/MIT. [rpc keepass]: /en/developer-reference#keepass [rpc keypoolrefill]: /en/developer-reference#keypoolrefill [rpc listaccounts]: /en/developer-reference#listaccounts +[rpc listaddressbalances]: /en/developer-reference#listaddressbalances [rpc listaddressgroupings]: /en/developer-reference#listaddressgroupings [rpc listbanned]: /en/developer-reference#listbanned [rpc listlockunspent]: /en/developer-reference#listlockunspent diff --git a/en/developer-reference.md b/en/developer-reference.md index a17965b5..98d47096 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -248,6 +248,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/listaccounts.md %} +{% include devdoc/dash-core/rpcs/rpcs/listaddressbalances.md %} + {% include devdoc/dash-core/rpcs/rpcs/listaddressgroupings.md %} {% include devdoc/dash-core/rpcs/rpcs/listbanned.md %} From f6a68b5857a13b98948aa4837d537c7755a8a3d6 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 14 Mar 2018 13:34:59 -0400 Subject: [PATCH 14/38] [Content] Add devnet details (#40) * content - Add devnet details - Description in examples section - Glossary entry and updated testnet/regtest * content - Devnet P2P - Add to start string and spork key tables Closes #36 --- _data/glossary/en/devnet.yaml | 32 +++++++++++ _data/glossary/en/regression-test-mode.yaml | 1 + _data/glossary/en/testnet.yaml | 1 + _includes/devdoc/example_intro.md | 11 +++- _includes/devdoc/example_testing.md | 60 +++++++++++++++++++++ _includes/devdoc/ref_p2p_networking.md | 4 ++ 6 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 _data/glossary/en/devnet.yaml diff --git a/_data/glossary/en/devnet.yaml b/_data/glossary/en/devnet.yaml new file mode 100644 index 00000000..63c42fd1 --- /dev/null +++ b/_data/glossary/en/devnet.yaml @@ -0,0 +1,32 @@ +--- +# This file is licensed under the MIT License (MIT) available on +# http://opensource.org/licenses/MIT. + +required: + #-------------40 characters-------------# + title_max_40_characters_no_formatting: Devnet, Development Network + + summary_max_255_characters_no_formatting: > + A development environment in which developers can obtain and + spend duffs that have no real-world value on a network that + is very similar to the Dash mainnet. Multiple independent devnets can + coexist without interference. Devnets can be either public or private. + + synonyms_shown_in_glossary_capitalize_first_letter: + - Devnet + +optional: + synonyms_and_pluralizations_not_shown_in_glossary: + - devnets + - devnets mode + - devnets modes + - development network + + not_to_be_confused_with_capitalize_first_letter: + - Regtest (a local testing environment where developers can control block generation) + - Testnet (a global testing environment which mostly mimics mainnet) + + links_html_or_markdown_style_capitalize_first_letter: + - "[Devnet mode](/en/developer-examples#devnet-mode) --- Developer Examples" + +--- diff --git a/_data/glossary/en/regression-test-mode.yaml b/_data/glossary/en/regression-test-mode.yaml index 90105b35..5ef8f327 100644 --- a/_data/glossary/en/regression-test-mode.yaml +++ b/_data/glossary/en/regression-test-mode.yaml @@ -23,6 +23,7 @@ optional: - regtest modes not_to_be_confused_with_capitalize_first_letter: + - Devnet (a public or private development network which mimics mainnet) - Testnet (a global testing environment which mostly mimics mainnet) links_html_or_markdown_style_capitalize_first_letter: diff --git a/_data/glossary/en/testnet.yaml b/_data/glossary/en/testnet.yaml index 440388f3..8f438c86 100644 --- a/_data/glossary/en/testnet.yaml +++ b/_data/glossary/en/testnet.yaml @@ -22,6 +22,7 @@ optional: - testing network not_to_be_confused_with_capitalize_first_letter: + - Devnet (a public or private development network which mimics mainnet) - Regtest (a local testing environment where developers can control block generation) links_html_or_markdown_style_capitalize_first_letter: diff --git a/_includes/devdoc/example_intro.md b/_includes/devdoc/example_intro.md index 68616452..1cbd739b 100644 --- a/_includes/devdoc/example_intro.md +++ b/_includes/devdoc/example_intro.md @@ -26,6 +26,13 @@ Once installed, you'll have access to three programs: `dashd`, * `dash-cli` allows you to send RPC commands to `dashd` from the command line. For example, `dash-cli help` +{% endautocrossref %} + +### Configuration file + + +{% autocrossref %} + All three programs get settings from `dash.conf` in the `DashCore` application directory: @@ -53,8 +60,8 @@ directory: chmod 0600 dash.conf ~~~ -For development, it's safer and cheaper to use Dash's test network (testnet) -or regression test mode (regtest) described below. +For development, it's safer and cheaper to use Dash's test network (testnet), +regression test mode (regtest), or a develper network (devnet) described below. Questions about Dash use are best sent to the [Dash forum][forum tech support] and [Discord channels][Discord channels]. Errors or suggestions related to diff --git a/_includes/devdoc/example_testing.md b/_includes/devdoc/example_testing.md index 1184c7ea..b0b18465 100644 --- a/_includes/devdoc/example_testing.md +++ b/_includes/devdoc/example_testing.md @@ -109,3 +109,63 @@ configuration directory locations on various operating systems. Always back up mainnet wallets before performing dangerous operations such as deleting.) {% endautocrossref %} + +### Devnet Mode +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +Developer networks (devnets) have some aspects of testnet and some aspects of +regtest. Unlike testnet, multiple independent devnets can be created and coexist +without interference. Each one is identified by a name which is hardened into a +"devnet genesis" block, which is automatically positioned at height 1. Validation +rules will ensure that a node from `devnet=test1` never be able to +accept blocks from `devnet=test2`. This is done by checking the +expected devnet genesis block. + +The genesis block of the devnet is the same as the one from regtest. This +starts the devnet with a very low difficulty, allowing quick generation of a +sufficient balance to create a masternode. + +The devnet name is put into the sub-version of the `version` message. +If a node connects to the wrong network, it will immediately be disconnected. + +To use devnet, use the argument `-devnet=` with `dash-cli`, +`dashd`or `dash-qt` or add `devnet=` to your `dash.conf` file as +[described earlier](#configuration-file). + +Devnets must be assigned both `-port` and `-rpcport` unless they are not +listening (`-listen=0`). It is possible to run a devnet on a private (RFC1918) +network by using the `-allowprivatenet=1` argument. + +{% endautocrossref %} + +Example devnet start command: + +{% highlight bash %} +> dashd -devnet=mydevnet -rpcport=18998 -port=18999 -daemon +Dash Core server starting +{% endhighlight %} + +{% autocrossref %} + +You can now use Dash Core RPCs prefixed with `dash-cli -devnet=`. + +Devnet wallets and block chain state (chainstate) are saved in the `devnet-` +subdirectory of the Dash Core configuration directory. You can safely +delete the `devnet-` subdirectory and restart Dash Core to +start a new devnet. (See the [Developer Examples Introduction][devexamples] for default +configuration directory locations on various operating systems. Always back up +mainnet wallets before performing dangerous operations such as deleting.) + +Eventually, there may be many public and/or private devnets that vary in size +and function. Providing the correct devnet name and the seed node of the network +will be all that is required to join. + +An old devnet can be easily dropped and a new one started just by destroying all +nodes and recreating them with a new devnet name. This works best in combination +with an automated deployment using something like Ansible and Terraform. The +[Dash Cluster Ansible](https://github.com/dashpay/dash-cluster-ansible) provides +a way to do this (currently a work-in-progress at an early development stage). + +{% endautocrossref %} diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 092f83dd..3c3626e0 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ## P2P Network {% include helpers/subhead-links.md %} + + {% autocrossref %} This section describes the Dash P2P network protocol (but it is [not a @@ -37,6 +39,7 @@ The following constants and defaults are taken from Dash Core's | Mainnet | 9999 | 0xBD6B0CBF | 0xBF0C6BBD | 0x1e0ffff0 | Testnet | 19999 | 0xFFCAE2CE | 0xCEE2CAFF | 0x1e0ffff0 | Regtest | 19994 | 0xDCB7C1FC | 0xFCC1B7DC | 0x207fffff +| Devnet | User-defined | 0xFFCAE2CE | 0xCEE2CAFF | 0x207fffff Note: the testnet start string and nBits above are for testnet3. @@ -1339,6 +1342,7 @@ Core can be found in `CPubKey::RecoverCompact`). The hash is a double SHA-256 ha | Mainnet | 04549ac134f694c0243f503e8c8a9a986f5de6610049c40b07816809b0d1
d06a21b07be27b9bb555931773f62ba6cf35a25fd52f694d4e1106ccd237
a7bb899fdd | | Testnet3 | 046f78dcf911fbd61910136f7f0f8d90578f68d0b3ac973b5040fb7afb50
1b5939f39b108b0569dca71488f5bbf498d92e4d1194f6f941307ffd95f7
5e76869f0e | | RegTest | Undefined | +| Devnets | 046f78dcf911fbd61910136f7f0f8d90578f68d0b3ac973b5040fb7afb50
1b5939f39b108b0569dca71488f5bbf498d92e4d1194f6f941307ffd95f7
5e76869f0e | The following annotated hexdump shows a `spork` message. From 1b72440ae23e62f08b1d58da8361e4a96f6badf9 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 15 Mar 2018 10:37:07 -0400 Subject: [PATCH 15/38] [Script] Minor update to RPC template --- scripts/create_empty_rpc_md.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/create_empty_rpc_md.sh b/scripts/create_empty_rpc_md.sh index 1e7a78b2..7cab519b 100755 --- a/scripts/create_empty_rpc_md.sh +++ b/scripts/create_empty_rpc_md.sh @@ -34,7 +34,7 @@ if [ "$PARAMCOUNT" == 1 ]; then echo "*Result---RESULT DESCRIPTION*" >> $FILENAME echo "" >> $FILENAME - echo "*Example from Dash Core 0.12.2*" >> $FILENAME + echo "*Example from Dash Core 0.12.3*" >> $FILENAME echo "" >> $FILENAME # Example @@ -42,7 +42,7 @@ if [ "$PARAMCOUNT" == 1 ]; then echo "dash-cli -testnet ${RPCNAME,,}" >> $FILENAME echo "{% endhighlight %}" >> $FILENAME echo "" >> $FILENAME - + # Example results echo "Result:" >> $FILENAME echo "{% highlight json %}" >> $FILENAME @@ -60,6 +60,7 @@ if [ "$PARAMCOUNT" == 1 ]; then echo " " echo "Next copy the created file ('$FILENAME') to ../_includes/devdoc/dash-core/rpcs/rpcs" echo "Then update _autocrossref.yaml, _config.yaml, _includes/references.md, en/developer-reference.md, and rpcs/quick-reference.md" + echo "Also update _includes/layout/base/rpc-table.html" else echo "Incorrect number of parameters (Should be exactly 1)" echo "Usage: create_empty_rpc_md RPCNAME" From e447e702eb4fcbb9102b179f5cbea9389aa8f661 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 15 Mar 2018 11:24:00 -0400 Subject: [PATCH 16/38] [Content] - Update InstantSend with network specific conf thresholds --- _includes/devdoc/guide_dash_features.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 3c143916..d30c0a85 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -74,11 +74,18 @@ transaction lock, it reverts to being a standard transaction. There are a number of limitations on InstantSend transactions: -* To be used in an InstantSend transaction, an input must have 6+ confirmations (a block depth of 6+) (`INSTANTSEND_CONFIRMATIONS_REQUIRED`) * The lock request will timeout 15 seconds after the first vote is seen (`INSTANTSEND_LOCK_TIMEOUT_SECONDS`) * The lock request will fail if it has not been locked after 60 seconds (`INSTANTSEND_FAILED_TIMEOUT_SECONDS`) * A minimum fee (0.0001 Dash) is required since the transaction involves the masternodes in addition to miners. This fee was most recently decreased by [DIP-0001](https://github.com/dashpay/dips/blob/master/dip-0001.md). +* To be used in an InstantSend transaction, an input must have at least the number confirmations (block depth) indicated by the table below + +| **Network** | **Confirmations Required** | +|---------|--------------| +| Mainnet | 6 Blocks | +| Testnet | 2 Blocks | +| Regtest | 2 Blocks | +| Devnet | 2 Blocks | {% endautocrossref %} From d9c1833330f760a20ad3284664909b8223243826 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 15 Mar 2018 14:46:20 -0400 Subject: [PATCH 17/38] [Content] - Update PrivateSend collateral info for protocol >70208 change --- _includes/devdoc/guide_dash_features.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index d30c0a85..032b7b07 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -145,10 +145,16 @@ directly without requiring additional inputs or creating change (for example, **Creating Collaterals** PrivateSend collaterals are used to pay mixing fees, but are kept separate from -the denominations to maximize privacy. The collateral fees are 0.001 DASH for +the denominations to maximize privacy. The minimum collateral fee is 0.001 DASH for all mixing sessions regardless of denomination. In Dash Core, collaterals are created with enough value to pay 4 collateral fees (4 x 0.001 DASH). ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend.h#L313)) +In protocol versions <= 70208, collateral amounts were exactly 1x the minimum +collateral amount. In protocol versions > 70208, Dash Core can either use 1x the +minimum collateral amount OR any amount between 1x and 2x. For collateral payments +less than 2x the minimum, no change is returned since it would result in an amount +too small to be used for another collateral payment. + {% endautocrossref %} [Example Testnet collateral creation transaction](https://testnet-insight.dashevo.org/insight/tx/c2fc4af6a9940bf33446f3dddf6892c3dac4351fd0add89157666ca1019454ca) From d075fc209e74b7d06db67c543e0ccaac84ded940 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 2 Apr 2018 17:06:08 -0400 Subject: [PATCH 18/38] [Content] - Update Reject P2P message to cover IS, PS, and Governance Closes #54 --- _includes/devdoc/ref_p2p_networking.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 3c3626e0..e14769ae 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1241,6 +1241,18 @@ ascending code number (primary) and alphabetic in reply to (secondary) --> | 0x10 | `ix` message | 32 | char[32] | InstantSend transaction is invalid for some reason (invalid tx lock request, conflicting tx lock request, etc.). Extra data may include the rejected transaction's TXID. | 0x11 | `block` message | 32 | char[32] | The block uses a version that is no longer supported. Extra data may include the rejected block's header hash. | 0x11 | `version` message | 0 | N/A | Connecting node is using a protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `dsa` message | 0 | N/A | Connecting node is using a PrivateSend protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `dsi` message | 0 | N/A | Connecting node is using a PrivateSend protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `dsc` message | 0 | N/A | Connecting node is using a PrivateSend protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `dsf` message | 0 | N/A | Connecting node is using a PrivateSend protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `dsq` message | 0 | N/A | Connecting node is using a PrivateSend protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `dssu` message | 0 | N/A | Connecting node is using a PrivateSend protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `govsync` message | 0 | N/A | Connecting node is using a governance protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `govobj` message | 0 | N/A | Connecting node is using a governance protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `govobjvote` message | 0 | N/A | Connecting node is using a governance protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `mnget` message | 0 | N/A | Connecting node is using a masternode payment protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `mnw` message | 0 | N/A | Connecting node is using a masternode payment protocol version that the rejecting node considers obsolete and unsupported. +| 0x11 | `txlvote` message | 0 | N/A | Connecting node is using an InstantSend protocol version that the rejecting node considers obsolete and unsupported. | 0x12 | `tx` message | 32 | char[32] | Duplicate input spend (double spend): the rejected transaction spends the same input as a previously-received transaction. Extra data may include the rejected transaction's TXID. | 0x12 | `version` message | 0 | N/A | More than one `version` message received in this connection. | 0x40 | `tx` message | 32 | char[32] | The transaction will not be mined or relayed because the rejecting node considers it non-standard---a transaction type or version unknown by the server. Extra data may include the rejected transaction's TXID. From 80b5d0ddafacbeea6b19dea44f8e6fd45962b455 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 9 Apr 2018 13:26:13 -0400 Subject: [PATCH 19/38] [Content] - RPC - Update Gobject message - Add mode parameter - Closes #52 --- .../devdoc/dash-core/rpcs/rpcs/gobject.md | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md index 98b52627..4315b87e 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md @@ -423,7 +423,15 @@ Result (wrapped): The `gobject count` RPC returns the count of governance objects and votes. -*Parameters: none* +*Parameter #1---mode* + +{% itemplate ntpd1 %} +- n: "`mode`" + t: "string" + p: "Optional
(exactly 1)" + d: "Result return format:
`json` (default)
`all` - Default before Dash Core 0.12.3 (for backwards compatibility)" + +{% enditemplate %} *Result---count of governance objects and votes* @@ -435,12 +443,30 @@ The `gobject count` RPC returns the count of governance objects and votes. {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3 (mode: `json`/default)* {% highlight bash %} dash-cli -testnet gobject count {% endhighlight %} +Result (wrapped): +{% highlight json %} +{ + "objects_total": 177, + "proposals": 177, + "triggers": 0, + "other": 0, + "erased": 5, + "votes": 9680 +} +{% endhighlight %} + +*Example from Dash Core 0.12.3 (mode: `all`)* + +{% highlight bash %} +dash-cli -testnet gobject count all +{% endhighlight %} + Result (wrapped): {% highlight text %} Governance Objects: 177 (Proposals: 177, Triggers: 0, Watchdogs: 0/0, \ From 3c921f6df76e1899a71d85d71686f1006563879d Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 9 Apr 2018 15:00:42 -0400 Subject: [PATCH 20/38] [Content] - RPC - Update Gobject message - Minor update related to #52 --- .../devdoc/dash-core/rpcs/rpcs/gobject.md | 52 +++++++++++++++++-- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md index 4315b87e..19850f2e 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md @@ -433,13 +433,46 @@ The `gobject count` RPC returns the count of governance objects and votes. {% enditemplate %} + +**Command Mode - `json`** + *Result---count of governance objects and votes* {% itemplate ntpd1 %} -- n: "`result`" - t: "string" +- n: "Result" + t: "object" p: "Required
(exactly 1)" - d: "The count of governance objects and votes" + d: "Information about the governance object" + +- n: "→
`objects_total`" + t: "int" + p: "Required
(exactly 1)" + d: "Total object count" + +- n: "→
`proposals`" + t: "int" + p: "Required
(exactly 1)" + d: "Proposal count" + +- n: "→
`triggers`" + t: "int" + p: "Required
(exactly 1)" + d: "Trigger count" + +- n: "→
`other`" + t: "int" + p: "Required
(exactly 1)" + d: "Non-proposal/trigger count" + +- n: "→
`erased`" + t: "int" + p: "Required
(exactly 1)" + d: "Erased count" + +- n: "→
`votes`" + t: "int" + p: "Required
(exactly 1)" + d: "Vote count" {% enditemplate %} @@ -461,6 +494,19 @@ Result (wrapped): } {% endhighlight %} + +**Command Mode - `all`** + +*Result---count of governance objects and votes* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string" + p: "Required
(exactly 1)" + d: "The count of governance objects and votes" + +{% enditemplate %} + *Example from Dash Core 0.12.3 (mode: `all`)* {% highlight bash %} From 6a50ef3eae749548f6d6d43847e718a3b2708ff4 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 10 Apr 2018 10:36:28 -0400 Subject: [PATCH 21/38] [Content] - P2P - Add Spork 6 and update message fields (#57) * [Content] - P2P - Add spork 6 * [Content] - P2P - Message parameter updates - Change dsa/dsi collateral to tx message - nLastDsq marked as removed from mnb - Add fields to mnp Closes #34 --- _includes/devdoc/dash-core/rpcs/rpcs/spork.md | 4 +++- _includes/devdoc/ref_p2p_networking.md | 12 ++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/spork.md b/_includes/devdoc/dash-core/rpcs/rpcs/spork.md index 0d1e059b..385f6e96 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/spork.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/spork.md @@ -55,7 +55,8 @@ Result: { "SPORK_2_INSTANTSEND_ENABLED": 0, "SPORK_3_INSTANTSEND_BLOCK_FILTERING": 0, - "SPORK_5_INSTANTSEND_MAX_VALUE": 1000, + "SPORK_5_INSTANTSEND_MAX_VALUE": 3000, + "SPORK_6_NEW_SIGS": 4000000000, "SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT": 0, "SPORK_9_SUPERBLOCKS_ENABLED": 0, "SPORK_10_MASTERNODE_PAY_UPDATED_NODES": 0, @@ -93,6 +94,7 @@ Result: "SPORK_2_INSTANTSEND_ENABLED": true, "SPORK_3_INSTANTSEND_BLOCK_FILTERING": true, "SPORK_5_INSTANTSEND_MAX_VALUE": true, + "SPORK_6_NEW_SIGS": false, "SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT": true, "SPORK_9_SUPERBLOCKS_ENABLED": true, "SPORK_10_MASTERNODE_PAY_UPDATED_NODES": true, diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index e14769ae..2a8fc919 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1332,6 +1332,7 @@ Sporks (per [`src/spork.h`][spork.h]) | 10001 | 2 | `INSTANTSEND_ENABLED` | Turns on and off InstantSend network wide | 10002 | 3 | `INSTANTSEND_BLOCK_FILTERING` | Turns on and off InstantSend block filtering | 10004 | 5 | `INSTANTSEND_MAX_VALUE` | Controls the max value for an InstantSend transaction (currently 2000 dash) +| 10005 | 6 | `NEW_SIGS` | Turns on and off new signature format for Dash-specific messages | 10007 | 8 | `MASTERNODE_PAYMENT_ENFORCEMENT` | Requires masternodes to be paid by miners when blocks are processed | 10008 | 9 | `SUPERBLOCKS_ENABLED` | Superblocks are enabled (10% of the block reward allocated to fund the dash treasury for funding approved proposals) | 10009 | 10 | `MASTERNODE_PAY_UPDATED_NODES` | Only current protocol version masternode's will be paid (not older nodes) @@ -1569,7 +1570,7 @@ queue the remainder of the time. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | | 4 | nDenom | int | Required | Denomination that will be exclusively used when submitting inputs into the pool -| 41+ | txCollateral | txIn | Required | Collateral TX that will be charged if this client acts maliciously +| 216+ | txCollateral | `tx` message | Required | Collateral TX that will be charged if this client acts maliciously The following annotated hexdump shows a `dsa` message. (The message header has been omitted.) @@ -1756,7 +1757,7 @@ pool, it responds with a `dsf` message. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | | ? | vecTxDSIn | CTxDSIn[] | Required | Vector of users inputs (CTxDSIn serialization is equal to CTxIn serialization) -| ? | txCollateral | `tx` message | Required |Collateral transaction which is used to prevent misbehavior and also to charge fees randomly +| 216+ | txCollateral | `tx` message | Required | Collateral transaction which is used to prevent misbehavior and also to charge fees randomly | ? | vecTxDSOut | CTxDSOut[] | Required | Vector of user outputs (CTxDSOut serialization is equal to CTxOut serialization) The following annotated hexdump shows a `dsi` message. (The message header has @@ -2254,7 +2255,7 @@ entry and how to validate messages from it. | 8 | sigTime | int64_t | Required | Time which the signature was created | 4 | nProtocolVersion | int | Required | The protocol version of the masternode | # | lastPing | `mnp` message | Required | The last known ping of the masternode -| 8 | nLastDsq | int64_t | Deprecated | The last time the masternode sent a `dsq` message (for mixing) (DEPRECATED) +| 8 | nLastDsq | int64_t | Deprecated | **Removed in Dash Core 0.12.3.0**

The last time the masternode sent a `dsq` message (for mixing) (DEPRECATED) The following annotated hexdump shows a `mnb` message. (The message header has been omitted and the actual IP address has been replaced @@ -2332,7 +2333,7 @@ integer value requesting a specific number of payment votes. In protocol version | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | -| 4 | nMnCount | int | Deprecated | Number of masternode payment votes to request

Deprecated in Dash Core 0.12.3 +| 4 | nMnCount | int | Deprecated | _Deprecated in Dash Core 0.12.3_

Number of masternode payment votes to request {% highlight text %} Note: Dash Core limits how frequently a masternode payment sync can be @@ -2363,6 +2364,9 @@ uses a minimum masternode ping time of 10 minutes. | 32 | blockHash | uint256 | Required | Block hash from 12 blocks ago (current chaintip minus 12). This offset allows nodes to be slightly out of sync. | 8 | sigTime | int64_t | Required | Time which the signature was created | 66* | vchSig | char[] | Required | Signature of this message by masternode - verifiable via pubKeyMasternode (66 bytes in most cases. Length (1 byte) + Signature (65 bytes)) +| 1 | fSentinelIsCurrent | bool | Required | True if last sentinel ping was current +| 4 | nSentinelVersion | uint32_t | Required | The version of Sentinel running on the masternode which is signing the message +| 4 | nDaemonVersion | uint32_t | Required | The version of dashd on the masternode which is signing the message (i.e. CLIENT_VERSION) The following annotated hexdump shows a `mnp` message. (The message header has been omitted.) From a9162b3881ba1bbee5984a7f6e59cf17492a3a02 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 18 Apr 2018 16:52:34 -0400 Subject: [PATCH 22/38] [Content] Update references for BIPs/DIPs --- _autocrossref.yaml | 6 ++++++ _config.yml | 6 ++++++ _includes/references.md | 3 +++ 3 files changed, 15 insertions(+) diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 60a8a4dc..bd7b88bd 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -219,9 +219,11 @@ BIP61: BIP62: BIP65: BIP66: +BIP68: BIP70: BIP71: BIP72: +BIP90: BIP111: BIP112: BIP113: @@ -229,12 +231,16 @@ BIP125: BIP130: BIP133: BIP141: +BIP147: BIP151: BIP152: ## CVEs CVE-2012-2459: +## DIPs in numerical order; don't use padding zeros (e.g. DIP1 not DIP0001) +DIP1: + ## RPCs '`abandontransaction`': rpc abandontransaction '`abandontransaction` RPC': rpc abandontransaction diff --git a/_config.yml b/_config.yml index 194baadc..545eddf5 100644 --- a/_config.yml +++ b/_config.yml @@ -485,10 +485,12 @@ devsearches: - "BIP64: P2P geutxos message": "https://github.com/bitcoin/bips/blob/master/bip-0064.mediawiki" - "BIP65: OP_CHECKLOCKTIMEVERIFY": "https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki" - "BIP66: strict DER signatures": "https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki" + - "BIP68: relative lock-time": "https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki" - "BIP70: payment protocol": "https://github.com/bitcoin/bips/blob/master/bip-0070.mediawiki" - "BIP71: payment protocol MIME types": "https://github.com/bitcoin/bips/blob/master/bip-0071.mediawiki" - "BIP72: payment protocol URIs": "https://github.com/bitcoin/bips/blob/master/bip-0072.mediawiki" - "BIP73: accept header with payment protocol": "https://github.com/bitcoin/bips/blob/master/bip-0073.mediawiki" + - "BIP90: buried deployments": "https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki" - "BIP111: NODE_BLOOM service bit": "https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki" - "BIP112: OP_CHECKSEQUENCEVERIFY": "https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki" - "BIP113: median time for lock-time": "https://github.com/bitcoin/bips/blob/master/bip-0113.mediawiki" @@ -496,9 +498,13 @@ devsearches: - "BIP130: sendheaders message": "https://github.com/bitcoin/bips/blob/master/bip-0130.mediawiki" - "BIP133: feefilter message": "https://github.com/bitcoin/bips/blob/master/bip-0133.mediawiki" - "BIP141: segregated witness": "https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki" + - "BIP147: NULLYDUMMY enforcement": "https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki" - "BIP151: P2P communication encryption": "https://github.com/bitcoin/bips/blob/master/bip-0151.mediawiki" - "BIP152: compact block relay": "https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki" + "DIPs": + - "DIP1: 2MB Blocks": "https://github.com/dashpay/dips/blob/master/dip-0001.md" + ## Bitcoin P2P Protocol messages documented on Bitcoin.org "P2P Messages": - "addr": "/en/developer-reference#addr" diff --git a/_includes/references.md b/_includes/references.md index af4c4b5d..10a9c515 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -314,9 +314,11 @@ http://opensource.org/licenses/MIT. [BIP62]: https://github.com/bitcoin/bips/blob/master/bip-0062.mediawiki [BIP65]: https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki [BIP66]: https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki +[BIP68]: https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki [BIP70]: https://github.com/bitcoin/bips/blob/master/bip-0070.mediawiki [BIP71]: https://github.com/bitcoin/bips/blob/master/bip-0071.mediawiki [BIP72]: https://github.com/bitcoin/bips/blob/master/bip-0072.mediawiki +[BIP90]: https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki [BIP111]: https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki [BIP112]: https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki [BIP113]: https://github.com/bitcoin/bips/blob/master/bip-0113.mediawiki @@ -324,6 +326,7 @@ http://opensource.org/licenses/MIT. [BIP130]: https://github.com/bitcoin/bips/blob/master/bip-0130.mediawiki [BIP133]: https://github.com/bitcoin/bips/blob/master/bip-0133.mediawiki [BIP141]: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki +[BIP147]: https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki [BIP151]: https://github.com/bitcoin/bips/blob/master/bip-0151.mediawiki [BIP152]: https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki [CVE-2012-2459]: https://en.bitcoin.it/wiki/CVEs#CVE-2012-2459 From a646eb80a811fe25a76a628e26e2855cc1844696 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 18 Apr 2018 16:53:50 -0400 Subject: [PATCH 23/38] [Content] Update devnet magic bytes - Closes #61 --- _includes/devdoc/ref_p2p_networking.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 2a8fc919..0b56aa95 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -39,7 +39,7 @@ The following constants and defaults are taken from Dash Core's | Mainnet | 9999 | 0xBD6B0CBF | 0xBF0C6BBD | 0x1e0ffff0 | Testnet | 19999 | 0xFFCAE2CE | 0xCEE2CAFF | 0x1e0ffff0 | Regtest | 19994 | 0xDCB7C1FC | 0xFCC1B7DC | 0x207fffff -| Devnet | User-defined | 0xFFCAE2CE | 0xCEE2CAFF | 0x207fffff +| Devnet | User-defined | 0xCEFFCAE2 | 0xE2CAFFCE | 0x207fffff Note: the testnet start string and nBits above are for testnet3. From 190fa798a5e01c2f55f086a12af9c9ea748e5908 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 18 Apr 2018 16:56:05 -0400 Subject: [PATCH 24/38] [Content] Update transaction version number --- _includes/devdoc/ref_transactions.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/_includes/devdoc/ref_transactions.md b/_includes/devdoc/ref_transactions.md index eb3f634d..f282b8eb 100644 --- a/_includes/devdoc/ref_transactions.md +++ b/_includes/devdoc/ref_transactions.md @@ -210,16 +210,19 @@ transaction---making the transaction format part of the consensus rules. Dash Core and many other tools print and accept raw transactions encoded as hex. -All transactions use the version 1 format described below. +Transactions prior to protocol version 70209 defaulted to version 1. Transaction +version 2 became the default in protocol version 70209. Version 2 transactions +have the same format, but the `lock_time` parameter was redefined by BIP68 +to enable relative lock-times. (Note: transactions in the block chain are allowed to list a higher version -number to permit soft forks, but they are treated as version 1 transactions +number to permit soft forks, but they are treated as version 2 transactions by current software.) A raw transaction has the following top-level format: | Bytes | Name | Data Type | Description |----------|--------------|---------------------|------------- -| 4 | version | uint32_t | Transaction version number; currently version 1. Programs creating transactions using newer consensus rules may use higher version numbers. +| 4 | version | uint32_t | Transaction version number; currently version 2. Programs creating transactions using newer consensus rules may use higher version numbers. | *Varies* | tx_in count | compactSize uint | Number of inputs in this transaction. | *Varies* | tx_in | txIn | Transaction inputs. See description of txIn below. | *Varies* | tx_out count | compactSize uint | Number of outputs in this transaction. From 581500c546cc601084054644db5b749c40be8020 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 18 Apr 2018 17:21:03 -0400 Subject: [PATCH 25/38] [Content] - Update PrivateSend collateral info (#62) - Change for protocol >70208 to provide more flexibility Closes #48 --- _includes/devdoc/guide_dash_features.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 032b7b07..5aaa81a1 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -149,11 +149,10 @@ the denominations to maximize privacy. The minimum collateral fee is 0.001 DASH all mixing sessions regardless of denomination. In Dash Core, collaterals are created with enough value to pay 4 collateral fees (4 x 0.001 DASH). ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend.h#L313)) -In protocol versions <= 70208, collateral amounts were exactly 1x the minimum -collateral amount. In protocol versions > 70208, Dash Core can either use 1x the -minimum collateral amount OR any amount between 1x and 2x. For collateral payments -less than 2x the minimum, no change is returned since it would result in an amount -too small to be used for another collateral payment. +In protocol version 70208, collateral inputs can be anything from 2x the +minimum collateral amount to the maximum collateral amount (currently defined as +4x the minimum collateral). In protocol versions > 70208, Dash Core can use any +input from 1x the minimum collateral amount to the maximum collateral amount. {% endautocrossref %} From 7b8e5ed5ea5db7117e8a59a6fb6f46b2b88f0c4f Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 18 Apr 2018 18:11:17 -0400 Subject: [PATCH 26/38] [Content] - RPC - Update getchaintips - Add `forkpoint` to result - Closes #60 --- .../devdoc/dash-core/rpcs/quick-reference.md | 2 +- .../devdoc/dash-core/rpcs/rpcs/getchaintips.md | 16 +++++++++++----- _includes/layout/base/rpc-table.html | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 07d29aba..aeb162b6 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -104,7 +104,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetBlockHashes][rpc getblockhashes]: {{summary_getBlockHashes}} {{DASH_NEW0_12_1}} * [GetBlockHeader][rpc getblockheader]: {{summary_getBlockHeader}} {{NEW0_12_0}} * [GetBlockHeaders][rpc getblockheaders]: {{summary_getBlockHeaders}} {{DASH_NEW0_12_1}} -* [GetChainTips][rpc getchaintips]: {{summary_getChainTips}} {{DASH_UPDATED0_12_1}} +* [GetChainTips][rpc getchaintips]: {{summary_getChainTips}} {{DASH_UPDATED0_12_3}} * [GetDifficulty][rpc getdifficulty]: {{summary_getDifficulty}} * [GetMemPoolAncestors][rpc getmempoolancestors]: {{summary_getMemPoolAncestors}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [GetMemPoolDescendants][rpc getmempooldescendants]: {{summary_getMemPoolDescendants}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getchaintips.md b/_includes/devdoc/dash-core/rpcs/rpcs/getchaintips.md index 5da84f0d..3c5dbc57 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getchaintips.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getchaintips.md @@ -53,6 +53,11 @@ The `getchaintips` RPC {{summary_getChainTips}} p: "Required
(exactly 1)" d: "The number of blocks that are on this chain but not on the main chain. For the local best block chain, this will be `0`; for all other chains, it will be at least `1`" +- n: "→ →
`forkpoint`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "*Added in Dash Core 0.12.3*

Block hash of the last common block between this tip and the main chain" + - n: "→ →
`status`" t: "string" p: "Required
(exactly 1)" @@ -60,7 +65,7 @@ The `getchaintips` RPC {{summary_getChainTips}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.3* {% highlight bash %} dash-cli -testnet getchaintips @@ -69,11 +74,12 @@ dash-cli -testnet getchaintips {% highlight json %} [ { - "height": 4655, - "hash": "00000000629c276241d9526d85297f2675d6edebcc7fd0c39e8f4263d729b8c1", - "difficulty": 0.9622782802772231, - "chainwork": "000000000000000000000000000000000000000000000000000001f1e286e12a", + "height": 110192, + "hash": "000000000c6007f40c3b68a77b0e1319a89c0504ae1b391d071cf49fa7591dee", + "difficulty": 18.38631407059958, + "chainwork": "000000000000000000000000000000000000000000000000002cbd2546718747", "branchlen": 0, + "forkpoint": "000000000c6007f40c3b68a77b0e1319a89c0504ae1b391d071cf49fa7591dee", "status": "active" } ] diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 05b07b55..fd761ba9 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -113,7 +113,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain GetChainTips Y - + Updated in 0.12.3.0 Blockchain From 2304a52d4ff59a45336b65d95efa13be788bb332 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 24 Apr 2018 10:53:32 -0400 Subject: [PATCH 27/38] [Content] - P2P - Compact block addition (#64) * content - Add compact block inventory * content - p2p - Compact Block messages - Start adding `blocktxn`, `cmpctblock`, `getblocktxn`, and `sendcmpct` messages - blocktxn and getblocktxn description and format added - Placeholders for cmpctblock and sendcmpct * content - p2p - Sendcmpct message - Add details of `sendcmpct` including hex dump * content - p2p - CmpctBlock message - Add hexdump - Update description * content - Minor formatting updates * content - p2p - Update control and data message drawings - Add compact block related commands * content - p2p - Update compact block messages - Add info about protocol version when implemented - Add info to cmpctblock * content - p2p - Update compact block messages - Add some info from bitcoin-dot-org/bitcoin.org#2092 - Add detail to cmpctblock, sendcmpct, getblocktxn, blocktxn messages - Add reference terms * content - p2p - Comment out blocktxn and getblocktxn hexdump for now Closes #59 --- _autocrossref.yaml | 8 + _includes/devdoc/ref_p2p_networking.md | 255 ++++++++++++++++++++++++- _includes/references.md | 9 + img/dev/en-p2p-control-messages.dot | 2 + img/dev/en-p2p-control-messages.png | Bin 4863 -> 8533 bytes img/dev/en-p2p-control-messages.svg | 75 ++++---- img/dev/en-p2p-data-messages.dot | 2 + img/dev/en-p2p-data-messages.png | Bin 7637 -> 24436 bytes img/dev/en-p2p-data-messages.svg | 142 +++++++------- 9 files changed, 391 insertions(+), 102 deletions(-) diff --git a/_autocrossref.yaml b/_autocrossref.yaml index bd7b88bd..ac1ba50c 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -20,7 +20,11 @@ bitcoin QR codes: URI QR code bitcoinj: '`block` message': block message '`block` messages': block message +'`blocktxn` message': blocktxn message +'`blocktxn` messages': blocktxn message certificate chain: +'`cmpctblock` message': cmpctblock message +'`cmpctblock` messages': cmpctblock message DER: DER format: der DER-formatted: der @@ -57,6 +61,8 @@ fiat: '`filterload` messages': filterload message '`getblocks` message': getblocks message '`getblocks` messages': getblocks message +'`getblocktxn` message': getblocktxn message +'`getblocktxn` messages': getblocktxn message '`getdata` message': getdata message '`getdata` messages': getdata message '`getheaders` message': getheaders message @@ -172,6 +178,8 @@ RPC: RPCs: rpc '`script`': DO NOT AUTOCROSSREF secp256k1: +'`sendcmpct` message': sendcmpct message +'`sendcmpct` messages': sendcmpct message '`spork` message': spork message '`spork` messages': spork message '`ssc` message': ssc message diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 0b56aa95..62448ada 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -172,8 +172,9 @@ The currently-available type identifiers are: | 17 | [`MSG_GOVERNANCE_OBJECT`][msg_governance_object]{:#term-msg_governance_object}{:.term} | The hash is a Governance Object. | 18 | [`MSG_GOVERNANCE_OBJECT_VOTE`][msg_governance_object_vote]{:#term-msg_governance_object_vote}{:.term} | The hash is a Governance Object Vote. | 19 | [`MSG_MASTERNODE_VERIFY`][msg_masternode_verify]{:#term-msg_masternode_verify}{:.term} | The hash is a Masternode Verify. +| 20 | [`MSG_CMPCT_BLOCK`][msg_cmpct_block]{:#term-msg_cmpct_block}{:.term} | The hash is of a block header; identical to `MSG_BLOCK`. When used in a `getdata` message, this indicates the response should be a `cmpctblock` message. **Only for use in `getdata` messages.** -Type identifier zero and type identifiers greater than nineteen are reserved +Type identifier zero and type identifiers greater than twenty are reserved for future implementations. Dash Core ignores all inventories with one of these unknown types. @@ -202,6 +203,166 @@ different reasons: {% endautocrossref %} +#### Blocktxn +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70209 of Dash Core as described by BIP152* + +The `blocktxn` message sends requested block transactions to a node which +previously requested them with a `getblocktxn` message. It is defined as a message +containing a serialized `BlockTransactions` message. + +Upon receipt of a properly-formatted requested `blocktxn` message, nodes should: + +1. Attempt to reconstruct the full block by taking the prefilledtxn transactions from the original `cmpctblock` message and placing them in the marked positions +2. For each short transaction ID from the original `cmpctblock` message, in order, find the corresponding transaction (from either the `blocktxn` message or from other sources) +3. Place each short transaction ID in the first available position in the block +4. Once the block has been reconstructed, it shall be processed as normal. + +**Short transaction IDs are expected to occasionally collide. Nodes must +not be penalized for such collisions.** + +The structure of `BlockTransactions` is defined below. + +| Bytes | Name | Data Type | Encoding | Description| +|----------|----------------------|----------------------|----------|------------| +| 32 | blockhash | Binary blob | The output from a double-SHA256 of the block header, as used elsewhere | The blockhash of the block which the transactions being provided are in +| 1 or 3 | transactions
_length | CompactSize | As used to encode array lengths elsewhere | The number of transactions provided +| *Varies* | transactions | List of transactions | As encoded in `tx` messages in response to `getdata MSG_TX` | The transactions provided + + + +{% endautocrossref %} + +#### CmpctBlock +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70209 of Dash Core as described by BIP152* + +The `cmpctblock` message is a reply to a `getdata` message which +requested a block using the inventory type `MSG_CMPCT_BLOCK`. If the +requested block was recently announced and is close to the tip of the +best chain of the receiver and after having sent the requesting peer +a `sendcmpct` message, nodes respond with a `cmpctblock` message containing +data for the block. + +**If the requested block is too old, the node responds with a *full non-compact block*** + +Upon receipt of a `cmpctblock` message, after sending a `sendcmpct` message, +nodes should calculate the short transaction ID for each unconfirmed +transaction they have available (i.e. in their mempool) and compare each +to each short transaction ID in the `cmpctblock` message. After finding +already-available transactions, nodes which do not have all transactions +available to reconstruct the full block should request the missing transactions +using a `getblocktxn` message. + +A node must not send a `cmpctblock` message unless they are able to respond to +a `getblocktxn` message which requests every transaction in the block. A node +must not send a `cmpctblock` message without having validated that the header properly +commits to each transaction in the block, and properly builds on top of the existing, +fully-validated chain with a valid proof-of-work either as a part of the current most-work +valid chain, or building directly on top of it. A node may send a `cmpctblock` message before +validating that each transaction in the block validly spends existing UTXO set entries. + +The `cmpctblock` message contains a vector of `PrefilledTransaction` whose +structure is defined below. A `PrefilledTransaction` is used in `HeaderAndShortIDs` +to provide a list of a few transactions explicitly. + +| Bytes | Name | Data Type | Encoding | Description| +|----------|----------------------|----------------------|----------|------------| +| 1 or 3 | index | CompactSize | Compact Size, differentially encoded since the last PrefilledTransaction in a list | The index into the block at which this transaction is +| *Varies* | tx | Transaction | As encoded in `tx` messages sent in response to `getdata MSG_TX` | Transaction which is in the block at index `index` + +The `cmpctblock` message is compromised of a serialized `HeaderAndShortIDs` +structure which is defined below. A `HeaderAndShortIDs` structure is used to +relay a block header, the short transactions IDs used for matching +already-available transactions, and a select few transactions which +we expect a peer may be missing. + +| Bytes | Name | Data Type | Encoding | Description| +|----------|----------------------|----------------------|----------|------------| +| 80 | header | Block header | First 80 bytes of the block as defined by the encoding used by `block` messages | The header of the block being provided +| 8 | nonce | uint64_t | Little Endian | A nonce for use in short transaction ID calculations +| 1 or 3 | shortids_
length | CompactSize | As used to encode array lengths elsewhere | The number of short transaction IDs in `shortids` (i.e. block tx count - `prefilledtxn`
`_length`) +| *Varies* | shortids | List of 6-byte integers | Little Endian | The short transaction IDs calculated from the transactions which were not provided explicitly in `prefilledtxn` +| 1 or 3 | prefilledtxn
_length | CompactSize | As used to encode array lengths elsewhere | The number of prefilled transactions in `prefilledtxn` (i.e. block tx count - `shortids`
`_length`) +| *Varies* | prefilledtxn | List of Prefilled
Transactions | As defined by `Prefilled`
`Transaction` definition below | Used to provide the coinbase transaction and a select few which we expect a peer may be missing + +**Short Transaction ID calculation** + +Short transaction IDs are used to represent a transaction without sending a full 256-bit hash. They are calculated as follows, + +* A single-SHA256 hashing the block header with the nonce appended (in little-endian) +* Running SipHash-2-4 with the input being the transaction ID and the keys (k0/k1) set to the first two little-endian 64-bit integers from the above hash, respectively. +* Dropping the 2 most significant bytes from the SipHash output to make it 6 bytes. + + +The following annotated hexdump shows a `cmpctblock` message. (The +message header has been omitted.) + +{% highlight text %} +00000020981178a4342cec6316296b2ad84c9b7cdf9f +2688e5d0fe1a0003cd0000000000f64870f52a3d0125 +1336c9464961216732b25fbf288a51f25a0e81bffb20 +e9600194d85a64a50d1cc02b0181 ................ Block Header + +3151b67e5b418b9d ............................ Nonce + +00 .......................................... Short IDs Length: 0 +............................................. Short IDs: None + +01 .......................................... Prefilled Transaction Length: 1 + +Prefilled Transactions +| 00 ........................................ Index: 0 +| +| Transaction 1 (Coinbase) +| | 01000000 ................................ Transaction Version: 1 +| | 01 ...................................... Input count: 1 +| | +| | Transaction input #1 +| | | +| | | 00000000000000000000000000000000 +| | | 00000000000000000000000000000000 ..... Outpoint TXID +| | | ffffffff ............................. Outpoint index number: UINT32_MAX +| | | +| | | 13 ................................... Bytes in sig. script: 19 +| | | 03daaf010e2f5032506f6f6c2d74444153482f Secp256k1 signature +| | | +| | | ffffffff ............................. Sequence number: UINT32_MAX +| | +| | 04 ..................................... Number of outputs: 04 +| | +| | Transaction output #1 +| | | ffe5654200000000 ..................... Duffs (11.13974271 Dash) +| | | +| | | 19 ................................... Bytes in pubkey script: 25 +| | | | 76 ................................. OP_DUP +| | | | a9 ................................. OP_HASH160 +| | | | 14 ................................. Push 20 bytes as data +| | | | | b885cb21ad12e593c1a46d814df47ccb +| | | | | 450a7d84 ......................... PubKey hash +| | | | 88 ................................. OP_EQUALVERIFY +| | | | ac ................................. OP_CHECKSIG +| | +| | [...] .................................. 3 more tx outputs omitted +| | +| | 00000000 ............................... locktime: 0 (a block height) +{% endhighlight %} + +{% endautocrossref %} + #### GetBlocks {% include helpers/subhead-links.md %} @@ -254,6 +415,44 @@ d39f608a7775b537729884d4e6633bb2 {% endautocrossref %} +#### GetBlockTxn +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70209 of Dash Core as described by BIP152* + +The `getblocktxn` message requests a `blocktxn` message for any transactions +that it has not seen after a compact block is received. It is defined as a +message containing a serialized `BlockTransactionsRequest` message. Upon receipt +of a properly-formatted `getblocktxn` message, nodes which recently provided the +sender of such a message with a `cmpctblock` message for the block hash +identified in this message must respond with either an appropriate +`blocktxn` message, or a full block message. + +A `blocktxn` message response must contain exactly and only each transaction +which is present in the appropriate block at the index specified in the +`getblocktxn` message indexes list, in the order requested. + +The structure of `BlockTransactionsRequest` is defined below. + +| Bytes | Name | Data Type | Encoding | Description| +|----------|-----------------|----------------------|----------|------| +| 32 | blockhash | Binary blob | The output from a double-SHA256 of the block header, as used elsewhere | The blockhash of the block which the transactions being requested are in +| *Varies* | indexes_length | CompactSize uint | As used to encode array lengths elsewhere | The number of transactions requested +| *Varies* | indexes | CompactSize uint[] | Differentially encoded | Vector of compactSize containing the indexes of the transactions being requested in the block. + + + +{% endautocrossref %} + #### GetData {% include helpers/subhead-links.md %} @@ -266,7 +465,7 @@ node typically previously received by way of an `inv` message. The response to a `getdata` message can be a `tx` message, `block` message, `merkleblock` message, `ix` message, `txlvote` message, `mnw` message, `mnb` message, `mnp` message, `dstx` message, `govobj` message, -`govobjvote` message, `mnv` message, or `notfound` message. +`govobjvote` message, `mnv` message, `notfound` message, or `cmpctblock` message. This message cannot be used to request arbitrary data, such as historic transactions no longer in the memory pool or relay set. Full nodes may @@ -1289,6 +1488,57 @@ header has been omitted.) {% endautocrossref %} +#### SendCmpct +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70209 of Dash Core as described by BIP152* + +The `sendcmpct` message tells the receiving peer whether or not to announce new +blocks using a `cmpctblock` message. It also sends the compact block protocol +version it supports. The `sendcmpct` message is defined as a message containing +a 1-byte integer followed by a 8-byte integer. The first integer is interpreted +as a boolean and should have a value of either 1 or 0. The second integer +is be interpreted as a little-endian version number. + +Upon receipt of a `sendcmpct` message with the first and second integers +set to 1, the node should announce new blocks by sending a `cmpctblock` message. + +Upon receipt of a `sendcmpct` message with the first integer set to 0, the node +shouldn't announce new blocks by sending a `cmpctblock` message, but instead announce +new blocks by sending invs or headers, as defined by [BIP130][]. + +Upon receipt of a `sendcmpct` message with the second integer set to something +other than 1, nodes should treat the peer as if they had not received the message +(as it indicates the peer will provide an unexpected encoding in `cmpctblock` messages, +and/or other, messages). This allows future versions to send duplicate +`sendcmpct` messages with different versions as a part of a version handshake. + +Nodes should check for a protocol version of >= 70209 before sending `sendcmpct` +messages. Nodes shouldn't send a request for a `MSG_CMPCT_BLOCK` object to a peer +before having received a `sendcmpct` message from that peer. Nodes shouldn't +request a `MSG_CMPCT_BLOCK` object before having sent all `sendcmpct` messages +to that peer which they intend to send, as the peer cannot know what protocol +version to use in the response. + +The structure of a `sendcmpct` message is defined below. + +| Bytes | Name | Data Type | Description +|----------|---------------|------------------|-------------- +| 1 | announce | bool | 0 - Announce blocks via `headers` message or `inv` message
1 - Announce blocks via `cmpctblock` message +| 8 | version | uint64_t | The compact block protocol version number + +The annotated hexdump below shows a `sendcmpct` message. (The message +header has been omitted.) + +{% highlight text %} +01 ................................. Block announce type: Compact Blocks +0100000000000000 ................... Compact block version: 1 +{% endhighlight %} + +{% endautocrossref %} + #### SendHeaders {% include helpers/subhead-links.md %} @@ -1302,7 +1552,6 @@ section][section message header] for an example of a message without a payload. {% endautocrossref %} - #### Spork {% include helpers/subhead-links.md %} diff --git a/_includes/references.md b/_includes/references.md index 10a9c515..e602cc5f 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -4,8 +4,11 @@ http://opensource.org/licenses/MIT. {% endcomment %} {% comment %}{% endcomment %} +[blocktransactions]: /en/developer-reference#blocktxn "A P2P Networking data structure used to provide some of the transactions in a block as requested" +[blocktransactionsrequest]: /en/developer-reference#getblocktxn "A P2P Networking data structure used to list transaction indexes in a block being requested by a peer" [coinbase block height]: /en/developer-reference#term-coinbase-block-height "The current block's height encoded into the first bytes of the coinbase field" [data-pushing opcode]: https://en.bitcoin.it/wiki/Script#Constants "Any opcode from 0x01 to 0x4e which pushes data on to the script evaluation stack" +[headerandshortids]: /en/developer-reference#cmpctblock "A P2P Networking data structure used to relay a block header, the short transactions IDs used for matching already-available transactions, and a select few transactions which a peer may be missing" [key index]: /en/developer-guide#term-key-index "An index number used in the HD wallet formula to generate child keys from a parent key" [key pair]: /en/developer-guide#term-key-pair "A private key and its derived public key" @@ -29,6 +32,7 @@ http://opensource.org/licenses/MIT. [msg_governance_object]: /en/developer-reference#term-msg_governance_object "Governance object data type identifier of an inventory on the P2P network" [msg_governance_object_vote]: /en/developer-reference#term-msg_governance_object_vote "Governance object vote data type identifier of an inventory on the P2P network" [msg_masternode_verify]: /en/developer-reference#term-msg_masternode_verify "Masternode Verify data type identifier of an inventory on the P2P network" +[msg_cmpct_block]: /en/developer-reference#term-msg_cmpct_block "An alternative to the block header hash data type identifier of an inventory on the P2P network used to request a compact block" [network]: /en/developer-guide#term-network "The Dash P2P network which broadcasts transactions and blocks" [op_checkmultisig]: /en/developer-reference#term-op-checkmultisig "Opcode which returns true if one or more provided signatures (m) sign the correct parts of a transaction and match one or more provided public keys (n)" @@ -41,6 +45,7 @@ http://opensource.org/licenses/MIT. [op_verify]: /en/developer-reference#term-op-verify "Operation which terminates the script if the entry below it on the stack is non-true (zero)" [output index]: /en/developer-guide#term-output-index "The sequentially-numbered index of outputs in a single transaction starting from 0" [point function]: /en/developer-guide#term-point-function "The ECDSA function used to create a public key from a private key" +[prefilledtransaction]: /en/developer-reference#cmpctblock "A P2P Networking data structure used to represent a vector of a few transactions" [previous block header hash]: /en/developer-reference#term-previous-block-header-hash "A field in the block header which contains the SHA256(SHA256()) hash of the previous block's header" [proper money handling]: /en/developer-reference#term-proper-money-handling "Bitcoin amounts need to be correctly processed without introducing rounding errors that could cause monetary loss" [standard block relay]: /en/developer-guide#term-standard-block-relay "The regular block relay method: announcing a block with an inv message and waiting for a response" @@ -205,6 +210,8 @@ http://opensource.org/licenses/MIT. [addr message]: /en/developer-reference#addr "The P2P network message which relays IP addresses and port numbers of active nodes to other nodes and clients, allowing decentralized peer discovery." [alert message]: /en/developer-reference#alert "The P2P network message which sends alerts in case of major software problems." [block message]: /en/developer-reference#block "The P2P network message which sends a serialized block" +[blocktxn message]: /en/developer-reference#blocktxn "The P2P network message which sends a list of requested transactions from a compact block" +[cmpctblock message]: /en/developer-reference#cmpctblock "The P2P network message which sends a serialized compact block" [dsa message]: /en/developer-reference#dsa "A P2P network message used to join a mixing pool" [dsc message]: /en/developer-reference#dsc "A P2P network message used to indicates a PrivateSend mixing session is complete" [dsf message]: /en/developer-reference#dsf "A P2P network message sent as the final mixing transaction in a session asking users to sign the final mixing TX messages" @@ -220,6 +227,7 @@ http://opensource.org/licenses/MIT. [filterload message]: /en/developer-reference#filterclear "A P2P protocol message used to send a filter to a remote peer, requesting that they only send transactions which match the filter." [getaddr message]: /en/developer-reference#getaddr "A P2P protool message used to request an addr message containing connection information for other nodes" [getblocks message]: /en/developer-reference#getblocks "A P2P protocol message used to request an inv message containing a range of block header hashes" +[getblocktxn message]: /en/developer-reference#getblocktxn "A P2P protocol message used to request transactions from a compact block" [getdata message]: /en/developer-reference#getdata "A P2P protocol message used to request one or more transactions, blocks, or merkle blocks" [getheaders message]: /en/developer-reference#getheaders "A P2P protocol message used to request a range of block headers" [getsporks message]: /en/developer-reference#getsporks "A P2P network message used to request the status of sporks" @@ -240,6 +248,7 @@ http://opensource.org/licenses/MIT. [ping message]: /en/developer-reference#ping "A P2P network message used to see if the remote host is still connected" [pong message]: /en/developer-reference#pong "A P2P network message used to reply to a P2P network ping message" [reject message]: /en/developer-reference#reject "A P2P network message used to indicate a previously-received message was rejected for some reason" +[sendcmpct message]: /en/developer-reference#sendcmpct "A P2P network message used to request new blocks be announced as compact blocks" [sendheaders message]: /en/developer-reference#sendheaders "A P2P network message used to request new blocks be announced through headers messages rather than inv messages" [spork message]: /en/developer-reference#spork "A P2P network message used to send the activation status of a spork" [ssc message]: /en/developer-reference#ssc "A P2P network message used to track the sync status of masternode objects ()" diff --git a/img/dev/en-p2p-control-messages.dot b/img/dev/en-p2p-control-messages.dot index ddb35231..2c9e41c1 100644 --- a/img/dev/en-p2p-control-messages.dot +++ b/img/dev/en-p2p-control-messages.dot @@ -22,6 +22,8 @@ sendheaders; ERROR [ style = "invis" ]; ERROR -> reject [ style = "invis" ]; +sendcmpct; + label = " \nOverview Of P2P Protocol Control And Advisory Messages" } diff --git a/img/dev/en-p2p-control-messages.png b/img/dev/en-p2p-control-messages.png index f9b69d2c7425f24ad69b33c0a6d52dd27196b935..8443f697c6b6e66f45218f8bb511a15223dcfb6a 100644 GIT binary patch literal 8533 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 W*_doM!K$|}dw>Q^N2N*$5&mB`MJ_V{ diff --git a/img/dev/en-p2p-control-messages.svg b/img/dev/en-p2p-control-messages.svg index eab70122..d603fbac 100644 --- a/img/dev/en-p2p-control-messages.svg +++ b/img/dev/en-p2p-control-messages.svg @@ -4,94 +4,99 @@ - - + + %3 - - -Overview Of P2P Protocol Control And Advisory Messages + + +Overview Of P2P Protocol Control And Advisory Messages version - -version + +version verack - -verack + +verack version->verack - + ping - -ping + +ping pong - -pong + +pong ping->pong - + getaddr - -getaddr + +getaddr addr - -addr + +addr getaddr->addr - + filterload - -filterload + +filterload filteradd - -filteradd + +filteradd filterload->filteradd - + filterclear - -filterclear + +filterclear filterload->filterclear - + alert - -alert + +alert sendheaders - -sendheaders + +sendheaders reject - -reject + +reject + +sendcmpct + +sendcmpct + diff --git a/img/dev/en-p2p-data-messages.dot b/img/dev/en-p2p-data-messages.dot index 7f9fd575..2e47a418 100644 --- a/img/dev/en-p2p-data-messages.dot +++ b/img/dev/en-p2p-data-messages.dot @@ -10,6 +10,8 @@ edge [ penwidth = 1.75, fontname="Sans", dir="none" ] node [ penwidth = 1.75, shape = "box", fontname="Sans", ] graph [ penwidth = 1.75, fontname="Sans" ] +getblocktxn -> blocktxn [ minlen = 3 ]; + getblocks -> inv; mempool -> inv; diff --git a/img/dev/en-p2p-data-messages.png b/img/dev/en-p2p-data-messages.png index 7b54c6959f66356bc7adcf3ca98544def20488ab..39ada9342adfe9a875d97cf826f722aa4139a007 100644 GIT binary patch literal 24436 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 literal 7637 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 diff --git a/img/dev/en-p2p-data-messages.svg b/img/dev/en-p2p-data-messages.svg index d7ce75f6..73699941 100644 --- a/img/dev/en-p2p-data-messages.svg +++ b/img/dev/en-p2p-data-messages.svg @@ -1,117 +1,131 @@ - - - - -_anonymous_0 - -Overview Of P2P Protocol Data Request And Reply Messages + + + +%3 + +Overview Of P2P Protocol Data Request And Reply Messages + +getblocktxn + +getblocktxn + + +blocktxn + +blocktxn + + +getblocktxn->blocktxn + + -getblocks - -getblocks +getblocks + +getblocks -inv - -inv +inv + +inv getblocks->inv - + -getdata - -getdata +getdata + +getdata -inv->getdata - +inv->getdata + -mempool - -mempool +mempool + +mempool -mempool->inv - +mempool->inv + -tx - -tx +tx + +tx -getdata->tx - +getdata->tx + -block - -block +block + +block -getdata->block - +getdata->block + -merkleblock - -merkleblock +merkleblock + +merkleblock -getdata->merkleblock - +getdata->merkleblock + -notfound - -notfound +notfound + +notfound -getdata->notfound - +getdata->notfound + -getheaders - -getheaders +getheaders + +getheaders -headers - -headers +headers + +headers -getheaders->headers - +getheaders->headers + -label1 -Request For Help -Getting Up To Date +label1 +Request For Help +Getting Up To Date -label2 -Reply With -Inventory +label2 +Reply With +Inventory -label3 -Request For Specific Data +label3 +Request For Specific Data -label4 -Reply With -Requested Data +label4 +Reply With +Requested Data From 6b4752e34d09b5fae86c69a2c01a45ef34499896 Mon Sep 17 00:00:00 2001 From: Nathan Marley Date: Thu, 26 Apr 2018 09:30:43 -0700 Subject: [PATCH 28/38] make dash-specific network messages searchable (#65) --- _config.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/_config.yml b/_config.yml index 545eddf5..a05bda1a 100644 --- a/_config.yml +++ b/_config.yml @@ -530,6 +530,39 @@ devsearches: - "verack": "/en/developer-reference#verack" - "version": "/en/developer-reference#version" + # Dash - sporks + - "getsporks": "/en/developer-reference#getsporks" + - "spork": "/en/developer-reference#spork" + + # Dash - instantsend + - "ix": "/en/developer-reference#ix" + - "txlvote": "/en/developer-reference#txlvote" + + # Dash - privatesend + - "dsa": "/en/developer-reference#dsa" + - "dsc": "/en/developer-reference#dsc" + - "dsf": "/en/developer-reference#dsf" + - "dsi": "/en/developer-reference#dsi" + - "dsq": "/en/developer-reference#dsq" + - "dss": "/en/developer-reference#dss" + - "dssu": "/en/developer-reference#dssu" + - "dstx": "/en/developer-reference#dstx" + + # Dash - masternode + - "dseg": "/en/developer-reference#dseg" + - "mnb": "/en/developer-reference#mnb" + - "mnget": "/en/developer-reference#mnget" + - "mnp": "/en/developer-reference#mnp" + - "mnv": "/en/developer-reference#mnv" + - "mnw": "/en/developer-reference#mnw" + - "mnwb": "/en/developer-reference#mnwb" + - "ssc": "/en/developer-reference#ssc" + + # Dash - governance + - "govobj": "/en/developer-reference#govobj" + - "govobjvote": "/en/developer-reference#govobjvote" + - "govsync": "/en/developer-reference#govsync" + donation_banner: address: 1GwV7fPX97hmavc6iNrUZUogmjpLPrPFoE display: true From 3415a4dbc78fb9ea476f3984faf921b5516efaf6 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 11 Jun 2018 12:54:57 -0400 Subject: [PATCH 29/38] "Hotfixes" from master (#72) * Typo : max block size (#42) * config - Travis config update (#44) - Temporary fix for deploy 1.9 issue * content - Remove outdated Payment Processor link * [Rebrand] Update main logo * [Rebrand] Update SVG log * [Rebrand] Update icon * [Rebrand] Main logo adjustment --- _includes/devdoc/ref_block_chain.md | 2 +- _includes/templates/index.html | 2 +- favicon.ico | Bin 1150 -> 2552 bytes favicon.png | Bin 271 -> 2552 bytes img/icons/logo_dash_circle_normal.png | Bin 2373 -> 7226 bytes img/icons/logotop.png | Bin 2197 -> 10323 bytes img/icons/logotop.svg | 3412 +------------------------ 7 files changed, 3 insertions(+), 3413 deletions(-) diff --git a/_includes/devdoc/ref_block_chain.md b/_includes/devdoc/ref_block_chain.md index f450e947..9e556c63 100644 --- a/_includes/devdoc/ref_block_chain.md +++ b/_includes/devdoc/ref_block_chain.md @@ -218,7 +218,7 @@ of blocks in regtest mode. {% autocrossref %} Under current consensus rules, a block is not valid unless its -serialized size is less than or equal to 1 MB. All fields described +serialized size is less than or equal to 2 MB. All fields described below are counted towards the serialized size. | Bytes | Name | Data Type | Description diff --git a/_includes/templates/index.html b/_includes/templates/index.html index 65a7cee5..f8eef414 100644 --- a/_includes/templates/index.html +++ b/_includes/templates/index.html @@ -64,8 +64,8 @@ http://opensource.org/licenses/MIT.

Dash Payment Processor

+ -->

Payment Protocol - BIP70

Mining

diff --git a/favicon.ico b/favicon.ico index ec583c122762ed2f1ab5c549b52d8a4724f65dd6..2420b2b65ee664407ff11cfcdfa40fe787136987 100644 GIT binary patch literal 2552 zcmbtW4NMbf7(PH$s!mWh7sPN>vZ=GZ>#y|Ic0yaAn?+JlnUjTUdxg`sSMRPAFmnnz z6g5*P8Or>N)3LY_r}1Zjp%IY9pDN-{$&74nN_3l>NJ) z>=gm*`r>r}7_$t|$)$4*^AR&)7orxzgb9o7PR1Jml*I`1Xvb(2EVkPm6jH3>a~=ru z%$gxS$hpufRQy~+HmD&;43r6_LYS}Sfgq?PEmp*+P4~l@Un+hfO*;_?a=YC^w?s&g z1&~OgP(ZL45{m_lhkz<^&}gy1LCx@y4De_%%1q);8Ydhe%Zr)_7p>y+*+7AhFHdJ7 zK@(IV;S7XxQ2yGODxtt@NF;=za0E1N4W>E>%f1;A#&j!u#A4JrBFJJ6V4N<}#@#@t(tiuwBQy5R#+7ZsYNOfOHC4i6q8B>C~8R&m=z+)T&YQ9wqm{(8w}xShK0(+ zDViWlxZNbM$hmE0A+~a`l~pCXFW7KydvKy8g|RAD@dsoa*iQmXEQVVR2t`yrPO8#w-tFzE-WnSNv3e$ZxMcxI1?#dB}AP zID0F#Qt)p-7K9y)Gz$yLat=*owyA3eIe@|u@Iw-9k1_dLXmwf;4I)ZWSzS7|vPYEOP;mb|&v_WAaYjn~Y!y6(3A?HLEi`O&K~ zO=mp!z1zz96Zb+V;Yzx^>y$CFvgGFvh^ZL|OAr0ntM|aQXBYqOZQ9ord-{|9#`vdI zoAUO5zdlJ7hd*9!w$&sQ&AT+de1PdTRjq4yt+hHiO4+SxfaR;V z{@pnLisDprN4>Lw+Hhcp_V{Nt-o9mNrgtiSy?rk-y~*vJ)0sUvZ`94!>@_PNe)nS1 z@ss9l2@41ks&x-#k@#z@Bov8aUjW?~n6O8snheEGhQN*kt!d$TsqCG%(-GH`0ZKzkyOzBvo4xdJ@TL$O%g zmXW;U`M5FVpt;XLxaTLr4|Aj={9v<$bz@Hscc#s4bEKjTq5n|R7}F6=FOWfgl^l+XQSG`>0NZ-HMg8=&OzOc31FVyzlU&E7^Rai9 z^yvdCoDB!7}Lk~wUWd%2%v53+6{dy)3wczO*d zVi`nUe1oQGlHWsbNv&bD|3d+%hMHi9RHZG4^xH@K|Gi76F-i2=Mlmnk-{x$5QAO%VS6D*hh M;8!S193vU=3pS=C?f?J) diff --git a/favicon.png b/favicon.png index 375f9a9ccbbad31813030e081ab656a8a654b56e..2420b2b65ee664407ff11cfcdfa40fe787136987 100644 GIT binary patch literal 2552 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 Z%BmIrL+^23wBWycPCMPPmA1i0{|Dy>LPG!m literal 2373 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 literal 2197 zcmaKu`9ISS9LGQSx}~8dIp#>DTzwtQeQk`ykRivEaz%$b%vr9;5ynJ1h&f|Lj!}z< zu{q`(Qdncfz9sk9_aFE^-mll|`FOk^kN3~-SDO7L%Oe6O1pojzg0Ql1IOL~8pXcK_ zObO)Ug+uUMwXw7S4*r{`9hG^98~)o?t|5mPwExUuri_aO06uMmg{f2I)EX}CrXvm9 zOI)5r$hKI^)r`C@AbG2RnJ$XdI&P{q(Jd#dS&QH5In^zwf1lBuf12zZv^Js@1hUev zjjP?mU*d%km}uugE5?%1%)`U8u*;xO76b`;(2t?=1f$zq{k{0j&N9mDfEa z>Sq|Qe>`%vhwsFvN|?S8YvMLcU#D|F{nfKuA`~v5z&9-P1d3Az#XV5X2Rz=|wM(Q_ zQ7X!K^aADvS|B4@*5;CQCA4et@$Rm=sQ{%=%99Kp(aSx@ISZ$~Gf0spn%eZO-M(}? zFOLY-*6t@mW$vrtDPG*eoc3>|tf5?+c0YZ`G*VQ2kDc%HKXwL2bbeUtQ+P#TN=#kw z>`eu;sVF2*)|Go(flS(&r)G;Eqf4kT1>HjJ;5V(G$D-0L=TqbmD%9m1t(3U=@e#L(PJr9N`b^f8_t{xx_@dNi+eeeS#h_pH91Z;} zj6|gJR@1Kif+X7DCSJi|B6lNB^c)q(bVjMhFa7hD;dC|BR6VdXT*AWmZHrSa zMM5UQxWvQo!3-bFYt&$kGZm8$W~bhcyO=gu4&#F{wKdnv$gEd-*Mi)JUuAe4xvSRR zkKp2G)lKJRE*B8C2xDOL^#vC!4f7AaX7r>jbwZztY#K?IdfC}c)85Z6f0(2RHLEU8 zXwzcS^*J)``n({a#^CZZ1;0DxKU-h4f_QTLq5b?Kru1aAx8x#KyqKU`xdFtOk9-~a zP(O+}-7-NffWiLZ7)H%>p6#3@h}2cfjf3zUcRXoE!{}oIae!#a*`I> zFEOHL6(-S`t4wl_hA?==;`5Kno+>bcjUqqS7@vV)&8@E;1Q*!Z> zB3?i8_45*a*It>Oo}Vx|wQEahr@>5;Dqv_I-(QwZ!9}=G$vdQyr=*waLcz)1)3+Ro zQ>cs@Jpz`m4hy5ry!`CFuXuny{d+q^xYCJ36Z z`@jY#g~%#;m&0|T;6>AW9l^QpIOc#;I@l72hL>Mmxa=QTCjRaSv?9U|cNyiYW-~xH z0~x;oE#?G35)A4Jfq$laWt+A3?=`R7m5zTY{Hk}Np*QTDxDcrkOp;}BQ%r7{wlntz zs^JygazSG&bIS!KyRq(S)Ebm*{!>y^IZU#A+M|=PY2EP%q=7f$8lDegqf{zV_+zFG zc3cIXD((fzAlk=KY@k_eA(tEBta+{N^o&9FcY`U_>#_=M-!XY>Ms<+Hvy@jcb`BEA zN|0ETm}5%r`=*}z*?AHk+l|$R!e}~wpg;a#+JbT9udex;5Q)1X%2Q7fy+*>T)oTs% zDKy=mf6r2MDumbr2bNroii5aCkW_c-ebm{vo3mhU7ESAiG23nL8%cu_`B`Jh$iJU7 z#2|;ZKD)=|s+<~`0oR-aXZ8qyXu4+#E8~<_2`tbBG z1und>g3O~rq_#NYe+h?nsINfR!v_M1D+dP1Z9{>0Uh>+jc0X0JBaZNPQFt*b))ECp zOUa^r(Gg)a!0Y$XI||tSF&{lu)@v44$YVmkR9EwxI9CzFz_^|gE`j|m{%EdK)d-3b z(c-*){R3XaFJya}>Xj%R7KbA!?&yBQZq?=}5_b^q+ZzJ2n*7G!<2Tm!+xTPZ;RQ*) zp7=5lS5Yl}q6#F(N#IVrb|v?b;|keR6LiL&mE^2!@DzK< zYcz9q{+l_|8J;kL-M9I*XYL%=W%0m`Tyn27P2_&>EUzi(um2a&bpS9kXSdt - - - - - - - - - -]> - +Artboard 1 copy 2 From 73fdafea75f063a887393e7cc2a96ca72173d819 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 11 Jun 2018 13:33:07 -0400 Subject: [PATCH 30/38] [Content] - RPC - Update getmempoolentry - Add `instantsend` and `instantlock` to result - Closes #69 --- .../devdoc/dash-core/rpcs/rpcs/getmempoolentry.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md index 50ed6d5f..62154513 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md @@ -110,6 +110,16 @@ The `getmempoolentry` RPC {{summary_getMemPoolEntry}} p: "Optional (0 or more)" d: "The TXIDs of any unconfirmed transactions this transaction depends upon, encoded as hex in RPC byte order" +- n: "→
`instantsend`" + t: "bool" + p: "Required
(exactly 1)" + d: "True if this transaction was sent as an InstantSend one" + +- n: "→
`instantlock`" + t: "bool" + p: "Required
(exactly 1)" + d: "True if this transaction was locked via InstantSend" + {% enditemplate %} *Examples from Dash Core 0.12.3* @@ -137,7 +147,9 @@ Result: "ancestorsize": 226, "ancestorfees": 226, "depends": [ - ] + ], + "instantsend": false, + "instantlock": false } {% endhighlight %} From 404c5485e62e1a058efbc12176740b5a475f3450 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 11 Jun 2018 15:48:34 -0400 Subject: [PATCH 31/38] [Content] Make compact block messages searchable --- _config.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index a05bda1a..ea69e802 100644 --- a/_config.yml +++ b/_config.yml @@ -228,15 +228,15 @@ devsearches: - 'GetChainTips': "/en/developer-reference#getchaintips" - 'GetConnectionCount': "/en/developer-reference#getconnectioncount" - 'GetDifficulty': "/en/developer-reference#getdifficulty" - - 'GetGovernanceInfo': "/en/developer-reference#getgovernanceinfo" - 'GetGenerate': "/en/developer-reference#getgenerate" + - 'GetGovernanceInfo': "/en/developer-reference#getgovernanceinfo" - 'GetHashesPerSec': "/en/developer-reference#gethashespersec" - 'GetInfo': "/en/developer-reference#getinfo" - 'GetMemoryInfo': "/en/developer-reference#getmemoryinfo" - - 'GetMempoolInfo': "/en/developer-reference#getmempoolinfo" - - 'GetMempoolEntry': "/en/developer-reference#getmempoolentry" - 'GetMempoolAncestors': "/en/developer-reference#getmempoolancestors" - 'GetMempoolDescendants': "/en/developer-reference#getmempooldescendants" + - 'GetMempoolEntry': "/en/developer-reference#getmempoolentry" + - 'GetMempoolInfo': "/en/developer-reference#getmempoolinfo" - 'GetMiningInfo': "/en/developer-reference#getmininginfo" - 'GetNetTotals': "/en/developer-reference#getnettotals" - 'GetNetworkHashPS': "/en/developer-reference#getnetworkhashps" @@ -328,6 +328,7 @@ devsearches: - 'GetHeaders': "/en/developer-reference#get-headers" - 'GetMemPool-contents': "/en/developer-reference#get-mempoolcontents" - 'GetMemPool-info': "/en/developer-reference#get-mempoolinfo" + - 'GetTx': "/en/developer-reference#get-tx" ## Opcodes currently implemented in Bitcoin Core master branch. After ## we document them on Bitcoin.org, these links will be updated @@ -510,12 +511,15 @@ devsearches: - "addr": "/en/developer-reference#addr" - "alert": "/en/developer-reference#alert" - "block": "/en/developer-reference#block" + - "blocktxn": "/en/developer-reference#blocktxn" + - "cmpctblock": "/en/developer-reference#cmpctblock" #- "feefilter": "/en/developer-reference#feefilter" - "filteradd": "/en/developer-reference#filteradd" - "filterclear": "/en/developer-reference#filterclear" - "filterload": "/en/developer-reference#filterload" - "getaddr": "/en/developer-reference#getaddr" - "getblocks": "/en/developer-reference#getblocks" + - "getblocktxn": "/en/developer-reference#getblocktxn" - "getdata": "/en/developer-reference#getdata" - "getheaders": "/en/developer-reference#getheaders" - "headers": "/en/developer-reference#headers" @@ -526,6 +530,7 @@ devsearches: - "ping": "/en/developer-reference#ping" - "pong": "/en/developer-reference#pong" - "reject": "/en/developer-reference#reject" + - "sendcmpct": "/en/developer-reference#sendcmpct" - "tx": "/en/developer-reference#tx" - "verack": "/en/developer-reference#verack" - "version": "/en/developer-reference#version" From 689414c211c638e85f06edbd1d7c7786330d47ab Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 12 Jun 2018 11:31:41 -0400 Subject: [PATCH 32/38] [Content] Add DIPs 2-4 to search --- _config.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/_config.yml b/_config.yml index ea69e802..3dde5510 100644 --- a/_config.yml +++ b/_config.yml @@ -505,6 +505,9 @@ devsearches: "DIPs": - "DIP1: 2MB Blocks": "https://github.com/dashpay/dips/blob/master/dip-0001.md" + - "DIP2: Special Transactions": "https://github.com/dashpay/dips/blob/master/dip-0002.md" + - "DIP3: Deterministic Masternode Lists": "https://github.com/dashpay/dips/blob/master/dip-0003.md" + - "DIP4: Simplified Verification of Deterministic Masternode Lists": "https://github.com/dashpay/dips/blob/master/dip-0004.md" ## Bitcoin P2P Protocol messages documented on Bitcoin.org "P2P Messages": From d835cd69f4c88f259ac97d590dc7901c6b78265b Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 12 Jun 2018 12:14:09 -0400 Subject: [PATCH 33/38] [Config] - Update nokogiri to 1.8.2 (CVE-2017-15412 vulnerability fix) (#74) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 70121a85..069dbd68 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -51,7 +51,7 @@ GEM mercenary (0.3.5) mini_portile2 (2.3.0) multi_json (1.11.2) - nokogiri (1.8.1) + nokogiri (1.8.2) mini_portile2 (~> 2.3.0) parallel (1.6.1) rake (10.4.2) From 3085440f48e56da571c5a887d2c68e4f913a72ed Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 21 Jun 2018 09:21:34 -0400 Subject: [PATCH 34/38] Logo update --- _includes/layout/base/head-logo.html | 2 +- img/icons/logotop.png | Bin 10323 -> 2165 bytes img/icons/logotop.svg | 49 ++++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/_includes/layout/base/head-logo.html b/_includes/layout/base/head-logo.html index 43f52826..df889717 100644 --- a/_includes/layout/base/head-logo.html +++ b/_includes/layout/base/head-logo.html @@ -3,4 +3,4 @@ This file is licensed under the MIT License (MIT) available on http://opensource.org/licenses/MIT. {% endcomment %} - + diff --git a/img/icons/logotop.png b/img/icons/logotop.png index cbee48a7e5252e38f72b1e7124d185085e0b7111..c52e65cc90d04bf94136d7286702ea4a4dce7864 100644 GIT binary patch literal 2165 zcmV-*2#WWKP) zf2`J38NfdX%1seaDv=$CL=?!hWK_e@Wi+-xf~E2gOVll*m1~}ybGBNpSZkcsYztaH zHq3?A0DqC#20AEyC`$#SQWV8QPzz&l6;Lkp$8(wYzVG+@exL96{r-60`<~Bs|G4LU z&Uw!6{XXCGJkNQ~c_9!81OkCTAP@)y0)apv5NLG)>rvn^a0vK2@C?@cJL5car#)7XqOhhL z=NAC40K*cb$E(M6{w%~LyA}8XFf`)~j|h4IA{x=!Q# zpMdXR&5jiP3ZY$s^y0AQAn=ev@_g0qy7Si~F2!nK4*46$apK%fNr!I*mXV)v0K6E} zUPSU_5HJhait}GBVEj}B0}-B9%AFtkiSvVT-T@ncDS1pPhTV~GbLU3^8-b|>=#1Os zD>Az{1XzLdGYZs^NH7rLUrM=Sk*(s^`~kQ#uL(6EF5vwo`h-JTUWjQgI{iKf_))<+ z8d7}>;`{{Qn@B+UA(~Gd{0eJ+kg`wogWsPXtT_?$*>YfhN}XA$f15l1*@E?#>0;F~ z9p}ek&At+J)lsd1I6oU$1DuoNs9Dm%qZKj-B3qqb2;81QXI5T{XuG38eTT8;&AL|S z$J5B=%$KW?vpc0zoq;$%0(gLYjRRmyhCUxr$oRSz=Pv+$s?^bqoHuz2Sp^Ou2e{7A zg}8c2D`9YzLbA85sn#@oCx3AP@Em8Da3EbGwIE1V_(we}$ zh)UW#cF^w!;^Ml#B>n9QqskQ|@AO>{@blEY#MRTRAkWtPK9}SY{5ODaV9ja8_?ibU zD&0Cp(eEcX|0x<9%2D7o>MGz{fT ziH!5tV$I$N8O$5OQ9dgQX!pdAhHU4S0TBn_dH5p#w+@zaSO7>A7{7+ zcr=B+G(;s+$~2Hl&ysYefk@_R4Z4dU?vH5G?0uy9+h)yR3D&%eY`QH%s(DYP(4E9Z z5p8)r*qRqZrMIC}UyD^Xa!uwcbpM=}iGDL{9{$NGX4UKpLa(2`5?G1z!;zR~6!CLC z7q|`ha)RFeo0k$VC6&^j1pd)bLJB-Jf1^rQkj^m>=cfXTk%vNiYvP?)b26e`b2aHq zod2+5gAnp|HLN*;rmV#Iy(AmR!J6N7RR^-FHR5uT6AK5h=8!^PVYH@!I6oSgl(Bag za-?-QQiM1KxCS|Pnuc{)vo7Yd`ns%o&I8uq{7n(%A@Ae-7?LlLIDwpc%p1+aUhCp? zO#A_@Y9Nw_Us|F5gEX$t)gA@C26zqUe~%PV9srKi$b3REPTV1>W?m$dfcp|;-lM+w zGZ;t7YFPH_5zw~NxP7*ZD{7J8{z`h+kv!aU()bM#0F_c8Az*Uv8uW# z?ier!Yqm9%l7KiWyHyl%djXo@z8RuQ`O7qr%J1`SJp++DtFpQc&9EQ14r?|l<(HFB zxr~Om2d>B$$%9za-@Vcuk~)eMX~rX2wxj~ZQ^++ymC||!BB{T!znkL$;L60irurhs zZ|71@olw1jNSahrFqnlMz}F+%^C}I|jPnZC99PH{N-G*jSzmL|gY0p98f$LJ^fhd9 zIBOd4c+PX{%Uf6zb*Y4=U@!|$05h@XXvAk_ZV*-;e?V&n=|u+UZv&ffmN?PV7rr?$u_bJpZu9|uBm(Ox$k*q{(G(oS5cP5!v=#a2>|d90s!v*LjL;zfEyS9I5YwPpeX2<3ANiUX|e#06@~QQrC9XR#JqTIM{K(OdX8PIN)}Uf7t+l5FGk_PwN!i*iA%pwp^9J&asKz(M6eZmnE$>S zlc~IvxH=r^SRX4vPu9)n+2h(a?Yps#<%aFjVq7;{fKd|I)=4{1pca#0lfgfeD6G~D zAwZC?DFI4}MOEIcK~+ZX=2F$pa3nAbb0Gegk>EK`W9QmJIBw z^N9vIFo(hKmYddmNbODuai%J7bo*=cPqEY;#1S1nu29oRzEQQ7IKr`VD zl0e7)SkUR|3a75t`v4j-o19KkW&)LnY5ZX%RcYsm?9qTihxoI>@8R=^>L$nwD%6{s zt~j+b#=S2JlbhSqZygC<-!sN|74JM`kGR?Rp%u}wNDsYU=~qLqLWX)d4Hy}54(WkK zevV+6{uuEX**BqYMO_~LL~o~0zx_(Ku-&fmD!-*SmR_c_zciRoWM@-9P&C$i&`dRp zEiho1r*5k?$a_#9Sg*%0(ZAd@ki4;uWOt_ zmmeE)=|Uhu4AFvm%+zg{XEpv?{OsT<2(I?>?M*BV?&0m0c$LH|Zw|U7oqAP?@=tK2 z@~MB5iL5A^(`ag7jczZ<>l(<97(K8ry;+ur;Mt#HohIIhhf=mjCuL%lW9z+?F)!$& zJKF<&@J^*c>7`-3xVx_x(#*tGtX4SH&Ty5x$rGrdNMk~LxAetP5A(M=P z>i#n3dh5Hpko5xV`7D3cJzLKnt|)Q_PiX}8afbnURg zK&3dFUS9L(0%Aw|;Z~yvi=u)UOm3GK9WLN}R7ao0A1_^9 znumUOTa+Y6gxoJ(^uadQ+jGHg63g<8nE-3<6+uw`3!3Q=vPnyH#G{I9&3q1DS8#4@ z;_@i7rPMk2aCDmQ#X83x4tnc__4i>%zD!?Sz=>D0N}&XH77*$YHyFT;iRT)Np`pQ{ znrZ)dhrwzD{X|kuei-owBN=%eqUaNY300cL4}V65C;xmU5wYQm`2rJ75~xqyJkGSp zIAdaVu)oCS6X>uot+nRkPHIK^rE>5yMfwsDpJgi18hX&Rb%K{A_6}CAEL~kT3ayo(883{!!VjlBP zjtXU6mHQ*62Xie?FF$5g-1E(7AND6i1+_ld%i;^)&*IVRXSf*K?mv5hh87244Nm=U ztWAop1kxj~XE3q|Ly-+~=SDHc zwfiII3p}s-<6#rtHetA#D3S)9&VXu%xyj$TWT23}`swdJ;T-r(p|7QKj4ute9@a)L z=u8?v$1W)8hxEDMuT_=V*lwq$4SgFunHZi^)@j-w^8$WUK(?2QL4Pj};LBSscu69E zjKILD+N|@)*86(#VSLDUjFBsEYpR}Wci1FxsLG}EdNvuUE`r7Ub>Wwbg7T)lfD^G} zPaPsf2@;$pxr3O5J$*J>{yjK95g*-gBfEebnXKSbc<=j{3o8KlUc@g6_6t&z)0g^# z6dd?Mq4eib60*HuHX}jxu|S)l4-buMPow)!dEs0Uj8Z5;Su&Je!^}RtWC(lC{ylH? zcGPUX#i*i}GOS@dn78?pN0(!UJ#!X^B?nTHC!u1$wzu0%M{BtSF?|eUw<2(dhEBFsCVvpR`=Oy7`+hq495~nXT6y+NZDRo(*zd{v z9RE8H?vPIWHnD(zl~K66JqG-%AYie=H9aUy`WXd2vsygdL~`A$aa<&yz~XDZ%=Q&u zn5<~(1To|pyJrmEpnv0N0bFFxR;$!u?P}<`9c;&}P*Zmp> zse%d|WBJy+;ZPMbG2?^7$5j~_T@Oy;Pu}}0&W~ja6Ln{7RUWiD9KHv>m~pq@4*4l7 z%)s=wCzgFOYQMgd+e1BA)QF6X*x1pV5$qidZ!0L~v(!+mYuNL6Su`V@R*3l_gX8xr zKhsEvVx-;%h<6~PBVl3(F+4Ggi=*!?*YH6aQ5UYu*Zd>;q=pAKTi9W*eKxvu#o#B1 zAkVCZK+wJ!Yrbza)n+eJ@m@z#o|1yK@rC|H8+v$|H1pw8tO$z)AL(4B!Du(@yRd$G z^T_Vwg37w z1(;hJ!+UQ^bmW`MdVr-xgA3}-bm^CMDI#+IudaB@V;)!QPsxNE$60W=xoivwOV6J{BdAXqp?&VD!%)}=!kf-(z^ziqcVq$ zE+y6dZ`7WD3L#E;#z!<74vIWZiSlLn@#yVK*9j24!4c`28lT^oZ;JcXR&sBxEB zBxjP{8Y+qQN3~X|ou&~-RBbwl#i0uVVZ!@p0D zC~wG9w(%gILAp6O#X)q|jmxY=_^PQiNwF|CTZxodA}3OmppyGMSlcIN(P^!)qMD_Fb9n8Pf&q1~W!4N^TY zOMGsW-xRMr<6d$Wn|`R7JLu`7|1H;iNLl^a5mM8bxRzPfgFEVFyA&1M*f4U7Y0P4) zCgYq&u3U1!hXbgyKo?CFFwv#5*Xb9d6@;pubSu}l=u5jsUyAWdUNhGNJBULp41Z8w zYZw=BKfZ)}ta{3QSfi651irM8<0+*88e}ay@cDngiNs81Pg&w=^{Yhqm^BWXM_(S5 z@h1*6a>k`I5F{&Yd}kU9-0{l|KC(5ZOHooqC^lBd>D4Hh)L3emDv(BVujE`mj9@Z< zq;T&{BA_Qh9pU>YV=xsYN@X6@IhHMuo?=XYmZVLw{EAB<&;&#Yzwh z(@70Hm3JhE1dZ-2J0B8Q?q5j@w&K+D3`4@d@STEk$2%w~Ta9Mlbu^f?*xY!4z4SsB z`8~Z32Xzp$KD7oF0j@ni(~}yj^tLHG<3j%gSfG&KTPC5KalbYf{pq7d|T>x(d!!T(VHyreJktBXqDP8hIA$Yp4yui&*RkOh)-&s5Lo8u8t)u z%i}Y(1f9-dC~VMPT@thuesfn#QgL*a7SVAL1+X7J%*#9UxHRU^&SgfAvjdhV-V%t-H^UY zJDC-3FqVHDIn@FrESTi>a-*U?60|!;z7y-=mb{;gLu&2Ol@oI_0bbUMh%X;a`!NuA zdtoF9b}UZX{OqQG$m>Dkm+yL@h)I_?(q{>DzFkMfuK#nB%STl8m_kuf-&V!_X%*Z) zY*%#?xc7&Ay-DcM9Dc42Mb3zA{p!53_BKb^T7VC8+q-YECS@bFlS>$x+Xlad`t zY6;FDJAV*aoFGrt&p2CIoCB9-@Hi^jWwDn<&~s=sLZps{IOdAm2~X-5VPR*7eaqOE z#?}|2fM28uUx~K)K?{E#ic)6Z-e?{iJwd)1TM=ew1}FfaPRQF5W>QG;)PwJ-WE?Gi z7PblC&PJ2nwRI1RM5rXklSkojO`v#~ zT=uRd=;kXjH5Y8-oB$Y4LiGUdK!U?r!yXkh*5Ea=Kv&H%TXSdQ{dP-SYG2&I6g4`Q zX>RXeR}OwdruQnLV`T~it9pcj$y%M>%1`f*77_NOA7AdXBdcW#wuuceE#O>9A@Ruw za|PRgW-xxH;S{+wE{!(A!nHS4%#WnbL!xYNRq-kYwB&`ww*g)i=J z?#?;S_QUB1KSfQ~C3e+gYtqKlmI7%8_xwc~%W{Pc%eoee9;_?SV)^4vH(`c~H1>xp zroR+=sazGNHbs{jOfUw5keL%sKfqVK>{eI$fiIHH{ib$R^ZlH&_3Ayr*k#?kb8UW! z`jURwOt(CO;4UB-iRXAI6H0~i#I{qUh1DCI_f2ZuEvm=Z$c6@Kbb@5}%z&(f)ikxF z_Hn9878pVE?l_HCqhg9>uDY3%VqNVtCg-0O&pw&E^50#kXsUHU*=NuN_%Eo4ieg{8 zl?A{5jXXg7rDx>gx?J{*KM9;3WQ*17mW?PeAdoriK&J0eERXv0PEEJ^b_oSb!L8Ea zCOB?XSW8RaO?vfP)NKehpwZg%h-Rtn&?C`^M@BJPl5vK&fCN{N0zD!FgFG(wi}p}o zEAo|;(P(Lpv{yb2n-6(~T8~ycowy^*2g_IUKyA#0)OUHua^|(x_Jon_o>IgEBF*S1 zM$xzOmJA4SpS%&4uv`chKPz%||7p|j!55Pvuhu(p1pkoSm@&r_m8rl|Tq4`3s~-0H z`QUIk3c6LVl`+8u=@tH^W%cvB*>|#gCFVRP4r?l+v~@6 z;eH@Hqo!~os|bXY2sw2P@-;Q@u2`h@M@X3_=npix7gHOiE*Ygh4d0?J^i9;hJ01(Q zc!Yi7DCAZJuH~+&ojMAh+XqcV<{o<>6pTcj)O01BH|b6vi7aIomg5z128zqi-O*-y&UjGQX-v{4g}ngeqo!(l`Wt(G=s76Gb$5y; zxG(d1B3aKO^tW??h%#G06Fg(z-Qzgd>I=kp(7Y+AEyo6m*=Tjr@%?C6uHqYdqFqT> z>Q-@?Z}f_@KwF(%5jNS1I+VL7G2W?K z(8KV3!A#q4@wq}w7nFhaUm@gwoG75AL{JLe*Rl} zu_Kvdc{kYTMR}>i@6RU7ZecXBU(7WzvkxL<3{`BfPdOr1U!8QfwnKAL>ewp|CM;mq zySCU{-A04VsziE$8Nx!`M4E+g@7(2d1DAu|HLK-q7&tzJ@DhRa<`RXfbVR-RXM+|k zLc7;8K(P;>31O4EqF?;7s~F*pyZi2T3aN`XS7H!dicAmB`w=&?PM1<_*XRb`JNqug zs7*>EZRZJ+9S(HdS#Tadf8`ArXK6KY56P90axDs@GBr|vOGlej8!K)wROIs!qd?!1 zLG>^S_hhh~NX3gjGr|UE@Owvu0g-255V-=u3XELWV{5Zt*z*oruajRX9;+B_OYXL* zAJzZHHdp%8s17y){k|fUzESNqRg=$9f2g6HRXroBUo~9QW$7rIR7{hUH7BZ}&HLiZ zI+O1b0yk*virgD~aYieZ5Hr0Qt9}0-Pi}jrABOG2qP77DHsWCTuT! zyVo>3Hb>skmc@d$YWkN%cA%2YyQ*N=H&V)ibt7BUq%U0%Zl07-_n8<0`p;8w@wKfL zVn$Mz246~|IL$JJ@sa7~+~vzr9ydQoBu@7(>IUJR4AHhdh%+7mpw8{z$~(BvE}M70 zaP)PrS-ce0%Fz=3O0Sjg20USG&pTefH~qfb9L~Y-6dNnw!4(G_72sLbxl3I^5hVUXZZ5p2xdBsI?=} z1hHw{>*AGw%7=cV>9DWZ;(le*-%#m)GyGzRj}>d-6gF&8oC~ndHeOLKeJ}hZuG4uHTm0{U_6lctT{+MJGOYMa)A2s@&opFEPZ{i)fghEemQ=*02L* zZZ!V}oH|n~H}9oKUd5n6_6${>kYJL4m=&hC)Y_VYi|j#GYiGVz!s@`^ps}uR4Xv*F ztQSU?%x@iK!+PI1FcLKOfMI!QxbPn}x4Fq<)`V~r+w3Y-3BFKN6+0`Xx;qa7Z#g%3 zeIRG$``nK_kL+fcz&TgW@*VMd@`~LX%$)5U?XiBos zc}dweV~9pI0h+sKoff=gk1ev;<+OFnbc*Yf$gpcuj=7>QNiX3 z`V^gw<|BYn2X<75{DC$ANBz>>nLA2$+J?|>{>6P7S1ryB{0XN~j9U2)FA}hKTDDv; zQ}Sv4hO!`{2;&Jh>>-?|W9h!&7}jw0GAq|L*x}tnD^wf zrF7|%ZQaW%4nEvegyNYI487=BJuMCS&jfI&?eI1_pv2c+_m3oaZRSVr9f$f?#NF{@hGu**3-EB7%t9tnl&@O&ihi-cYk&BfJ2GUJXaKGu^oenI^G#uuQ zsMR8Ooc^pGa?#6Q&2YL){R#@_eQmRVe~^F7B6kTa| zudu#j)N2zdNJ)go&K(nIW+3Oy)amGD8zTl8csMa4+$mgglQROW8BvUj4&c~);Pjg^3@l2i!y$UN z+hiUHKMnITDKXa-Nz?-j*(AQE@@y>Ckjg|Ta8)U*#Q~7l{2^lsJ^*LP`Wft5(Y5_t z#^uafh;NKUQ*pl2`#NIA>9bobmIWk`pfo^3%jJ%CJO8t`DC|)1#xujX{4 zVDMVFSmq?a^f9UD&ByQ%K`)~~h%`_+b_4FrQsa|juB0Et+&l?wm1GUSt$SvTMbU8^ z9+>$`XkCTpM(17`rtf*U4>)6D+=|R<^wC0JM7=OE{fS{CgOUjeM!`8(8^%@jmvZ8l z-fBrY7@iD}_e7i!XJ+}RJj_j&$plN!c7016s+pF;E8xPUj3D0RXJ)eL-B$|aypI;* zwRG!&il~wUUk$hOB7|}8`^OCXf31=Sby&{j-XoQhWos7tqJ)KzALG0_vr)UB$lc3l zeruFtP&}P0lxepMzz17~{K(ks{TSYsDlW#SA*ughHKypDhIkhfTFj09M7r~=>!M04 z#MFQiM_5Q~5^ldPO1n27ijulzm0J_G!jP!GK)M+lP9uelgdJRo-~0P^IE^Mzzqd>G zR5Fm%os(1;#6O)v#Br$Oy((^QYP5~sSD9LZKm`@S!0Pazc*f&p` zwE!X^g+)W&*xdinNu6|zsfN8D@aUOJ0=f{)ueYP;rF*TydB85Ys@_{KZRgbp;0urR zOTrJztrNF`8jMMQwBKbwBxE*F4}`f7dKkzHrV)s~XV)=EjJj-slgmILFHuqZ0?EW*>b^1e z<=f<;k13+AG4WBPM_{P6tV^b`viJ2(fNACv$s3@&X+kSV`8V8NHb)0w?i4U9BGo`! z*m+^fMjUg>EYQg)05gmsD(@G9bsLK{PM1?ZS-Uu>Tig;!`KkAr;>UBuX{K9D+URTz z(@UjohU;NM{lIbC;)@)UIDsg7{1af;PxbM;Ln29>p;!1(^mxlM1j9J*H9uz?%(3ma zKU8ZFdLv;hxQR=g-;k5&e-t0`@YKJD;L^1G%DrlJG^u+pl+D6%h8OkyL$1Tc83l?C zJ2~yokK@xj!KsLV%`etq7hT7#A>*Q=k^PA9(KrLO%*NJz{gJrYj$Rl|;sM*ooN`;|sCo|BTGp2>S7bC| z%-Johf(NW^)~e0QzCzI3PN=1(DxBuXBHX@=On}%1G=9B*F48Shc=wY$FTm%;9kf7T z09^gh`F^vQI-`=KS}-UhqqHs^2dZN za?-!MHjP4ps1$WgAvIIVtM7A^v5Dg&ffiLuN&D^NL_WWF zVTQSDS+0n)6)vw8Jt*|be1LOy{1c`U?LF4%V@+9l+eV?~5u~2v=9?lN)BG-Wz{b_#^t^ZGlERr2ml0NJynrA+(ys@BSWoIr{B%NO!vFL%X~x*qAzjn5i4z$L)RmdSe? z0IU@@L0pVVf<8Cj`v}Db{}|o!AJjnWhR%sV8p#-TQ3u4D`4kJ%j&O~&eAlp_$)Lg# zVnD_Pie&zjjxk-mnD2v~0XePBHaG{Ql`oFc*Bm{)<-8ZFgPxB3h?-u=hI1=$50@aU z)g^Jy`!BZ*~;&Y>i1iRcDtBIP=?oGu&UxUvZhP^jXkNT-m*_~qt_+bfz zhmkh#R{!AI&EAROZ{~yGo!ImPElWBRGI)+3W~Y_wjB>`MO`gfmX+g+9sOE+Ajah08 zO$DER{!R*GLncm2%313Pqhqcyodz#v`wS;Nqps&Cazc)q&=Z;V5zXJTd&aVK=rL`i zjpCicNQs+YQqV+lppNxp;?xO&_v>@_NN4(<0N~5v-~ncaV3grg@3$6w^8NB^grLmN z8Oh3qked?`vOc~i`9+%Ns(Q!EO&p#+&l>&(Gn=&9R;oRtOHp|eHSCW}3_ifY*ku5g zCD^(gHCn;zN6zk7XZH*(8T4>+G5mG{g=mUVCLX7%>XK&eo2X|Q;FiJy|G6VpRP-tf zNd|tM+Z+w=&>PWd(qmwwxK>W7b>*E`*Eh|#@6S}YZjfVz@y@=0vc|XtV`OVmF2j)1 z4!Y}@i@&C&B)zI3rb_i%r5;mOL`|Y zf@z#L^MQq<$lvuY7c$K70?9d-@aG5*|7=D9X5xAMS-L+e{^0LScs>g1lQq;EjgR#! z%g>AF;2U!sas81p{9#5sEnu`($c>g>w=+DVdZ_8r{A?_!3ssDi;=q*X$0kaFn%(QI z=UcSF>fjPM8Ky}leKL3HU?cFn>M*kyKuZ9?*K7|srTsqUDy<5Sg~@2LB?oj;MUL@h zU>60ihCU6*8U4;?ewD=ZJ3#4<4zuXwO&w)veUiJgunkC$thY+V^d;=0`8=89gqm7S z008(^%W$%x)jVk_7g;DK3nzJd4l;$F8y}#pwcY2@A&X>lSW;$rxm3>;wsw7dKN%Nn z+1rOXF9IT;CBg9j{w8xRYJFkB;`fkNQg{As;>M}}FZ(uNL~EQy?cF-2W=p71fG8mA zfr5OucoFaBPuXOeRKAnU-&Dsp=d}`&rL3ir#XN2VGOcvZhJA%)r$j)wR^E$r#HJg( zgWQG|m$LejmGa_3&lipRr+0{wP)_Qxw)(p(H3^fXZkW^B-qpUfAlWZfj9hF`FWNv* z*$1>=P?8KOoz$oIk-e2H{Mu6yr;$l4U5s`}Wq| z-co3gi-^?%+er*Vbu#bvfM1LnX?g6KP6x=_(`e325%a@CkM$P>iM&wupAS&}0(*o! z9>BqguF=g8Z7y#izGt)R^$k9x?e-UA^L-wDpJ|Tt{BKGW13nD+D^k_!@P}wPYL{{o zYP_k+TK4}&QLXFwj!MtR!{B+`g&6DsLQgb{b0I~MU0Zw|)EJ%MQkeI1rs@rreg<7q z?`_9I1+XG2nB8J9j!!5ti?OCXI>L*`AC-<=bPxZ2^OlkLnH4VbzQy2 z_lJJv$COfv)bp08W@;;;CJ~F#t0OB)`d#hTY?nFZ9&^yNE=1wnLm#zv=^%w6-4`uH cTEsKT&CIb+%g}SlKVSFcrIn?sB#Z+72bDRGX8-^I diff --git a/img/icons/logotop.svg b/img/icons/logotop.svg index 11addec6..5a697681 100644 --- a/img/icons/logotop.svg +++ b/img/icons/logotop.svg @@ -1 +1,48 @@ -Artboard 1 copy 2 + + + + + From 44c55257a8aeb234fe1795e4440d6c09a7c2b6e5 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 28 Jun 2018 12:58:23 -0400 Subject: [PATCH 35/38] [Content] - P2P - Update PrivateSend messages to include input counts (#73) - Updated `dsa` and `dsq` messages with nInputCount field - Updated notes in Guide Closes #70 --- _includes/devdoc/guide_dash_features.md | 2 ++ _includes/devdoc/ref_p2p_networking.md | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 5aaa81a1..c612bdfe 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -203,10 +203,12 @@ mixing pool. * The `dsa` message contains a collateral transaction * This transaction uses a collateral input created in the [Wallet Preparation](#privatesend-wallet-preparation) phase * The collateral is a signed transaction that pays the collateral back to a client address minus a fee of 0.001 DASH + * As of protocol version 70209, the `dsa` message indicates how many inputs will be provided to the pool when Spork 6 is active _**Step 3 - Queue**_ * A masternode broadcasts `dsq` messages when it starts a new queue. These message are relayed by all peers. + * As of protocol version 70209, when Spork 6 is active the `dsq` message indicates how many inputs must be provided to participate in the pool. * Once the masternode has received valid `dsa` messages from 3 clients (`nPoolMaxTransactions`), it sends a `dsq` message with the ready bit set ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/chainparams.cpp#L173)) * Clients must respond to the Queue ready within 30 seconds or risk forfeiting the collateral they provided in the `dsa` message (Step 1) ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend.h#L22)) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 62448ada..6043e675 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1819,14 +1819,18 @@ queue the remainder of the time. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | | 4 | nDenom | int | Required | Denomination that will be exclusively used when submitting inputs into the pool +| 4 | nInputCount | int | Required | *Added in protocol version 70209. Only present when Spork 6 is active.*

Number of inputs required to join the queue | 216+ | txCollateral | `tx` message | Required | Collateral TX that will be charged if this client acts maliciously The following annotated hexdump shows a `dsa` message. (The message header has -been omitted.) +been omitted.) Note that the 'Required inputs' bytes will only be preset if +Spork 6 is active and protocol version => 70209. {% highlight text %} 02000000 ................................... Denomination: 1 Dash (2) +03000000 ................................... Inputs required: 3 + Collateral Transaction | Previous Output | | @@ -2148,6 +2152,7 @@ message. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | | 4 | nDenom | int | Required | Denomination allowed in this mixing session +| 4 | nInputCount | int | Required | *Added in protocol version 70209. Only present when Spork 6 is active.*

Number of inputs required to participate in this mixing session | 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is hosting this session | 8 | nTime | int64_t | Required | Time this `dsq` message was created | 1 | fReady | bool | Required | Indicates if the mixing pool is ready to be executed @@ -2163,11 +2168,14 @@ Denominations (per [`src/privatesend.cpp`][privatesend denominations]) | 8 | 0.01 Dash The following annotated hexdump shows a `dsq` message. (The -message header has been omitted.) +message header has been omitted.) Note that the 'Required inputs' bytes will only +be preset if Spork 6 is active and protocol version => 70209. {% highlight text %} 08000000 ............................. Denomination: 0.01 Dash (8) +03000000 ............................. Required input(s): 3 + Masternode Outpoint | aeed0e77c6db30a616507a37a129bc88 | 1811f08afc51dd485d5322f36c1f04c5 ... Outpoint TXID From 207c9824e490864f61beb08952ef398e90dd0f27 Mon Sep 17 00:00:00 2001 From: thephez Date: Fri, 29 Jun 2018 16:07:42 -0400 Subject: [PATCH 36/38] [Content] Hexdump updates for 12.3 (#77) * Content - P2P - mnget message update - Related to #41 * Content - P2P - mnp hexdump updated with new fields - Related to #58 * Content - P2P - add hexdump for getblocktxn message * Content - P2P - add hexdump for blocktxn message * Content - P2P - update cmpctblock hexdump to include shortid --- _includes/devdoc/ref_p2p_networking.md | 100 +++++++++++++++++++------ 1 file changed, 76 insertions(+), 24 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 6043e675..2b71f694 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -232,14 +232,55 @@ The structure of `BlockTransactions` is defined below. | 1 or 3 | transactions
_length | CompactSize | As used to encode array lengths elsewhere | The number of transactions provided | *Varies* | transactions | List of transactions | As encoded in `tx` messages in response to `getdata MSG_TX` | The transactions provided - {% endautocrossref %} @@ -319,8 +360,8 @@ e9600194d85a64a50d1cc02b0181 ................ Block Header 3151b67e5b418b9d ............................ Nonce -00 .......................................... Short IDs Length: 0 -............................................. Short IDs: None +01 .......................................... Short IDs Length: 1 +483edcd3c799 ................................ Short IDs 01 .......................................... Prefilled Transaction Length: 1 @@ -442,14 +483,16 @@ The structure of `BlockTransactionsRequest` is defined below. | *Varies* | indexes_length | CompactSize uint | As used to encode array lengths elsewhere | The number of transactions requested | *Varies* | indexes | CompactSize uint[] | Differentially encoded | Vector of compactSize containing the indexes of the transactions being requested in the block. - {% endautocrossref %} @@ -2584,6 +2627,16 @@ The `mnget` message requests masternode payment sync. The response to an `mnget` message is `mnw` message inventories. Masternodes ignore this request if they are not fully synced. +{% highlight text %} +Note: Dash Core limits how frequently a masternode payment sync can be +requested. Frequent requests will result in the node being banned. +{% endhighlight %} + +There is no payload in a `mnget` message. See the [message header +section][section message header] for an example of a message without a payload. + +![Warning icon](/img/icons/icon_warning.svg) **The following information is provided for historical reference only.** + In protocol versions <=70208, the `mnget` message has a payload consisting of an integer value requesting a specific number of payment votes. In protocol versions >70208, the `mnget` message has no payload. @@ -2592,11 +2645,6 @@ integer value requesting a specific number of payment votes. In protocol version | ---------- | ----------- | --------- | -------- | -------- | | 4 | nMnCount | int | Deprecated | _Deprecated in Dash Core 0.12.3_

Number of masternode payment votes to request -{% highlight text %} -Note: Dash Core limits how frequently a masternode payment sync can be -requested. Frequent requests will result in the node being banned. -{% endhighlight %} - The following annotated hexdump shows a pre-0.12.3 `mnget` message. (The message header has been omitted.) @@ -2630,22 +2678,26 @@ message header has been omitted.) {% highlight text %} Masternode Unspent Outpoint -| 0bfa3616099771bb5f36181ff4060a9b -| 9afe7b3e47d7f4327800f0f8ce586c6e ......... Outpoint TXID -| 01000000 ................................. Outpoint index number: 1 +| ce12d7f32945c9544c5aeb0dcf131174 +| a6269b64b40f9461595e26689b573c58 ......... Outpoint TXID +| 00000000 ................................. Outpoint index number: 0 -a26a68ebb733192c1c40f9b42f872ac0 -e23d4c360e20d5ab6608000000000000 ........... Chaintip block hash +6c7da9d9eae78644a3406eac8ed0be3b +f15eb4bc369acc95b106f37400000000 ........... Chaintip block hash -1bbfa95900000000 ........................... Sig. Timestamp: 2017-10-01 20:12:11 UTC +3c84025a00000000 ........................... Sig. Timestamp: 2017-11-08 04:12:44 UTC Masternode Signature | 41 ....................................... Bytes in signature: 65 -| 1c2b205bd6ba472d7a9495f049ef66dc -| f844154846e25f2389385ba2d3e95cde -| cf3ccf82bc26d94c6fdafcd7b965bb61 -| db02d05483595196ea4d92b2e797612b -| 79 ....................................... Masternode Signature +| 1c7572842058a2075b8a996c3905e306 +| 27a581a0b0702842ac4088e6c1a61b22 +| 8e79a4d8aed0f413150f976045f256ef +| 2727e68a36622efcabfd60a554533b8c +| 6f ....................................... Masternode Signature + +01 ......................................... Sentinel Current: true +02000100 ................................... Sentinel Version (1.0.2) +ecd50100 ................................... Dashd Deamon Version (12.3.0) {% endhighlight %} {% endautocrossref %} From cd7c9bfc7f74fccd288277fa3964fff772c552ad Mon Sep 17 00:00:00 2001 From: thephez Date: Fri, 29 Jun 2018 16:12:15 -0400 Subject: [PATCH 37/38] v12.3 release updates (#76) * content - Update P2P reference - Change protocol version to 70209 - Highlight some significant changes in release * content - Change protocol version to 70210 - Update release date info --- _includes/devdoc/dash-core/rpcs/quick-reference.md | 2 +- _includes/devdoc/ref_p2p_networking.md | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index aeb162b6..8275d351 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -19,7 +19,7 @@ Use v0.n.n in abbreviation title to prevent autocrossrefing. {% assign DASH_NOT_IMPLEMENTED='**Not Implemented**' %} - + {% assign DASH_NEW0_12_3='**New in Dash Core 0.12.3**' %} {% assign DASH_UPDATED0_12_3='**Updated in Dash Core 0.12.3**' %} diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 2b71f694..3f4afbcb 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -66,11 +66,12 @@ with the most recent versions listed first. (If you know of a protocol version that implemented a major change but which is not listed here, please [open an issue][docs issue].) -As of Dash Core 0.12.2.0, the most recent protocol version is 70208. +As of Dash Core 0.12.3.0, the most recent protocol version is 70210. | Version | Initial Release | Major Changes |---------|------------------------------------|-------------- -| 70208 | Dash Core 0.12.2.x
(Nov 2017) | • DIP-0001 (2MB blocks)
• Fee reduction (10x)
• InstantSend fix
• PrivateSend improvements
• _Experimental_ HD wallet
• Local Masternode support removed +| 70210 | Dash Core 0.12.3.x
(July 2018) | • Named Devnets
• New signature format / Spork 6 addition
• Bitcoin Core 0.13/0.14 backports
• [BIP90][]: Buried deployments
• [BIP147][]: NULLYDUMMY enforcement
• [BIP152][] Compact Blocks
• Transaction version increased to 2
• Zero fee transactions removed
• Pruning in Lite Mode +| 70208 | Dash Core 0.12.2.x
(Nov 2017) | • [DIP1][] (2MB blocks)
• Fee reduction (10x)
• InstantSend fix
• PrivateSend improvements
• _Experimental_ HD wallet
• Local Masternode support removed | 70206 | Dash Core 0.12.1.x
(Mar 2017) | • Switch to Bitcoin Core 0.12.1
• BIP-0065 (CheckLockTimeVerify)
• BIP-0112 (CheckSequenceVerify) | 70103 | Dash Core 0.12.0.x
(Aug 2015) | • Switch to Bitcoin Core 0.10
• Decentralized budget system
• New IX implementation | 70076 | Dash Core 0.11.2.x
(Mar 2015) | • Masternode enhancements
• Mining/relay policy enhancements
• BIP-66 - strict DER encoding for signatures From edc6412b8c028dae0cb720f10d14eced2b1ad11b Mon Sep 17 00:00:00 2001 From: thephez Date: Fri, 29 Jun 2018 16:35:28 -0400 Subject: [PATCH 38/38] Dash for devs updates (#78) * Content - Remove bitcoin logo from button * Content - Dashify "for developers" page --- _includes/layout/base/head-menu.html | 2 +- _sass/screen.scss | 2 +- ...bitcoin-for-developers.html => dash-for-developers.html} | 4 ++-- _translations/en.yml | 6 +++--- doxygen/doxygen_header.html | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) rename _templates/{bitcoin-for-developers.html => dash-for-developers.html} (91%) diff --git a/_includes/layout/base/head-menu.html b/_includes/layout/base/head-menu.html index ce81849d..184fe25b 100644 --- a/_includes/layout/base/head-menu.html +++ b/_includes/layout/base/head-menu.html @@ -4,7 +4,7 @@ http://opensource.org/licenses/MIT. {% endcomment %}