RPC/P2P - Updates from removing legacy MN system (#111)

* Spork updates
 - Remove 8, 10, 14
 - Add 18-20
 - Update hard-coded link
 - Update RPC example

* P2P - Move deprecated inventories to new table

* P2P - Move deprecated MN messages

* RPC - Update getgovernanceinfo
Removes `masternodewatchdogmaxseconds` and `sentinelpingmaxseconds`

* RPC - Update mnsync
 - Removes `IsMasternodeListSynced` and `IsWinnersListSynced`
 - Deprecate SYNC_LIST and MNW

* RPC - masternode
 - Move deprecated commands to bottom and remove sub-heading level

* RPC - Remove details of deprecated masternode commands

* RPC - masternode count updates

* RPC - masternode status updates

* RPC - Remove masternodebroadcast and sentinelping

* RPC - Update reference and table with update versions

* RPC - masternodelist updates

* RPC - masternodelist filter updates
This commit is contained in:
thephez 2019-03-21 11:32:33 -04:00 committed by GitHub
parent 097903ca2d
commit ece2d5012a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 662 additions and 995 deletions

View file

@ -19,6 +19,10 @@ Use v0.n.n in abbreviation title to prevent autocrossrefing.
<!-- Dash - Not Implemented -->
{% assign DASH_NOT_IMPLEMENTED='**<abbr title="Not Implemented in Dash">Not Implemented</abbr>**' %}
<!-- Dash Core 0.14.0.0 ??? 2019 -->
{% assign DASH_NEW0_14_0='**<abbr title="New in Dash Core v0.14.0">New in Dash Core 0.14.0</abbr>**' %}
{% assign DASH_UPDATED0_14_0='**<abbr title="Updated in Dash Core v0.14.0">Updated in Dash Core 0.14.0</abbr>**' %}
<!-- Dash Core 0.13.2.0 Mar 2019 -->
{% assign DASH_NEW0_13_2='**<abbr title="New in Dash Core v0.13.2">New in Dash Core 0.13.2</abbr>**' %}
{% assign DASH_UPDATED0_13_2='**<abbr title="Updated in Dash Core v0.13.2">Updated in Dash Core 0.13.2</abbr>**' %}
@ -155,16 +159,14 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
{% autocrossref %}
* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_13_0}}
* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_14_0}}
* [GetPoolInfo][rpc getpoolinfo]: {{summary_getPoolInfo}}
* [GetSuperblockBudget][rpc getsuperblockbudget]: {{summary_getSuperblockBudget}}
* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_13_0}}
* [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_13_0}}
* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}}
* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_12_3}}
* [MnSync][rpc mnsync]: {{summary_mnSync}}
* [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_14_0}}
* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_14_0}}
* [MnSync][rpc mnsync]: {{summary_mnSync}} {{DASH_UPDATED0_14_0}}
* [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}}
@ -337,5 +339,7 @@ default.
* [GetHashesPerSec][rpc gethashespersec]: {{summary_getHashesPerSec}}
* [GetWork][rpc getwork]: {{summary_getWork}}
* [GetGenerate][rpc getgenerate]: {{summary_getGenerate}}
* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}}
* [SentinelPing][rpc sentinelping]: {{summary_sentinelPing}}
* [SetGenerate][rpc setgenerate]: {{summary_setGenerate}}
{% endautocrossref %}

View file

@ -30,16 +30,6 @@ The `getgovernanceinfo` RPC {{summary_getGovernanceInfo}}
p: "Required<br>(exactly 1)"
d: "The absolute minimum number of votes needed to trigger a governance action"
- n: "→<br>`masternodewatchdogmaxseconds`"
t: "number (int)"
p: "Required<br>(exactly 1)"
d: "*DEPRECATED in Dash Core 0.12.3*<br><br>Sentinel watchdog expiration time in seconds"
- n: "→<br>`sentinelpingmaxseconds`"
t: "number (int)"
p: "Required<br>(exactly 1)"
d: "*Added in Dash Core 0.12.3.0*<br><br>Sentinel ping expiration time in seconds"
- n: "→<br>`proposalfee`"
t: "number (int)"
p: "Required<br>(exactly 1)"
@ -62,7 +52,7 @@ The `getgovernanceinfo` RPC {{summary_getGovernanceInfo}}
{% enditemplate %}
*Example from Dash Core 0.13.0.0*
*Example from Dash Core 0.14.0*
{% highlight bash %}
dash-cli -testnet getgovernanceinfo
@ -70,10 +60,8 @@ dash-cli -testnet getgovernanceinfo
Result:
{% highlight json %}
{
"governanceminquorum": 1,
"masternodewatchdogmaxseconds": 3600,
"sentinelpingmaxseconds": 3600,
"proposalfee": 5.00000000,
"superblockcycle": 24,
"lastsuperblock": 250824,

View file

@ -17,62 +17,6 @@ The `masternode` RPC {{summary_masternode}}
{% endautocrossref %}
###### Masternode<!--noref--> Check
<!-- no subhead-links here -->
{% autocrossref %}
The `masternode<!--noref--> check` RPC forces a check of all masternodes and removes invalid ones.
*Parameters: none*
*Result---number of removed and total masternodes*
{% itemplate ntpd1 %}
- n: "`result`"
t: "object"
p: "Required<br>(exactly 1)"
d: "Masternode check results"
- n: "→<br>`removedTotalCount`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Count of all masternodes that were removed"
- n: "→<br>`removedEnabledCount`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Count of enabled masternodes that were removed"
- n: "→<br>`totalCount`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Count of all masternodes"
- n: "→<br>`enabledCount`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Count of enabled masternodes"
{% enditemplate %}
*Example from Dash Core 0.13.0*
{% highlight bash %}
dash-cli -testnet masternode check
{% endhighlight %}
Result:
{% highlight bash %}
{
"removedTotalCount": 0,
"removedEnabledCount": 0,
"totalCount": 15,
"enabledCount": 15
}
{% endhighlight %}
{% endautocrossref %}
###### Masternode<!--noref--> Count
<!-- no subhead-links here -->
@ -85,7 +29,7 @@ The `masternode<!--noref--> count` RPC prints the number of all known masternode
{% itemplate ntpd1 %}
- n: "Mode"
t: "string (hex)"
p: "Optional<br>(exactly 1)"
p: "Deprecated"
d: "Which masternodes to count:<br>`total` - Pre-0.12.3 default result,<br>`ps` - PrivateSend capable,<br>`enabled` - Enabled,<br>`all` - All,<br>`qualify` - Eligible for payment"
{% enditemplate %}
@ -103,24 +47,14 @@ The `masternode<!--noref--> count` RPC prints the number of all known masternode
p: "Required<br>(exactly 1)"
d: "Count of all masternodes"
- n: "→<br>`ps_compatible`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Count of PrivateSend compatible masternodes"
- n: "→<br>`enabled`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Count of enabled masternodes"
- n: "→<br>`qualify`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Count of masternodes qualified to receive payment"
{% enditemplate %}
*Example from Dash Core 0.12.3*
*Example from Dash Core 0.14.0*
{% highlight bash %}
dash-cli -testnet masternode count
@ -129,10 +63,8 @@ dash-cli -testnet masternode count
Result:
{% highlight bash %}
{
"total": 142,
"ps_compatible": 13,
"enabled": 13,
"qualify": 6
"total": 185,
"enabled": 130
}
{% endhighlight %}
@ -149,7 +81,7 @@ Result:
{% enditemplate %}
*Example from Dash Core 0.12.3*
*Example from Dash Core 0.14.0*
{% highlight bash %}
dash-cli -testnet masternode count all
@ -157,7 +89,7 @@ dash-cli -testnet masternode count all
Result:
{% highlight bash %}
Total: 129 (PS Compatible: 97 / Enabled: 97 / Qualify: 90)
Total: 185 (Enabled: 130)
{% endhighlight %}
**Get total count of all masternodes (default output of `masternode<!--noref--> count` pre-0.12.3)**
@ -258,92 +190,6 @@ Result:
}
{% endhighlight %}
{% endautocrossref %}
###### Masternode<!--noref--> Debug
<!-- no subhead-links here -->
{% autocrossref %}
The `masternode<!--noref--> debug` RPC prints masternode status.
{{WARNING}} `masternode<!--noref--> debug` was removed in Dash Core 0.12.2.2.
*Parameters: none*
*Result---masternode status*
{% itemplate ntpd1 %}
- n: "Result"
t: "string"
p: "Required<br>(exactly 1)"
d: "Masternode status"
{% enditemplate %}
*Example from Dash Core 0.12.2*
{% highlight bash %}
dash-cli -testnet masternode debug
{% endhighlight %}
Result:
{% highlight bash %}
Masternode successfully started
{% endhighlight %}
{% endautocrossref %}
###### Masternode<!--noref--> Genkey
<!-- no subhead-links here -->
{% autocrossref %}
The `masternode<!--noref--> genkey` RPC generates a new masternodeprivkey.
*Parameter #1---generate compressed key*
{% itemplate ntpd1 %}
- n: "Compressed"
t: "bool"
p: "Optional<br>(0 or 1)"
d: "*Added in Dash Core 0.13.0*<br><br>If set to `true`, generates a compressed private key (default: false)"
{% enditemplate %}
*Result---masternode private key*
{% itemplate ntpd1 %}
- n: "Result"
t: "string"
p: "Required<br>(exactly 1)"
d: "Masternode private key"
{% enditemplate %}
*Example from Dash Core 0.13.0*
{% highlight bash %}
dash-cli -testnet masternode genkey
{% endhighlight %}
Result:
{% highlight bash %}
92Mn5DQpnBHjFPbS3ZXcX3EdhuET18u3eXTTtVsdDzdcAMaXqtG
{% endhighlight %}
*Example from Dash Core 0.13.0 (compressed key)*
{% highlight bash %}
dash-cli -testnet masternode genkey true
{% endhighlight %}
Result:
{% highlight bash %}
cUHWQZQQNtrnvyYS3hERYyuzttvFAdw6JkrwS6T2gTZreH3oY6NJ
{% endhighlight %}
{% endautocrossref %}
###### Masternode<!--noref--> Outputs<!--noref-->
@ -385,189 +231,6 @@ Result:
{% endautocrossref %}
###### Masternode<!--noref--> Start
<!-- no subhead-links here -->
{% autocrossref %}
The `masternode<!--noref--> start` RPC starts a local hot masternode configure in dash.conf.
{{WARNING}} `masternode<!--noref--> start` was removed in Dash Core 0.12.2.2. Local
masternode support was removed for security reasons.
*Parameters: none*
*Result---masternode status*
{% itemplate ntpd1 %}
- n: "Result"
t: "string"
p: "Required<br>(exactly 1)"
d: "Masternode status"
{% enditemplate %}
*Example from Dash Core 0.12.2*
{% highlight bash %}
dash-cli -testnet masternode start
{% endhighlight %}
Result:
{% highlight bash %}
Masternode successfully started
{% endhighlight %}
{% endautocrossref %}
###### Masternode<!--noref--> Start-alias
<!-- no subhead-links here -->
{% autocrossref %}
The `masternode<!--noref--> start-alias` starts a single remote masternode by assigned alias configured in masternode<!--noref-->.conf.
*Parameter #1---masternode alias*
{% itemplate ntpd1 %}
- n: "Alias"
t: "string"
p: "Required<br>(exactly 1)"
d: "Alias of the masternode to start"
{% enditemplate %}
*Result---masternode status*
{% itemplate ntpd1 %}
- n: "Result"
t: "string"
p: "Required<br>(exactly 1)"
d: "Masternode status"
{% enditemplate %}
*Example from Dash Core 0.12.2*
{% highlight bash %}
dash-cli -testnet masternode start-alias MN01
{% endhighlight %}
Result:
{% highlight json %}
{
"alias": "MN01",
"result": "successful"
}
{% endhighlight %}
{% endautocrossref %}
###### Masternode<!--noref--> Start-mode
<!-- no subhead-links here -->
{% autocrossref %}
The `masternode<!--noref--> start-<mode>` RPC starts remote masternodes configured in
masternode<!--noref-->.conf. Valid modes are: `all`, `missing`, or `disabled`.
*Parameters: none*
*Result---masternode status*
{% itemplate ntpd1 %}
- n: "Result"
t: "string"
p: "Required<br>(exactly 1)"
d: "Masternode status"
- n: "→<br>`overall`"
t: "string"
p: "Required<br>(1 or more)"
d: "Reports masternode start successes/failures"
- n: "→<br>`detail`"
t: "object"
p: "Required<br>(exactly 1)"
d: "Start details"
- n: "→ →<br>`status`"
t: "object"
p: "Required<br>(1 or more)"
d: "Name of the masternode alias"
- n: "→ → →<br>`alias`"
t: "string"
p: "Required<br>(exactly 1)"
d: "Masternode alias"
- n: "→ → →<br>`result`"
t: "string"
p: "Required<br>(exactly 1)"
d: "Start result"
{% enditemplate %}
*Example from Dash Core 0.12.2*
Start all masternodes in masternodes<!--noref-->.conf
{% highlight bash %}
dash-cli -testnet masternode start-all
{% endhighlight %}
Result:
{% highlight json %}
{
"overall": "Successfully started 1 masternodes, failed to start 0, total 1",
"detail": {
"status": {
"alias": "MN01",
"result": "successful"
}
}
}
{% endhighlight %}
Start missing masternodes in masternodes<!--noref-->.conf
{% highlight bash %}
dash-cli -testnet masternode start-missing
{% endhighlight %}
Result:
{% highlight json %}
{
"overall": "Successfully started 0 masternodes, failed to start 0, total 0",
"detail": {
}
}
{% endhighlight %}
Start disabled masternodes in masternodes<!--noref-->.conf
{% highlight bash %}
dash-cli -testnet masternode start-disabled
{% endhighlight %}
Result:
{% highlight json %}
{
"overall": "Successfully started 1 masternodes, failed to start 0, total 1",
"detail": {
"status": {
"alias": "MN01",
"result": "successful"
}
}
}
{% endhighlight %}
{% endautocrossref %}
###### Masternode<!--noref--> Status
<!-- no subhead-links here -->
@ -587,7 +250,7 @@ The `masternode<!--noref--> status` RPC prints masternode status information.
- n: "→<br>`outpoint`"
t: "string"
p: "Required<br>(1 or more)"
p: "Required<br>(exactly 1)"
d: "The masternode's outpoint"
- n: "→<br>`service`"
@ -595,10 +258,85 @@ The `masternode<!--noref--> status` RPC prints masternode status information.
p: "Required<br>(exactly 1)"
d: "The IP address/port of the masternode"
- n: "→<br>`payee`"
- n: "→<br>`proTxHash`"
t: "string (hex)"
p: "Required<br>(exactly 1)"
d: "The masternode's ProRegTx hash"
- n: "→<br>`collateralHash`"
t: "string (hex)"
p: "Required<br>(exactly 1)"
d: "The masternode's collateral hash"
- n: "→<br>`collateralIndex`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Index of the collateral"
- n: "→<br>`dmnState`"
t: "object"
p: "Required<br>(exactly 1)"
d: "Deterministic Masternode State"
- n: "→<br>`service`"
t: "string"
p: "Required<br>(exactly 1)"
d: "Payee address"
d: "The IP address/port of the masternode"
- n: "→ →<br>`registeredHeight`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Block height at which the masternode was registered"
- n: "→ →<br>`lastPaidHeight`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Block height at which the masternode was last paid"
- n: "→ →<br>`PoSePenalty`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Current proof-of-service penalty"
- n: "→ →<br>`PoSeRevivedHeight`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Block height at which the masternode was last revived from a PoSe ban"
- n: "→ →<br>`PoSeBanHeight`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Block height at which the masternode was last PoSe banned"
- n: "→ →<br>`revocationReason`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Reason code for of masternode operator key revocation"
- n: "→ →<br>`ownerAddress`"
t: "string"
p: "Required<br>(exactly 1)"
d: "The owner address"
- n: "→ →<br>`votingAddress`"
t: "string"
p: "Required<br>(exactly 1)"
d: "The voting address"
- n: "→ →<br>`payoutAddress`"
t: "string"
p: "Required<br>(exactly 1)"
d: "The payout address"
- n: "→ →<br>`pubKeyOperator`"
t: "string"
p: "Required<br>(exactly 1)"
d: "The operator public key"
- n: "→ →<br>`operatorPayoutAddress`"
t: "string"
p: "Optional<br>(0 or 1)"
d: "The operator payout address"
- n: "→<br>`status`"
t: "string"
@ -607,7 +345,7 @@ The `masternode<!--noref--> status` RPC prints masternode status information.
{% enditemplate %}
*Example from Dash Core 0.12.2*
*Example from Dash Core 0.13.2*
{% highlight bash %}
dash-cli -testnet masternode status
@ -616,10 +354,26 @@ dash-cli -testnet masternode status
Result:
{% highlight json %}
{
"outpoint": "f6c83fd96bfaa47887c4587cceadeb9af6238a2c86fe36b883c4d7a6867eab0f-1",
"service": "45.32.237.77:19999",
"payee": "yY6AmGopsZS31wy1JLHR9P6AC6owFaXwuh",
"status": "Masternode successfully started"
"outpoint": "d1be3a1aa0b9516d06ed180607c168724c21d8ccf6c5a3f5983769830724c357-0",
"service": "45.32.237.76:19999",
"proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63",
"collateralHash": "d1be3a1aa0b9516d06ed180607c168724c21d8ccf6c5a3f5983769830724c357",
"collateralIndex": 0,
"dmnState": {
"service": "45.32.237.76:19999",
"registeredHeight": 7402,
"lastPaidHeight": 59721,
"PoSePenalty": 0,
"PoSeRevivedHeight": 61915,
"PoSeBanHeight": -1,
"revocationReason": 0,
"ownerAddress": "yT8DDY5NkX4ZtBkUVz7y1RgzbakCnMPogh",
"votingAddress": "yMLrhooXyJtpV3R2ncsxvkrh6wRennNPoG",
"payoutAddress": "yTsGq4wV8WF5GKLaYV2C43zrkr2sfTtysT",
"pubKeyOperator": "02a2e2673109a5e204f8a82baf628bb5f09a8dfc671859e84d2661cae03e6c6e198a037e968253e94cd099d07b98e94e"
},
"state": "READY",
"status": "Ready"
}
{% endhighlight %}
@ -651,90 +405,6 @@ Result:
{% endautocrossref %}
###### Masternode<!--noref--> List-conf
<!-- no subhead-links here -->
{% autocrossref %}
The `masternode<!--noref--> list-conf` RPC prints masternode<!--noref-->.conf in JSON format.
*Parameters: none*
*Result---masternode info*
{% itemplate ntpd1 %}
- n: "Result"
t: "object"
p: "Required<br>(exactly 1)"
d: "Masternode status info"
- n: "→<br>`masternode`"
t: "object"
p: "Required<br>(1 or more)"
d: "Object containing masternode info"
- n: "→ →<br>`alias`"
t: "string"
p: "Required<br>(exactly 1)"
d: "Masternode alias"
- n: "→ →<br>`address`"
t: "string"
p: "Required<br>(exactly 1)"
d: "The IP address/port of the masternode"
- n: "→ →<br>`privateKey`"
t: "string"
p: "Required<br>(exactly 1)"
d: "Masternode private key"
- n: "→ →<br>`txHash`"
t: "string (hex)"
p: "Required<br>(exactly 1)"
d: "Masternode collateral transaction hash"
- n: "→ →<br>`outputIndex`"
t: "int"
p: "Required<br>(exactly 1)"
d: "Masternode collateral transaction index"
- n: "→ →<br>`status`"
t: "string"
p: "Required<br>(exactly 1)"
d: "The masternode's status"
{% enditemplate %}
*Example from Dash Core 0.12.2*
{% highlight bash %}
dash-cli -testnet masternode status
{% endhighlight %}
Result:
{% highlight json %}
{
"masternode": {
"alias": "MN01",
"address": "45.32.237.77:19999",
"privateKey": "92woG282ZQMASn8BAah6H8QmiE5NsPwucv7cu9eTVG1uU63fcfs",
"txHash": "f6c83fd96bfaa47887c4587cceadeb9af6238a2c86fe36b883c4d7a6867eab0f",
"outputIndex": "1",
"status": "ENABLED"
},
"masternode": {
"alias": "MN02",
"address": "45.32.237.78:19999",
"privateKey": "92woG282ZQMASn8BAah6H8QmiE5NsPwucv7cu9eTVG1uU63fcfs",
"txHash": "f6c83fd96bfaa47887c4587cceadeb9af6238a2c86fe36b883c4d7a6867eab0f",
"outputIndex": "1",
"status": "ENABLED"
}
}
{% endhighlight %}
{% endautocrossref %}
###### Masternode<!--noref--> Winner
<!-- no subhead-links here -->
@ -914,6 +584,36 @@ Result:
}
{% endhighlight %}
**Deprecated RPCs**
![Warning icon](/img/icons/icon_warning.svg) The following RPCs were deprecated by Dash Core 0.14.0
**Masternode<!--noref--> Check**
Forces a check of all masternodes and removes invalid ones.
**Masternode<!--noref--> Genkey**
Generates a new masternodeprivkey.
**Masternode<!--noref--> Start-alias**
Starts a single remote masternode by assigned alias configured in masternode<!--noref-->.conf.
**Masternode<!--noref--> Start-mode**
Starts remote masternodes configured in masternode<!--noref-->.conf. Valid modes are: `all`, `missing`, or `disabled`.
**Masternode<!--noref--> List-conf**
Prints masternode.conf in JSON format.
*See also:*
* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}}

View file

@ -7,10 +7,12 @@ http://opensource.org/licenses/MIT.
##### MasternodeBroadcast
{% include helpers/subhead-links.md %}
<!-- __ -->
{% assign summary_masternodeBroadcast="provides a set of commands to create and relay masternode broadcast messages." %}
{% assign summary_masternodeBroadcast="was removed in Dash Core 0.14.0." %}
{% autocrossref %}
**_Removed in Dash Core 0.14.0._**
The `masternodebroadcast` RPC {{summary_masternodeBroadcast}}
*Parameter #1---masternode broadcast command*

View file

@ -29,21 +29,17 @@ The `masternodelist` RPC {{summary_masternodeList}}
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)
`addr` | Print IP address associated with a masternode (can be additionally filtered, partial match)
`full` | Print info in format 'status payee lastpaidtime lastpaidblock IP' (can be additionally filtered, partial match)
`info` | Print info in format 'status payee 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
`owneraddress` | Print the masternode owner Dash address
`payee` | Print Dash address associated with a masternode (can be additionally filtered, partial match)
`protocol` | Print protocol of a masternode (can be additionally filtered, exact match)
`keyid` | Print the masternode (not collateral) key id
`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)
`pubKeyOperator` | Print the masternode operator public key
`status` | Print masternode status: ENABLED / POSE_BANNED (can be additionally filtered, partial match)
`votingaddress` | Print the masternode voting Dash address
*Parameter #2---List filter*
@ -81,69 +77,49 @@ dash-cli -testnet masternodelist
Result:
{% highlight json %}
{
"c568e386687bb317e52f4dcb402e83a93a13a43df6da029c95834ed2603c1f01-0": {
"address": "173.61.30.231:19003",
"payee": "yWc9sVgvRi6mB81KZLwchwUjjCNmF6ktaJ",
"64fbf05880cdbd35a0278ba01a5edf0c20a9c756d15f883d496f5df35b31b542-1": {
"address": "167.99.164.60:19999",
"payee": "ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX",
"status": "ENABLED",
"protocol": 70213,
"daemonversion": "Unknown",
"sentinelversion": "Unknown",
"sentinelstate": "expired",
"lastseen": 0,
"activeseconds": -1553091168,
"lastpaidtime": 1553077123,
"lastpaidblock": 64693,
"owneraddress": "yjW7bQrKBsMV8Wh19LgT8Z1uLkWY8P2EBd",
"votingaddress": "yjW7bQrKBsMV8Wh19LgT8Z1uLkWY8P2EBd",
"collateraladdress": "yVZjfAYphQeyFj3XKGJ7FE7n4A9Lok1X7y"
"lastpaidtime": 1553155206,
"lastpaidblock": 65121,
"owneraddress": "yisedvAxYga44V9bTABzoQ7KoQMugyfU1E",
"votingaddress": "yVpKfQgjkRkezFS5SpZvAEVFsbv9zJedf4",
"collateraladdress": "yeXE94admJeH3oKiaB7UpwWnPZD6Q8srhT",
"pubkeyoperator": "8072ac9a55d1cf5bf9c4262d49e2ef1ffcd716b8983ffdc62b940fec6cb4179d6275f8b68316f29c6c2ad540db329258"
},
"bc3b58904a9f09b4641ffece61af28744826fffa00aabe45ef40af959a78690c-1": {
"address": "52.42.213.147:19999",
"payee": "yXsKagNKcHkE2eUKQe8Sf2Z32SKrmQ6XEJ",
"6ed4aa5fa90565c2331bcd22275f684ecdca5da8dd7f83ca943aadc6f44e6746-0": {
"address": "3.209.222.37:19999",
"payee": "yiVDR2HothEwH2Ss17GntqNp1rBUthnyje",
"status": "ENABLED",
"protocol": 70213,
"daemonversion": "Unknown",
"sentinelversion": "Unknown",
"sentinelstate": "expired",
"lastseen": 0,
"activeseconds": -1553091168,
"lastpaidtime": 1553078267,
"lastpaidblock": 64747,
"owneraddress": "yeARCinqiurM9oni3VQ2Grm3Z6tXYxfKAR",
"votingaddress": "yeARCinqiurM9oni3VQ2Grm3Z6tXYxfKAR",
"collateraladdress": "yUq2J9YhZXSTQ76ifm9BHFvTtDMhWR8v6k"
"lastpaidtime": 1553156846,
"lastpaidblock": 65140,
"owneraddress": "ycAZ9adjpGfZ2WLEpyfyUWAjkF6sXdD5df",
"votingaddress": "ycAZ9adjpGfZ2WLEpyfyUWAjkF6sXdD5df",
"collateraladdress": "ya82BzRBhuFZAPhgXvhkzZgqiVsMdnfan7",
"pubkeyoperator": "0a7fd01cfd502296cfd523d58ee9f4cff34243abb0dcc543ec237ff4d73938e69d187f0b6838bbaf9d54b89adc0d4c8e"
},
"8b4a475fec02166c0d4a1dc6ede23e236a4cd07bb31d959fe5ed155fdc902b18-0": {
"address": "95.183.53.17:10003",
"payee": "yYdXDDtfzSkRKUBDLH8qW2AfvehD1M9gM8",
"4ee8c581255b643d805502e2997acb3c38deb57dc9483659d77332fd5a17de9d-6": {
"address": "52.50.208.53:20005",
"payee": "ybFPBD7hm9KVd2Dubj97K5mw2ymR8gWJre",
"status": "ENABLED",
"protocol": 70213,
"daemonversion": "Unknown",
"sentinelversion": "Unknown",
"sentinelstate": "expired",
"lastseen": 0,
"activeseconds": -1553091168,
"lastpaidtime": 1553078177,
"lastpaidblock": 64743,
"owneraddress": "yW9zeJrPv5yJf71qvNfyPrJg8Me9UdaDP3",
"votingaddress": "yW9zeJrPv5yJf71qvNfyPrJg8Me9UdaDP3",
"collateraladdress": "yX91ss7HuAH85TAv7tq5dVdMXJ68d4vJHT"
"lastpaidtime": 1553168003,
"lastpaidblock": 65194,
"owneraddress": "yV97rchAqU7UGyXPZe392TNARfR93VKuU2",
"votingaddress": "ygtDvoyioQ8Dc87A3moFgBrd97QxuiMiAR",
"collateraladdress": "ySQwPov5nLCJ4qWAB31tPTyY8kDZVNZrXM",
"pubkeyoperator": "8dfa69a96f23bd77e72c1a00984bb0df5ce93a76ca1d20694e8ad20b1dfea530cb6ee0b964b78ebb2bc8bfac22f61647"
},
"d0a5d2bb6316a78e1e82569f625b56f68d7578eb2e22949f2a652bb1915f881b-1": {
"address": "140.82.59.51:19999",
"payee": "yYRfiUCoTjYAontZHqd7wAw7PhR2zru55V",
"4758b97bbd20024e171767b8baf4290bec1475b254180869cdfe0db75d7faefb-0": {
"address": "68.183.167.16:19999",
"payee": "ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX",
"status": "ENABLED",
"protocol": 70213,
"daemonversion": "Unknown",
"sentinelversion": "Unknown",
"sentinelstate": "expired",
"lastseen": 0,
"activeseconds": -1553091168,
"lastpaidtime": 1553077735,
"lastpaidblock": 64724,
"owneraddress": "yX2VYLpM9ybXZHTbTEmND581QZSNRHucWm",
"votingaddress": "yX2VYLpM9ybXZHTbTEmND581QZSNRHucWm",
"collateraladdress": "ygkUtF9AbUwmGVjq2vfCUp4Znd3X9QiEqv"
"lastpaidtime": 1553157194,
"lastpaidblock": 65147,
"owneraddress": "yPmESxMJhZYuKDLJ1oYdH6kpE8oADVAPUQ",
"votingaddress": "yLvTNLDLHa3pDMbFDRBX5mVMjCshzrDD1X",
"collateraladdress": "ydGCjUEVRHkQZK3ajCsGJGDE9sjrbbS56v",
"pubkeyoperator": "18af4d035eed23d30eb02808af0c133d9879c0fb82c72329ab2ed208ebc1631641ca42bbf462239d151f4e84d8dcde7b"
}
}
{% endhighlight %}
@ -157,19 +133,20 @@ dash-cli -testnet masternodelist full "NEW"
Result:
{% highlight json %}
{
"6125fc1da46cd2fdd013b1fbb02144367a95feffd379c08064f38de0e3deb80c-1": "NEW_START_REQUIRED 70208 yh7RGWjZN8yDAAzPpYFUJZAj41jG7G43c8 1507401630 0 1507409411 5874 1.1.1.1:19999",
"866d66b88afed15ed1a936b680ace1a99e0ca14d0242bc2983c5fdd2c16c1637-1": "NEW_START_REQUIRED 70208 yQHJ4muL7FyhUj1x8iBr2Ws9E4cJ68DKin 1507626190 138962 1507620650 7215 178.62.203.249:19999",
"7c17695bdccc617410164882bd8b5fb7bf4f5a3dceb0a7476800e161cba1c57f-1": "NEW_START_REQUIRED 70208 yjWGCrz6iJnDsrog5FX6ag3iQUNor9UFj5 1507636178 0 0 0 83.1.99.1:19999",
"0512f77ebceaf288386e9a050e3c80652c7bfb6e993659ded2dff43eae6904ac-1": "NEW_START_REQUIRED 70208 ydahSbZKWUjBi6jHeWjLgr7navPoZVCgwH 1507646277 32460 1507649163 7397 172.104.45.115:19999",
"4222505288507e0f1abc32f0323cce1d6c4d22c8e785adb0cf8075b70ae92ddf-1": "NEW_START_REQUIRED 70208 yUznkRL396PewekhtCpUJkfJcxt8fhDyoX 1507646174 9996 1507642757 7355 83.1.99.2:19999",
"b454dd0efc19657f8d56a750385b90ebfb53dce5182a21238b225d6cbb3307f0-1": "NEW_START_REQUIRED 70208 yYR5dcULfpnbPSixorzMkQ9SGwzPPsXcuC 1507401632 0 1507408648 5868 2.2.2.2:19999"
"64fbf05880cdbd35a0278ba01a5edf0c20a9c756d15f883d496f5df35b31b542-1": " ENABLED ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX 1553155206 65121 167.99.164.60:19999",
"809818107c1104bbba6d386567aa231a294219387e591542df599b7ae7d23339-1": " POSE_BANNED yLriZkwBhftk8VBUqrSykhFhAi4PowZ2Rs 1547488185 24447 45.48.177.222:19999",
"d9fd715b7d896f5426e90bd3383a67fd3e311e00c021750560c6e5c5f9cdac85-1": " ENABLED yRbiW3dguCym4fzUGZCf2kWzKUgw97zEqE 1553155396 65122 109.235.71.56:19999",
"0950cce784fadcc2df4febb19d3a21eab4836ba22ea996ce7e2dde32b6c31431-0": " ENABLED ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX 1553154969 65119 165.227.63.223:19999",
"08b493929f61a3205f09af9290af9034bec6a8355040a82ce4413f294c703e9a-0": " ENABLED ybCE7m9oPjvCjm8MzPdbMBGgkF7p9wXsFq 1553153959 65110 34.207.45.58:19999",
"b4f9de65ae676b63f84f2865317b8b512a12516c4459f2f59ca2626c71f7dda3-1": " POSE_BANNED yYmromZERpc15GTDvgvjmjChPmgHbhWf1r 0 0 1.1.1.1:19999",
"b7ec36db0c4ece8018183dcb90eed910e38e1c8d3641bbb4facced9a48a283a3-5": " ENABLED ybFPBD7hm9KVd2Dubj97K5mw2ymR8gWJre 1553164088 65172 18.202.52.170:20028",
"71fa05269adf3efc9ffa9a9ce33d27320de61c230cdf4a3835ba7f707bd7807a-1": " POSE_BANNED yVxBZ8JeM5qRbLnUnswZ2APV3rgeZ7C9n9 1552466625 61158 167.99.110.59:19999"
}
{% endhighlight %}
*See also:*
* [Masternode][rpc masternode]: {{summary_masternode}}
* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}}
* [MnSync][rpc mnsync]: {{summary_mnSync}}
{% endautocrossref %}

View file

@ -58,16 +58,6 @@ The `mnsync` RPC {{summary_mnSync}}
p: "Required<br>(exactly 1)"
d: "Blockchain sync status"
- n: "→<br>`IsMasternodeListSynced`"
t: "boolean"
p: "Required<br>(exactly 1)"
d: "Masternode list sync status"
- n: "→<br>`IsWinnersListSynced`"
t: "boolean"
p: "Required<br>(exactly 1)"
d: "Masternode winners list sync status"
- n: "→<br>`IsSynced`"
t: "boolean"
p: "Required<br>(exactly 1)"
@ -86,13 +76,13 @@ AssetID | AssetName
--- | --- | --- |
0 | MASTERNODE_SYNC_INITIAL
1 | MASTERNODE_SYNC_WAITING
2 | MASTERNODE_SYNC_LIST
3 | MASTERNODE_SYNC_MNW
_2_ | **Deprecated since 0.14.0**<br>_MASTERNODE_SYNC_LIST_
_3_ | **Deprecated since 0.14.0**<br>_MASTERNODE_SYNC_MNW_
4 | MASTERNODE_SYNC_GOVERNANCE
-1 | MASTERNODE_SYNC_FAILED
999 | MASTERNODE_SYNC_FINISHED
*Example from Dash Core 0.12.2*
*Example from Dash Core 0.14.0*
Get Masternode sync status
@ -108,8 +98,6 @@ Result:
"AssetStartTime": 1507662300,
"Attempt": 0,
"IsBlockchainSynced": true,
"IsMasternodeListSynced": true,
"IsWinnersListSynced": true,
"IsSynced": true,
"IsFailed": false
}
@ -136,7 +124,7 @@ dash-cli -testnet mnsync next
Result:
{% highlight text %}
sync updated to MASTERNODE_SYNC_LIST
sync updated to MASTERNODE_SYNC_GOVERNANCE
{% endhighlight %}
@ -166,7 +154,6 @@ success
*See also:*
* [Masternode][rpc masternode]: {{summary_masternode}}
* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}}
* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}}
{% endautocrossref %}

View file

@ -7,10 +7,12 @@ http://opensource.org/licenses/MIT.
##### SentinelPing
{% include helpers/subhead-links.md %}
<!-- __ -->
{% assign summary_sentinelPing="sends a Sentinel Ping to the network." %}
{% assign summary_sentinelPing="was removed in Dash Core 0.14.0." %}
{% autocrossref %}
**_Removed in Dash Core 0.14.0._**
The `sentinelping` RPC {{summary_sentinelPing}}
*Parameter #1---sentinel version*

View file

@ -44,7 +44,7 @@ To display the status of sporks, use the `show` or `active` syntax.
{% enditemplate %}
*Example from Dash Core 0.12.3*
*Example from Dash Core 0.14.0*
{% highlight bash %}
dash-cli -testnet spork show
@ -56,12 +56,15 @@ Result:
"SPORK_2_INSTANTSEND_ENABLED": 0,
"SPORK_3_INSTANTSEND_BLOCK_FILTERING": 0,
"SPORK_5_INSTANTSEND_MAX_VALUE": 3000,
"SPORK_6_NEW_SIGS": 4000000000,
"SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT": 0,
"SPORK_6_NEW_SIGS": 0,
"SPORK_9_SUPERBLOCKS_ENABLED": 0,
"SPORK_10_MASTERNODE_PAY_UPDATED_NODES": 0,
"SPORK_12_RECONSIDER_BLOCKS": 0,
"SPORK_14_REQUIRE_SENTINEL_FLAG": 0
"SPORK_15_DETERMINISTIC_MNS_ENABLED": 7300,
"SPORK_16_INSTANTSEND_AUTOLOCKS": 0,
"SPORK_17_QUORUM_DKG_ENABLED": 0,
"SPORK_18_QUORUM_DEBUG_ENABLED": 4070908800,
"SPORK_19_CHAINLOCKS_ENABLED": 4070908800,
"SPORK_20_INSTANTSEND_LLMQ_BASED": 4070908800
}
{% endhighlight %}
@ -82,7 +85,7 @@ Result:
{% enditemplate %}
*Example from Dash Core 0.12.3*
*Example from Dash Core 0.14.0*
{% highlight bash %}
dash-cli -testnet spork active
@ -94,12 +97,15 @@ 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_6_NEW_SIGS": true,
"SPORK_9_SUPERBLOCKS_ENABLED": true,
"SPORK_10_MASTERNODE_PAY_UPDATED_NODES": true,
"SPORK_12_RECONSIDER_BLOCKS": true,
"SPORK_14_REQUIRE_SENTINEL_FLAG": true
"SPORK_15_DETERMINISTIC_MNS_ENABLED": true,
"SPORK_16_INSTANTSEND_AUTOLOCKS": true,
"SPORK_17_QUORUM_DKG_ENABLED": true,
"SPORK_18_QUORUM_DEBUG_ENABLED": false,
"SPORK_19_CHAINLOCKS_ENABLED": false,
"SPORK_20_INSTANTSEND_LLMQ_BASED": false
}
{% endhighlight %}

View file

@ -160,23 +160,28 @@ The currently-available type identifiers are:
| 4 | [`MSG_TXLOCK_REQUEST`][msg_txlock_request]{:#term-msg_txlock_request}{:.term} | The hash is an Instant Send transaction lock request.
| 5 | [`MSG_TXLOCK_VOTE`][msg_txlock_vote]{:#term-msg_txlock_vote}{:.term} | The hash is an Instant Send transaction vote.
| 6 | [`MSG_SPORK`][msg_spork]{:#term-msg_spork}{:.term} | The hash is Spork ID.
| 7 | [`MSG_MASTERNODE_PAYMENT_VOTE`][msg_masternode_payment_vote]{:#term-msg_masternode_payment_vote}{:.term} | The hash is a Masternode Payment Vote.
| 8 | [`MSG_MASTERNODE_PAYMENT_BLOCK`][msg_masternode_payment_block]{:#term-msg_masternode_payment_block}{:.term} | The hash is a Masternode Payment Block.
| _8_ | _`MSG_MASTERNODE_SCANNING_ERROR`_ | Replaced by `MSG_MASTERNODE_PAYMENT_BLOCK`
| _9_ | _[`MSG_BUDGET_VOTE`][msg_budget_vote]{:#term-msg_budget_vote}{:.term}_ | Deprecated
| _10_ | _[`MSG_BUDGET_PROPOSAL`][msg_budget_proposal]{:#term-msg_budget_proposal}{:.term}_ | Deprecated
| _11_ | _[`MSG_BUDGET_FINALIZED`][msg_budget_finalized]{:#term-msg_budget_finalized}{:.term}_ | Deprecated
| _12_ | _[`MSG_BUDGET_FINALIZED_VOTE`][msg_budget_finalized_vote]{:#term-msg_budget_finalized_vote}{:.term}_ | Deprecated
| _13_ | _[`MSG_MASTERNODE_QUORUM`][msg_masternode_quorum]{:#term-msg_masternode_quorum}{:.term}_ | Not Implemented
| 14 | [`MSG_MASTERNODE_ANNOUNCE`][msg_masternode_announce]{:#term-msg_masternode_announce}{:.term} | The hash is a Masternode Broadcast.
| 15 | [`MSG_MASTERNODE_PING`][msg_masternode_ping]{:#term-msg_masternode_ping}{:.term} | The hash is a Masternode Ping.
| 16 | [`MSG_DSTX`][msg_dstx]{:#term-msg_dstx}{:.term} | The hash is Private Send (Dark Send) Broadcast TX.
| 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.**
| 21 | [`MSG_QUORUM_FINAL_COMMITMENT`][msg_quorum_final_commitment]{:#term-msg_quorum_final_commitment}{:.term} | The hash is a long-living masternode quorum final commitment.
The deprecated type identifiers are:
| Type Identifier | Name | Description
|-----------------|-------------------------------------------------------------------------------|---------------
| 7 | [`MSG_MASTERNODE_PAYMENT_VOTE`][msg_masternode_payment_vote]{:#term-msg_masternode_payment_vote}{:.term} | **Deprecated in 0.14.0**<br><br>The hash is a Masternode Payment Vote.
| 8 | [`MSG_MASTERNODE_PAYMENT_BLOCK`][msg_masternode_payment_block]{:#term-msg_masternode_payment_block}{:.term} | **Deprecated in 0.14.0**<br><br>The hash is a Masternode Payment Block.
| 8 | `MSG_MASTERNODE_SCANNING_ERROR` | Replaced by `MSG_MASTERNODE_PAYMENT_BLOCK`
| 9 | [`MSG_BUDGET_VOTE`][msg_budget_vote]{:#term-msg_budget_vote}{:.term}_ | Deprecated
| 10 | [`MSG_BUDGET_PROPOSAL`][msg_budget_proposal]{:#term-msg_budget_proposal}{:.term} | Deprecated
| 11 | [`MSG_BUDGET_FINALIZED`][msg_budget_finalized]{:#term-msg_budget_finalized}{:.term} | Deprecated
| 12 | [`MSG_BUDGET_FINALIZED_VOTE`][msg_budget_finalized_vote]{:#term-msg_budget_finalized_vote}{:.term} | Deprecated
| 13 | [`MSG_MASTERNODE_QUORUM`][msg_masternode_quorum]{:#term-msg_masternode_quorum}{:.term} | Not Implemented
| 14 | [`MSG_MASTERNODE_ANNOUNCE`][msg_masternode_announce]{:#term-msg_masternode_announce}{:.term} | **Deprecated in 0.14.0**<br><br>The hash is a Masternode Broadcast.
| 15 | [`MSG_MASTERNODE_PING`][msg_masternode_ping]{:#term-msg_masternode_ping}{:.term} | **Deprecated in 0.14.0**<br><br>The hash is a Masternode Ping.
| 19 | [`MSG_MASTERNODE_VERIFY`][msg_masternode_verify]{:#term-msg_masternode_verify}{:.term} | **Deprecated in 0.14.0**<br><br>The hash is a Masternode Verify.
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.
@ -1763,17 +1768,20 @@ Sporks (per [`src/spork.h`][spork.h])
| 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)
| 10011 | 12 | `RECONSIDER_BLOCKS` | Forces reindex of a specified number of blocks to recover from unintentional network forks
| 10013 | 14 | `REQUIRE_SENTINEL_FLAG` | Only masternode's running sentinel will be paid
| 10014 | 15 | `DETERMINISTIC_MNS_ENABLED` | Deterministic masternode lists are enabled
| 10015 | 16 | `INSTANTSEND_AUTOLOCKS` | Automatic InstantSend for transactions with <=4 inputs (also eliminates the special InstantSend fee requirement for these transactions)
| 10016 | 17 | `SPORK_17_QUORUM_DKG_ENABLED` | Enable long-living masternode quorum (LLMQ) distributed key generation (DKG). When enabled, simple PoSe scoring and banning is active as well.
| 10017 | 18 | `SPORK_18_QUORUM_DEBUG_ENABLED` | Enable long-living masternode quorum (LLMQ) debugging.
| 10018 | 19 | `SPORK_19_CHAINLOCKS_ENABLED` | Enable LLMQ-based ChainLocks.
| 10019 | 20 | `SPORK_20_INSTANTSEND_LLMQ_BASED` | Enable LLMQ-based InstantSend.
| | | |
| | | **Removed Sporks** |
| _10012_ | _13_ | _`OLD_SUPERBLOCK_FLAG`_ | _Removed in Dash Core 0.12.3. No network function since block 614820_
| _10007_ | _8_ | _`MASTERNODE_PAYMENT_ENFORCEMENT`_ | _Removed in Dash Core 0.14.0.<br>Requires masternodes to be paid by miners when blocks are processed_
| _10009_ | _10_ | _`MASTERNODE_PAY_UPDATED_NODES`_ | _Removed in Dash Core 0.14.0.<br>Only current protocol version masternode's will be paid (not older nodes)_
| _10012_ | _13_ | _`OLD_SUPERBLOCK_FLAG`_ | _Removed in Dash Core 0.12.3.<br>No network function since block 614820_
| _10013_ | _14_ | _`REQUIRE_SENTINEL_FLAG`_ | _Removed in Dash Core 0.14.0.<br>Only masternode's running sentinel will be paid_
To verify `vchSig`, compare the hard-coded spork public key (`strSporkPubKey`
from [`src/chainparams.cpp`][spork pubkey]) with the public key recovered from
@ -2640,419 +2648,6 @@ and [Masternode Payment](developer-guide#masternode<!--noref-->-payment) section
{% endautocrossref %}
#### dseg
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated
following activation of DIP3 which implements deterministic masternode lists.
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 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
request if they are not fully synced.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 36 | masternodeOutPoint | outPoint | Required | Request options:<br>`All Entries` - empty txIn<br>`Single Entry` - Masternode's unspent outpoint which is holding 1000 DASH
{% highlight text %}
Note: Dash Core only allows nodes to request the entire list every 3 hours.
Additional requests sent prior to then may result in the node being banned.
{% endhighlight %}
The following annotated hexdump shows a `dseg` message requesting **all**
masternodes. (The message header has been omitted.)
{% highlight text %}
Masternode Unspent Outpoint
| 00000000000000000000000000000000
| 00000000000000000000000000000000 ......... Outpoint TXID
| ffffffff ................................. Outpoint index number: 0
{% endhighlight %}
The following annotated hexdump shows a `dseg` message requesting a specific
masternode. (The message header has been omitted.)
{% highlight text %}
Masternode Unspent Outpoint
| 7fe33a2901aa654598ae0af572d4fbec
| ee97af2d0276f189d177dee5848ef3da ......... Outpoint TXID
| 00000000 ................................. Outpoint index number: 0
{% endhighlight %}
{% endautocrossref %}
#### mnb
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated
following activation of DIP3 which implements deterministic masternode lists.
The `mnb` message is sent whenever a masternode comes online or a client is
syncing. The masternode will send this message which describes the masternode
entry and how to validate messages from it.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 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 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
| 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 | **Removed in Dash Core 0.12.3.0**<br><br>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
with a RFC5737 reserved IP address.)
{% highlight text %}
Masternode Unspent Outpoint
| 3fbc7d4a8f68ba6ecb02a8db34d1f5b6
| 2dc105f0b5c3505243435cf815d02394 ......... Outpoint TXID
| 01000000 ................................. Outpoint index number: 1
Masternode Address
| 00000000000000000000ffffc0000233 ......... IP Address: ::ffff:192.0.2.51
| 270f ..................................... Port: 9999
Collateral Public Key
| 21 ....................................... Key Size: 33
| 02 ....................................... Key Type: 2 - Compressed (even)
| 02a47a6845936a4199e126d35399dd09
| 97c1aaf89a3fe70d474c53f29624a43a5b ....... Public Key
Masternode Public Key
| 41 ....................................... Key Size: 65
| 04 ....................................... Key Type: 4 - Uncompressed
| 04da252243305d604cab90480880af4a
| b5cea3a934c91393452e9b7b4c97a87e
| 198bc809916ac2c27436a1db9c28d0aa
| bfefec4dc3c2193835fd9a56c31150c633 ....... Public Key
Message Signature
| 41 ....................................... Bytes in signature: 65
| 1fb80f9ba8c110835e4a7dd4c8deccd7
| 89027663d00084d9a99ef579a9b5601f
| 40727b27e91aab2897a078f63976ae25
| 3ff8f01e56862e953278f432530f6ee080 ....... Signature
4728ef5800000000 ........................... Sig. Timestamp: 2017-04-13 07:27:03 UTC
3e120100 ................................... Protocol Version: 70206
Masternode Ping Message
| Masternode Unspent Outpoint
| | 3fbc7d4a8f68ba6ecb02a8db34d1f5b6
| | 2dc105f0b5c3505243435cf815d02394 ........ Outpoint TXID
| | 01000000 ................................ Outpoint index number: 1
|
| 94fc0fad18b166c2fedf1a5dc0511372
| 26c353d57e086737ff05000000000000 ......... Chaintip block hash
|
| 66c1a95900000000 ......................... Sig. Timestamp: 2017-10-01 21:21:58 UTC
|
| Masternode Signature
| | 41 ..................................... Bytes in signature: 65
| | 1b3017c49a03e2d77083f3c92a8c2e4c
| | d815d068b6256498a719e3cb6a34f774
| | ec6434cfcbb7a5a51704350a05903287
| | eecc82e6b40ac2fcfa2df29ddaa6c4fc
| | b8 ..................................... Masternode Signature
{% endhighlight %}
{% endautocrossref %}
#### mnget
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated
following activation of DIP3 which implements deterministic masternode lists.
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.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 4 | nMnCount | int | Deprecated | _Deprecated in Dash Core 0.12.3_<br><br>Number of masternode payment votes to request
The following annotated hexdump shows a pre-0.12.3 `mnget` message. (The
message header has been omitted.)
{% highlight text %}
a8170000 ................................... Count: 6056
{% endhighlight %}
{% endautocrossref %}
#### mnp
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated
following activation of DIP3 which implements deterministic masternode lists.
The `mnp` message is sent by masternodes every few minutes to ping the network
with a message that propagates across the whole network. Dash Core currently
uses a minimum masternode ping time of 10 minutes.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 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))
| 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.)
{% highlight text %}
Masternode Unspent Outpoint
| ce12d7f32945c9544c5aeb0dcf131174
| a6269b64b40f9461595e26689b573c58 ......... Outpoint TXID
| 00000000 ................................. Outpoint index number: 0
6c7da9d9eae78644a3406eac8ed0be3b
f15eb4bc369acc95b106f37400000000 ........... Chaintip block hash
3c84025a00000000 ........................... Sig. Timestamp: 2017-11-08 04:12:44 UTC
Masternode Signature
| 41 ....................................... Bytes in signature: 65
| 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 %}
#### mnv
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated
following activation of DIP3 which implements deterministic masternode lists.
The `mnv` message is used by masternodes to verify each other. Several `mnv`
messages are exchanged in the process. This results in the IP address of
masternode 1 being validated as of the provided block height.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 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
| 66 | vchSig1 | char[] | Required*<br><br>Added in Step 2 | Signature of this message by masternode 1 - verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes))<br><br>
| 66 | vchSig2 | char[] | Required*<br><br>Added in Step 3 | Signature of this message by masternode 2 - verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes))<br><br>
Initially, `vin1`, `vin2`, `vchSig1` and `vchSig2` are empty. They are
updated as the exchange of messages between the masternodes occurs as detailed
in the table below.
*Masternode Verify Data Flow*
| Step | **MN 2 (Verifier)** | **Direction** | **MN 1 (Being verified)** | **Description** |
| | **Verification request** | | | **`mnv` message with no signatures** |
| 1 | `mnv` message | → | | Contains `addr`, `nonce`, and `nBlockHeight`.<br>Sent by _SendVerifyRequest()_.
| 2 | | ← | `mnv` message | Add `vchSig1` (signature of the IP address + nonce + hash of the requested block).<br>Sent by _SendVerifyReply()_.
| 3 | `mnv` message | → | | Verify `vchSig1` <br><br>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.<br>Sent by _ProcessVerifyReply()_.
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
receiving it will relay it on to their connected peers.
{% highlight text %}
Important Notes:
* Dash Core limits how frequently a masternode verify request can be
requested. Frequent requests will result in the node being banned.
* Only masternodes in the top `MAX_POSE_RANK` (10) can send an `mnv` request
(to no more than `MAX_POSE_CONNECTIONS` (10)).
{% endhighlight %}
<!-- Need example from Wireshark -->
The following annotated hexdump shows a `mnv` message. This is an example of the
initial request (Step 1) so it does not contain any signatures. (The message
header has been omitted.)
{% highlight text %}
Masternode 1 Unspent Outpoint (empty)
| 00000000000000000000000000000000
| 00000000000000000000000000000000 ......... Outpoint TXID
| ffffffff ................................. Outpoint index number: 0
Masternode 2 Unspent Outpoint (empty)
| 00000000000000000000000000000000
| 00000000000000000000000000000000 ......... Outpoint TXID
| ffffffff ................................. Outpoint index number: 0
00000000000000000000ffff2d20ed4c ........... IP Address: ::ffff:45.32.237.76
4e1f ....................................... Port: 19999
9d090000 ................................... Nonce: 2641
ed5c0000 ................................... Block height: 23789
Masternode 1 Signature
| 00 ....................................... Bytes in signature: 0
| .......................................... Signature: Empty
Masternode 2 Signature
| 00 ....................................... Bytes in signature: 0
| .......................................... Signature: Empty
{% endhighlight %}
The following annotated hexdump shows a `mnv` message. This is an example of the
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 Outpoint (empty)
| 00000000000000000000000000000000
| 00000000000000000000000000000000 ......... Outpoint TXID
| ffffffff ................................. Outpoint index number: 0
Masternode 2 Unspent Outpoint (empty)
| 00000000000000000000000000000000
| 00000000000000000000000000000000 ......... Outpoint TXID
| ffffffff ................................. Outpoint index number: 0
00000000000000000000ffff2d20ed4c ........... IP Address: ::ffff:45.32.237.76
4e1f ....................................... Port: 19999
9d090000 ................................... Nonce: 2641
ed5c0000 ................................... Block height: 23789
Masternode 1 Signature
| 41 ....................................... Bytes in signature: 65
| 1bf5bd6e6eda0cd32aafb826c4066fa5
| 4a53baa6f4211528e51716054b4df981
| d97a77e633947bbbfafd6882324b76a0
| 90c6e65c16ca1222db48f8558537c062
| f6 ....................................... Signature
Masternode 2 Signature
| 00 ....................................... Bytes in signature: 0
| .......................................... Signature: Empty
{% endhighlight %}
{% endautocrossref %}
#### mnw
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated
following activation of DIP3 which implements deterministic masternode lists.
The `mnw` message is used to pick the next winning masternode. When a new block
is found on the network, a masternode quorum will be determined and those 10
selected masternodes will issue the masternode payment vote message.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 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))
The following annotated hexdump shows a `mnw` message. (The
message header has been omitted.)
{% highlight text %}
Masternode Unspent Outpoint
| 0c1b5c5846792b25b05eeea9586d8c34
| ecb996c566bedb4ecf6a68fe8ffa9582 ......... Outpoint TXID
| 00000000 ................................. Outpoint index number: 0
fb4f0a00 ................................... Block pay height: 675835
Payee Address
| 19 ....................................... Address Length: 25
| | 76 ..................................... OP_DUP
| | a9 ..................................... OP_HASH160
| | 14 ..................................... Push 20 bytes as data
| | | 1767c363646be7d8e4475c0aa85ea454
| | | 9fd102c4 ............................. Pubkey hash
| | 88 ..................................... OP_EQUALVERIFY
| | ac ..................................... OP_CHECKSIG
Masternode Signature
| 41 ....................................... Bytes in signature: 65
| 1c25da47190a83937fb5ef607235703a
| 7cdda155bf5a1ae6139929024750f899
| a90a4f57cdf9d54c9d9603c1f31009f8
| e257355b49c0484fb4c31bc412c73dd9
| 20 ....................................... Signature
{% endhighlight %}
{% endautocrossref %}
#### mnwb
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated
following activation of DIP3 which implements deterministic masternode lists.
There is no message for `mnwb` (`inv` message only).
The following annotated hexdump shows an `inv` message with a `mnwb`
inventory entry. (The message header has been omitted.)
{% highlight text %}
01 ................................. Count: 1
08000000 ........................... Type: MSG_MASTERNODE_PAYMENT_BLOCK (8)
dd6cc6c11211793b239c2e311f1496e2
2281b200b35233eaae465d2aa3c9d537 ... Hash: mnwb
{% endhighlight %}
{% endautocrossref %}
#### ssc
{% include helpers/subhead-links.md %}
@ -3363,6 +2958,412 @@ The following network messages have been deprecated and should no longer be used
{% endautocrossref %}
#### dseg
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0
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 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
request if they are not fully synced.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 36 | masternodeOutPoint | outPoint | Required | Request options:<br>`All Entries` - empty txIn<br>`Single Entry` - Masternode's unspent outpoint which is holding 1000 DASH
{% highlight text %}
Note: Dash Core only allows nodes to request the entire list every 3 hours.
Additional requests sent prior to then may result in the node being banned.
{% endhighlight %}
The following annotated hexdump shows a `dseg` message requesting **all**
masternodes. (The message header has been omitted.)
{% highlight text %}
Masternode Unspent Outpoint
| 00000000000000000000000000000000
| 00000000000000000000000000000000 ......... Outpoint TXID
| ffffffff ................................. Outpoint index number: 0
{% endhighlight %}
The following annotated hexdump shows a `dseg` message requesting a specific
masternode. (The message header has been omitted.)
{% highlight text %}
Masternode Unspent Outpoint
| 7fe33a2901aa654598ae0af572d4fbec
| ee97af2d0276f189d177dee5848ef3da ......... Outpoint TXID
| 00000000 ................................. Outpoint index number: 0
{% endhighlight %}
{% endautocrossref %}
#### mnb
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0
The `mnb` message is sent whenever a masternode comes online or a client is
syncing. The masternode will send this message which describes the masternode
entry and how to validate messages from it.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 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 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
| 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 | **Removed in Dash Core 0.12.3.0**<br><br>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
with a RFC5737 reserved IP address.)
{% highlight text %}
Masternode Unspent Outpoint
| 3fbc7d4a8f68ba6ecb02a8db34d1f5b6
| 2dc105f0b5c3505243435cf815d02394 ......... Outpoint TXID
| 01000000 ................................. Outpoint index number: 1
Masternode Address
| 00000000000000000000ffffc0000233 ......... IP Address: ::ffff:192.0.2.51
| 270f ..................................... Port: 9999
Collateral Public Key
| 21 ....................................... Key Size: 33
| 02 ....................................... Key Type: 2 - Compressed (even)
| 02a47a6845936a4199e126d35399dd09
| 97c1aaf89a3fe70d474c53f29624a43a5b ....... Public Key
Masternode Public Key
| 41 ....................................... Key Size: 65
| 04 ....................................... Key Type: 4 - Uncompressed
| 04da252243305d604cab90480880af4a
| b5cea3a934c91393452e9b7b4c97a87e
| 198bc809916ac2c27436a1db9c28d0aa
| bfefec4dc3c2193835fd9a56c31150c633 ....... Public Key
Message Signature
| 41 ....................................... Bytes in signature: 65
| 1fb80f9ba8c110835e4a7dd4c8deccd7
| 89027663d00084d9a99ef579a9b5601f
| 40727b27e91aab2897a078f63976ae25
| 3ff8f01e56862e953278f432530f6ee080 ....... Signature
4728ef5800000000 ........................... Sig. Timestamp: 2017-04-13 07:27:03 UTC
3e120100 ................................... Protocol Version: 70206
Masternode Ping Message
| Masternode Unspent Outpoint
| | 3fbc7d4a8f68ba6ecb02a8db34d1f5b6
| | 2dc105f0b5c3505243435cf815d02394 ........ Outpoint TXID
| | 01000000 ................................ Outpoint index number: 1
|
| 94fc0fad18b166c2fedf1a5dc0511372
| 26c353d57e086737ff05000000000000 ......... Chaintip block hash
|
| 66c1a95900000000 ......................... Sig. Timestamp: 2017-10-01 21:21:58 UTC
|
| Masternode Signature
| | 41 ..................................... Bytes in signature: 65
| | 1b3017c49a03e2d77083f3c92a8c2e4c
| | d815d068b6256498a719e3cb6a34f774
| | ec6434cfcbb7a5a51704350a05903287
| | eecc82e6b40ac2fcfa2df29ddaa6c4fc
| | b8 ..................................... Masternode Signature
{% endhighlight %}
{% endautocrossref %}
#### mnget
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0
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.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 4 | nMnCount | int | Deprecated | _Deprecated in Dash Core 0.12.3_<br><br>Number of masternode payment votes to request
The following annotated hexdump shows a pre-0.12.3 `mnget` message. (The
message header has been omitted.)
{% highlight text %}
a8170000 ................................... Count: 6056
{% endhighlight %}
{% endautocrossref %}
#### mnp
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0
The `mnp` message is sent by masternodes every few minutes to ping the network
with a message that propagates across the whole network. Dash Core currently
uses a minimum masternode ping time of 10 minutes.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 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))
| 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.)
{% highlight text %}
Masternode Unspent Outpoint
| ce12d7f32945c9544c5aeb0dcf131174
| a6269b64b40f9461595e26689b573c58 ......... Outpoint TXID
| 00000000 ................................. Outpoint index number: 0
6c7da9d9eae78644a3406eac8ed0be3b
f15eb4bc369acc95b106f37400000000 ........... Chaintip block hash
3c84025a00000000 ........................... Sig. Timestamp: 2017-11-08 04:12:44 UTC
Masternode Signature
| 41 ....................................... Bytes in signature: 65
| 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 %}
#### mnv
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0
The `mnv` message is used by masternodes to verify each other. Several `mnv`
messages are exchanged in the process. This results in the IP address of
masternode 1 being validated as of the provided block height.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 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
| 66 | vchSig1 | char[] | Required*<br><br>Added in Step 2 | Signature of this message by masternode 1 - verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes))<br><br>
| 66 | vchSig2 | char[] | Required*<br><br>Added in Step 3 | Signature of this message by masternode 2 - verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes))<br><br>
Initially, `vin1`, `vin2`, `vchSig1` and `vchSig2` are empty. They are
updated as the exchange of messages between the masternodes occurs as detailed
in the table below.
*Masternode Verify Data Flow*
| Step | **MN 2 (Verifier)** | **Direction** | **MN 1 (Being verified)** | **Description** |
| | **Verification request** | | | **`mnv` message with no signatures** |
| 1 | `mnv` message | → | | Contains `addr`, `nonce`, and `nBlockHeight`.<br>Sent by _SendVerifyRequest()_.
| 2 | | ← | `mnv` message | Add `vchSig1` (signature of the IP address + nonce + hash of the requested block).<br>Sent by _SendVerifyReply()_.
| 3 | `mnv` message | → | | Verify `vchSig1` <br><br>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.<br>Sent by _ProcessVerifyReply()_.
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
receiving it will relay it on to their connected peers.
{% highlight text %}
Important Notes:
* Dash Core limits how frequently a masternode verify request can be
requested. Frequent requests will result in the node being banned.
* Only masternodes in the top `MAX_POSE_RANK` (10) can send an `mnv` request
(to no more than `MAX_POSE_CONNECTIONS` (10)).
{% endhighlight %}
<!-- Need example from Wireshark -->
The following annotated hexdump shows a `mnv` message. This is an example of the
initial request (Step 1) so it does not contain any signatures. (The message
header has been omitted.)
{% highlight text %}
Masternode 1 Unspent Outpoint (empty)
| 00000000000000000000000000000000
| 00000000000000000000000000000000 ......... Outpoint TXID
| ffffffff ................................. Outpoint index number: 0
Masternode 2 Unspent Outpoint (empty)
| 00000000000000000000000000000000
| 00000000000000000000000000000000 ......... Outpoint TXID
| ffffffff ................................. Outpoint index number: 0
00000000000000000000ffff2d20ed4c ........... IP Address: ::ffff:45.32.237.76
4e1f ....................................... Port: 19999
9d090000 ................................... Nonce: 2641
ed5c0000 ................................... Block height: 23789
Masternode 1 Signature
| 00 ....................................... Bytes in signature: 0
| .......................................... Signature: Empty
Masternode 2 Signature
| 00 ....................................... Bytes in signature: 0
| .......................................... Signature: Empty
{% endhighlight %}
The following annotated hexdump shows a `mnv` message. This is an example of the
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 Outpoint (empty)
| 00000000000000000000000000000000
| 00000000000000000000000000000000 ......... Outpoint TXID
| ffffffff ................................. Outpoint index number: 0
Masternode 2 Unspent Outpoint (empty)
| 00000000000000000000000000000000
| 00000000000000000000000000000000 ......... Outpoint TXID
| ffffffff ................................. Outpoint index number: 0
00000000000000000000ffff2d20ed4c ........... IP Address: ::ffff:45.32.237.76
4e1f ....................................... Port: 19999
9d090000 ................................... Nonce: 2641
ed5c0000 ................................... Block height: 23789
Masternode 1 Signature
| 41 ....................................... Bytes in signature: 65
| 1bf5bd6e6eda0cd32aafb826c4066fa5
| 4a53baa6f4211528e51716054b4df981
| d97a77e633947bbbfafd6882324b76a0
| 90c6e65c16ca1222db48f8558537c062
| f6 ....................................... Signature
Masternode 2 Signature
| 00 ....................................... Bytes in signature: 0
| .......................................... Signature: Empty
{% endhighlight %}
{% endautocrossref %}
#### mnw
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0
The `mnw` message is used to pick the next winning masternode. When a new block
is found on the network, a masternode quorum will be determined and those 10
selected masternodes will issue the masternode payment vote message.
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
| 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))
The following annotated hexdump shows a `mnw` message. (The
message header has been omitted.)
{% highlight text %}
Masternode Unspent Outpoint
| 0c1b5c5846792b25b05eeea9586d8c34
| ecb996c566bedb4ecf6a68fe8ffa9582 ......... Outpoint TXID
| 00000000 ................................. Outpoint index number: 0
fb4f0a00 ................................... Block pay height: 675835
Payee Address
| 19 ....................................... Address Length: 25
| | 76 ..................................... OP_DUP
| | a9 ..................................... OP_HASH160
| | 14 ..................................... Push 20 bytes as data
| | | 1767c363646be7d8e4475c0aa85ea454
| | | 9fd102c4 ............................. Pubkey hash
| | 88 ..................................... OP_EQUALVERIFY
| | ac ..................................... OP_CHECKSIG
Masternode Signature
| 41 ....................................... Bytes in signature: 65
| 1c25da47190a83937fb5ef607235703a
| 7cdda155bf5a1ae6139929024750f899
| a90a4f57cdf9d54c9d9603c1f31009f8
| e257355b49c0484fb4c31bc412c73dd9
| 20 ....................................... Signature
{% endhighlight %}
{% endautocrossref %}
#### mnwb
{% include helpers/subhead-links.md %}
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0
There is no message for `mnwb` (`inv` message only).
The following annotated hexdump shows an `inv` message with a `mnwb`
inventory entry. (The message header has been omitted.)
{% highlight text %}
01 ................................. Count: 1
08000000 ........................... Type: MSG_MASTERNODE_PAYMENT_BLOCK (8)
dd6cc6c11211793b239c2e311f1496e2
2281b200b35233eaae465d2aa3c9d537 ... Hash: mnwb
{% endhighlight %}
{% endautocrossref %}
#### mnvs
{% include helpers/subhead-links.md %}

View file

@ -102,7 +102,7 @@ This file is licensed under the terms of its source texts{%endcomment%}
{% assign summary_listUnspent="returns an array of unspent transaction outputs belonging to this wallet." %}
{% assign summary_lockUnspent="temporarily locks or unlocks specified transaction outputs. A locked transaction output will not be chosen by automatic coin selection when spending dash. Locks are stored in memory only, so nodes start with zero locked outputs and the locked output list is always cleared when a node stops or fails." %}
{% assign summary_masternode="provides a set of commands for managing masternodes and displaying information about them." %}
{% assign summary_masternodeBroadcast="provides a set of commands to create and relay masternode broadcast messages." %}
{% assign summary_masternodeBroadcast="was removed in Dash Core 0.14.0." %}
{% assign summary_masternodeList="returns a list of masternodes in different modes." %}
{% assign summary_mnSync="returns the sync status, updates to the next step or resets it entirely." %}
{% assign summary_move="moves a specified amount from one account in your wallet to another using an off-block-chain transaction." %}
@ -125,7 +125,7 @@ This file is licensed under the terms of its source texts{%endcomment%}
{% assign summary_sendMany="creates and broadcasts a transaction which sends outputs to multiple addresses." %}
{% assign summary_sendRawTransaction="validates a transaction and broadcasts it to the peer-to-peer network." %}
{% assign summary_sendToAddress="spends an amount to a given address." %}
{% assign summary_sentinelPing="sends a Sentinel Ping to the network." %}
{% assign summary_sentinelPing="was removed in Dash Core 0.14.0." %}
{% 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." %}

View file

@ -233,7 +233,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header::
<td class="tg-b7b8">Dash</td>
<td class="tg-b7b8"><a href="#getgovernanceinfo">GetGovernanceInfo</a></td>
<td class="tg-dzk6">Y</td>
<td class="tg-dzk6">Updated in 0.13.0.0</td>
<td class="tg-dzk6">Updated in 0.14.0.0</td>
</tr>
<tr>
<td class="tg-yw4l">Dash</td>
@ -257,25 +257,25 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header::
<td class="tg-b7b8">Dash</td>
<td class="tg-b7b8"><a href="#masternode">Masternode</a></td>
<td class="tg-dzk6">Y</td>
<td class="tg-dzk6">Updated in 0.13.0.0</td>
<td class="tg-dzk6">Updated in 0.14.0.0</td>
</tr>
<tr>
<td class="tg-yw4l">Dash</td>
<td class="tg-yw4l"><a href="#masternodebroadcast">MasternodeBroadcast</a></td>
<td class="tg-baqh">Y</td>
<td class="tg-baqh"></td>
<td class="tg-baqh">Removed in 0.14.0.0</td>
</tr>
<tr>
<td class="tg-b7b8">Dash</td>
<td class="tg-b7b8"><a href="#masternodelist">MasternodeList</a></td>
<td class="tg-dzk6">Y</td>
<td class="tg-dzk6">Updated in 0.13.2.0</td>
<td class="tg-dzk6">Updated in 0.14.0.0</td>
</tr>
<tr>
<td class="tg-yw4l">Dash</td>
<td class="tg-yw4l"><a href="#mnsync">MnSync</a></td>
<td class="tg-baqh">Y</td>
<td class="tg-baqh"></td>
<td class="tg-baqh">Updated in 0.14.0.0</td>
</tr>
<tr>
<td class="tg-b7b8">Dash</td>
@ -287,7 +287,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header::
<td class="tg-yw4l">Dash</td>
<td class="tg-yw4l"><a href="#sentinelping">SentinelPing</a></td>
<td class="tg-baqh">Y</td>
<td class="tg-baqh"></td>
<td class="tg-baqh">Removed in 0.14.0.0</td>
</tr>
<tr>
<td class="tg-b7b8">Dash</td>

View file

@ -495,7 +495,7 @@ periodically to point to recent code. Last update: 2017-09-05 --> {% endcomment
[MAX_SIZE]: https://github.com/dashpay/dash/blob/c31ba8ba4c07e72620bd71753f2103ca103bb1c2/src/serialize.h#L26
[privatesend denominations]: https://github.com/dashpay/dash/blob/753b1e486b2757b1dba59998ee477e7ceff04f2d/src/privatesend.cpp#L149-L171
[rpcprotocol.h]: https://github.com/dashpay/dash/blob/3e0eee4c84f40b3cf277e8d03e004249d03c081d/src/rpcprotocol.h
[spork.h]: https://github.com/dashpay/dash/blob/e1702cd4eca5f276c75cae9de0eb274369b031f6/src/spork.h#L22
[spork.h]: https://github.com/dashpay/dash/blob/a4f5ba38b65384fb9243ce78c111feceb377e1a9/src/spork.h#L20
[spork pubkey]: https://github.com/dashpay/dash/blob/eaf90b77177efbaf9cbed46e822f0d794f1a0ee5/src/chainparams.cpp#L158
[masternode payments pubkey]: https://github.com/dashpay/dash/blob/eaf90b77177efbaf9cbed46e822f0d794f1a0ee5/src/chainparams.cpp#L159
[block subsidy]: https://github.com/dashpay/dash/blob/9ed9474a9eb007bba70278ce19df68e84aeeb712/src/main.cpp#L1741