mirror of
https://github.com/seigler/dash-docs
synced 2025-07-27 09:46:12 +00:00
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:
parent
097903ca2d
commit
500e2561a8
12 changed files with 662 additions and 995 deletions
|
@ -19,6 +19,10 @@ Use v0.n.n in abbreviation title to prevent autocrossrefing.
|
||||||
<!-- Dash - Not Implemented -->
|
<!-- Dash - Not Implemented -->
|
||||||
{% assign DASH_NOT_IMPLEMENTED='**<abbr title="Not Implemented in Dash">Not Implemented</abbr>**' %}
|
{% 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 -->
|
<!-- 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_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>**' %}
|
{% 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 %}
|
{% autocrossref %}
|
||||||
|
|
||||||
* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_13_0}}
|
* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_14_0}}
|
||||||
* [GetPoolInfo][rpc getpoolinfo]: {{summary_getPoolInfo}}
|
* [GetPoolInfo][rpc getpoolinfo]: {{summary_getPoolInfo}}
|
||||||
* [GetSuperblockBudget][rpc getsuperblockbudget]: {{summary_getSuperblockBudget}}
|
* [GetSuperblockBudget][rpc getsuperblockbudget]: {{summary_getSuperblockBudget}}
|
||||||
* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_13_0}}
|
* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_13_0}}
|
||||||
* [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_13_0}}
|
* [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_14_0}}
|
||||||
* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}}
|
* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_14_0}}
|
||||||
* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_12_3}}
|
* [MnSync][rpc mnsync]: {{summary_mnSync}} {{DASH_UPDATED0_14_0}}
|
||||||
* [MnSync][rpc mnsync]: {{summary_mnSync}}
|
|
||||||
* [PrivateSend][rpc privatesend]: {{summary_privateSend}} {{DASH_UPDATED0_12_3}}
|
* [PrivateSend][rpc privatesend]: {{summary_privateSend}} {{DASH_UPDATED0_12_3}}
|
||||||
* [SentinelPing][rpc sentinelping]: {{summary_sentinelPing}}
|
|
||||||
* [Spork][rpc spork]: {{summary_spork-rpc}}
|
* [Spork][rpc spork]: {{summary_spork-rpc}}
|
||||||
* [VoteRaw][rpc voteraw]: {{summary_voteRaw}}
|
* [VoteRaw][rpc voteraw]: {{summary_voteRaw}}
|
||||||
|
|
||||||
|
@ -337,5 +339,7 @@ default.
|
||||||
* [GetHashesPerSec][rpc gethashespersec]: {{summary_getHashesPerSec}}
|
* [GetHashesPerSec][rpc gethashespersec]: {{summary_getHashesPerSec}}
|
||||||
* [GetWork][rpc getwork]: {{summary_getWork}}
|
* [GetWork][rpc getwork]: {{summary_getWork}}
|
||||||
* [GetGenerate][rpc getgenerate]: {{summary_getGenerate}}
|
* [GetGenerate][rpc getgenerate]: {{summary_getGenerate}}
|
||||||
|
* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}}
|
||||||
|
* [SentinelPing][rpc sentinelping]: {{summary_sentinelPing}}
|
||||||
* [SetGenerate][rpc setgenerate]: {{summary_setGenerate}}
|
* [SetGenerate][rpc setgenerate]: {{summary_setGenerate}}
|
||||||
{% endautocrossref %}
|
{% endautocrossref %}
|
||||||
|
|
|
@ -30,16 +30,6 @@ The `getgovernanceinfo` RPC {{summary_getGovernanceInfo}}
|
||||||
p: "Required<br>(exactly 1)"
|
p: "Required<br>(exactly 1)"
|
||||||
d: "The absolute minimum number of votes needed to trigger a governance action"
|
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`"
|
- n: "→<br>`proposalfee`"
|
||||||
t: "number (int)"
|
t: "number (int)"
|
||||||
p: "Required<br>(exactly 1)"
|
p: "Required<br>(exactly 1)"
|
||||||
|
@ -62,7 +52,7 @@ The `getgovernanceinfo` RPC {{summary_getGovernanceInfo}}
|
||||||
|
|
||||||
{% enditemplate %}
|
{% enditemplate %}
|
||||||
|
|
||||||
*Example from Dash Core 0.13.0.0*
|
*Example from Dash Core 0.14.0*
|
||||||
|
|
||||||
{% highlight bash %}
|
{% highlight bash %}
|
||||||
dash-cli -testnet getgovernanceinfo
|
dash-cli -testnet getgovernanceinfo
|
||||||
|
@ -70,10 +60,8 @@ dash-cli -testnet getgovernanceinfo
|
||||||
|
|
||||||
Result:
|
Result:
|
||||||
{% highlight json %}
|
{% highlight json %}
|
||||||
|
{
|
||||||
"governanceminquorum": 1,
|
"governanceminquorum": 1,
|
||||||
"masternodewatchdogmaxseconds": 3600,
|
|
||||||
"sentinelpingmaxseconds": 3600,
|
|
||||||
"proposalfee": 5.00000000,
|
"proposalfee": 5.00000000,
|
||||||
"superblockcycle": 24,
|
"superblockcycle": 24,
|
||||||
"lastsuperblock": 250824,
|
"lastsuperblock": 250824,
|
||||||
|
|
|
@ -17,62 +17,6 @@ The `masternode` RPC {{summary_masternode}}
|
||||||
|
|
||||||
{% endautocrossref %}
|
{% 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
|
###### Masternode<!--noref--> Count
|
||||||
<!-- no subhead-links here -->
|
<!-- no subhead-links here -->
|
||||||
|
|
||||||
|
@ -85,7 +29,7 @@ The `masternode<!--noref--> count` RPC prints the number of all known masternode
|
||||||
{% itemplate ntpd1 %}
|
{% itemplate ntpd1 %}
|
||||||
- n: "Mode"
|
- n: "Mode"
|
||||||
t: "string (hex)"
|
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"
|
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 %}
|
{% enditemplate %}
|
||||||
|
@ -103,24 +47,14 @@ The `masternode<!--noref--> count` RPC prints the number of all known masternode
|
||||||
p: "Required<br>(exactly 1)"
|
p: "Required<br>(exactly 1)"
|
||||||
d: "Count of all masternodes"
|
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`"
|
- n: "→<br>`enabled`"
|
||||||
t: "int"
|
t: "int"
|
||||||
p: "Required<br>(exactly 1)"
|
p: "Required<br>(exactly 1)"
|
||||||
d: "Count of enabled masternodes"
|
d: "Count of enabled masternodes"
|
||||||
|
|
||||||
- n: "→<br>`qualify`"
|
|
||||||
t: "int"
|
|
||||||
p: "Required<br>(exactly 1)"
|
|
||||||
d: "Count of masternodes qualified to receive payment"
|
|
||||||
|
|
||||||
{% enditemplate %}
|
{% enditemplate %}
|
||||||
|
|
||||||
*Example from Dash Core 0.12.3*
|
*Example from Dash Core 0.14.0*
|
||||||
|
|
||||||
{% highlight bash %}
|
{% highlight bash %}
|
||||||
dash-cli -testnet masternode count
|
dash-cli -testnet masternode count
|
||||||
|
@ -129,10 +63,8 @@ dash-cli -testnet masternode count
|
||||||
Result:
|
Result:
|
||||||
{% highlight bash %}
|
{% highlight bash %}
|
||||||
{
|
{
|
||||||
"total": 142,
|
"total": 185,
|
||||||
"ps_compatible": 13,
|
"enabled": 130
|
||||||
"enabled": 13,
|
|
||||||
"qualify": 6
|
|
||||||
}
|
}
|
||||||
{% endhighlight %}
|
{% endhighlight %}
|
||||||
|
|
||||||
|
@ -149,7 +81,7 @@ Result:
|
||||||
|
|
||||||
{% enditemplate %}
|
{% enditemplate %}
|
||||||
|
|
||||||
*Example from Dash Core 0.12.3*
|
*Example from Dash Core 0.14.0*
|
||||||
|
|
||||||
{% highlight bash %}
|
{% highlight bash %}
|
||||||
dash-cli -testnet masternode count all
|
dash-cli -testnet masternode count all
|
||||||
|
@ -157,7 +89,7 @@ dash-cli -testnet masternode count all
|
||||||
|
|
||||||
Result:
|
Result:
|
||||||
{% highlight bash %}
|
{% highlight bash %}
|
||||||
Total: 129 (PS Compatible: 97 / Enabled: 97 / Qualify: 90)
|
Total: 185 (Enabled: 130)
|
||||||
{% endhighlight %}
|
{% endhighlight %}
|
||||||
|
|
||||||
**Get total count of all masternodes (default output of `masternode<!--noref--> count` pre-0.12.3)**
|
**Get total count of all masternodes (default output of `masternode<!--noref--> count` pre-0.12.3)**
|
||||||
|
@ -258,92 +190,6 @@ Result:
|
||||||
}
|
}
|
||||||
{% endhighlight %}
|
{% 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 %}
|
{% endautocrossref %}
|
||||||
|
|
||||||
###### Masternode<!--noref--> Outputs<!--noref-->
|
###### Masternode<!--noref--> Outputs<!--noref-->
|
||||||
|
@ -385,189 +231,6 @@ Result:
|
||||||
|
|
||||||
{% endautocrossref %}
|
{% 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
|
###### Masternode<!--noref--> Status
|
||||||
<!-- no subhead-links here -->
|
<!-- no subhead-links here -->
|
||||||
|
|
||||||
|
@ -587,7 +250,7 @@ The `masternode<!--noref--> status` RPC prints masternode status information.
|
||||||
|
|
||||||
- n: "→<br>`outpoint`"
|
- n: "→<br>`outpoint`"
|
||||||
t: "string"
|
t: "string"
|
||||||
p: "Required<br>(1 or more)"
|
p: "Required<br>(exactly 1)"
|
||||||
d: "The masternode's outpoint"
|
d: "The masternode's outpoint"
|
||||||
|
|
||||||
- n: "→<br>`service`"
|
- n: "→<br>`service`"
|
||||||
|
@ -595,10 +258,85 @@ The `masternode<!--noref--> status` RPC prints masternode status information.
|
||||||
p: "Required<br>(exactly 1)"
|
p: "Required<br>(exactly 1)"
|
||||||
d: "The IP address/port of the masternode"
|
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"
|
t: "string"
|
||||||
p: "Required<br>(exactly 1)"
|
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`"
|
- n: "→<br>`status`"
|
||||||
t: "string"
|
t: "string"
|
||||||
|
@ -607,7 +345,7 @@ The `masternode<!--noref--> status` RPC prints masternode status information.
|
||||||
|
|
||||||
{% enditemplate %}
|
{% enditemplate %}
|
||||||
|
|
||||||
*Example from Dash Core 0.12.2*
|
*Example from Dash Core 0.13.2*
|
||||||
|
|
||||||
{% highlight bash %}
|
{% highlight bash %}
|
||||||
dash-cli -testnet masternode status
|
dash-cli -testnet masternode status
|
||||||
|
@ -616,10 +354,26 @@ dash-cli -testnet masternode status
|
||||||
Result:
|
Result:
|
||||||
{% highlight json %}
|
{% highlight json %}
|
||||||
{
|
{
|
||||||
"outpoint": "f6c83fd96bfaa47887c4587cceadeb9af6238a2c86fe36b883c4d7a6867eab0f-1",
|
"outpoint": "d1be3a1aa0b9516d06ed180607c168724c21d8ccf6c5a3f5983769830724c357-0",
|
||||||
"service": "45.32.237.77:19999",
|
"service": "45.32.237.76:19999",
|
||||||
"payee": "yY6AmGopsZS31wy1JLHR9P6AC6owFaXwuh",
|
"proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63",
|
||||||
"status": "Masternode successfully started"
|
"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 %}
|
{% endhighlight %}
|
||||||
|
|
||||||
|
@ -651,90 +405,6 @@ Result:
|
||||||
|
|
||||||
{% endautocrossref %}
|
{% 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
|
###### Masternode<!--noref--> Winner
|
||||||
<!-- no subhead-links here -->
|
<!-- no subhead-links here -->
|
||||||
|
|
||||||
|
@ -914,6 +584,36 @@ Result:
|
||||||
}
|
}
|
||||||
{% endhighlight %}
|
{% endhighlight %}
|
||||||
|
|
||||||
|
|
||||||
|
**Deprecated RPCs**
|
||||||
|
|
||||||
|
 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:*
|
*See also:*
|
||||||
|
|
||||||
* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}}
|
* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}}
|
||||||
|
|
|
@ -7,10 +7,12 @@ http://opensource.org/licenses/MIT.
|
||||||
##### MasternodeBroadcast
|
##### MasternodeBroadcast
|
||||||
{% include helpers/subhead-links.md %}
|
{% 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 %}
|
{% autocrossref %}
|
||||||
|
|
||||||
|
**_Removed in Dash Core 0.14.0._**
|
||||||
|
|
||||||
The `masternodebroadcast` RPC {{summary_masternodeBroadcast}}
|
The `masternodebroadcast` RPC {{summary_masternodeBroadcast}}
|
||||||
|
|
||||||
*Parameter #1---masternode broadcast command*
|
*Parameter #1---masternode broadcast command*
|
||||||
|
|
|
@ -29,21 +29,17 @@ The `masternodelist` RPC {{summary_masternodeList}}
|
||||||
|
|
||||||
Mode | Description
|
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)
|
||||||
`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)
|
||||||
`daemon` | Print daemon version of a masternode (can be additionally filtered, exact match)
|
`info` | Print info in format 'status payee IP' (can be additionally filtered, partial 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)
|
`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
|
`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
|
`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)
|
`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)
|
`pubKeyOperator` | Print the masternode operator public key
|
||||||
`keyid` | Print the masternode (not collateral) key id
|
`status` | Print masternode status: ENABLED / POSE_BANNED (can be additionally filtered, partial match)
|
||||||
`rank` | Print rank of a masternode based on current block
|
`votingaddress` | Print the masternode voting Dash address
|
||||||
`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*
|
*Parameter #2---List filter*
|
||||||
|
|
||||||
|
@ -81,69 +77,49 @@ dash-cli -testnet masternodelist
|
||||||
Result:
|
Result:
|
||||||
{% highlight json %}
|
{% highlight json %}
|
||||||
{
|
{
|
||||||
"c568e386687bb317e52f4dcb402e83a93a13a43df6da029c95834ed2603c1f01-0": {
|
"64fbf05880cdbd35a0278ba01a5edf0c20a9c756d15f883d496f5df35b31b542-1": {
|
||||||
"address": "173.61.30.231:19003",
|
"address": "167.99.164.60:19999",
|
||||||
"payee": "yWc9sVgvRi6mB81KZLwchwUjjCNmF6ktaJ",
|
"payee": "ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX",
|
||||||
"status": "ENABLED",
|
"status": "ENABLED",
|
||||||
"protocol": 70213,
|
"lastpaidtime": 1553155206,
|
||||||
"daemonversion": "Unknown",
|
"lastpaidblock": 65121,
|
||||||
"sentinelversion": "Unknown",
|
"owneraddress": "yisedvAxYga44V9bTABzoQ7KoQMugyfU1E",
|
||||||
"sentinelstate": "expired",
|
"votingaddress": "yVpKfQgjkRkezFS5SpZvAEVFsbv9zJedf4",
|
||||||
"lastseen": 0,
|
"collateraladdress": "yeXE94admJeH3oKiaB7UpwWnPZD6Q8srhT",
|
||||||
"activeseconds": -1553091168,
|
"pubkeyoperator": "8072ac9a55d1cf5bf9c4262d49e2ef1ffcd716b8983ffdc62b940fec6cb4179d6275f8b68316f29c6c2ad540db329258"
|
||||||
"lastpaidtime": 1553077123,
|
|
||||||
"lastpaidblock": 64693,
|
|
||||||
"owneraddress": "yjW7bQrKBsMV8Wh19LgT8Z1uLkWY8P2EBd",
|
|
||||||
"votingaddress": "yjW7bQrKBsMV8Wh19LgT8Z1uLkWY8P2EBd",
|
|
||||||
"collateraladdress": "yVZjfAYphQeyFj3XKGJ7FE7n4A9Lok1X7y"
|
|
||||||
},
|
},
|
||||||
"bc3b58904a9f09b4641ffece61af28744826fffa00aabe45ef40af959a78690c-1": {
|
"6ed4aa5fa90565c2331bcd22275f684ecdca5da8dd7f83ca943aadc6f44e6746-0": {
|
||||||
"address": "52.42.213.147:19999",
|
"address": "3.209.222.37:19999",
|
||||||
"payee": "yXsKagNKcHkE2eUKQe8Sf2Z32SKrmQ6XEJ",
|
"payee": "yiVDR2HothEwH2Ss17GntqNp1rBUthnyje",
|
||||||
"status": "ENABLED",
|
"status": "ENABLED",
|
||||||
"protocol": 70213,
|
"lastpaidtime": 1553156846,
|
||||||
"daemonversion": "Unknown",
|
"lastpaidblock": 65140,
|
||||||
"sentinelversion": "Unknown",
|
"owneraddress": "ycAZ9adjpGfZ2WLEpyfyUWAjkF6sXdD5df",
|
||||||
"sentinelstate": "expired",
|
"votingaddress": "ycAZ9adjpGfZ2WLEpyfyUWAjkF6sXdD5df",
|
||||||
"lastseen": 0,
|
"collateraladdress": "ya82BzRBhuFZAPhgXvhkzZgqiVsMdnfan7",
|
||||||
"activeseconds": -1553091168,
|
"pubkeyoperator": "0a7fd01cfd502296cfd523d58ee9f4cff34243abb0dcc543ec237ff4d73938e69d187f0b6838bbaf9d54b89adc0d4c8e"
|
||||||
"lastpaidtime": 1553078267,
|
|
||||||
"lastpaidblock": 64747,
|
|
||||||
"owneraddress": "yeARCinqiurM9oni3VQ2Grm3Z6tXYxfKAR",
|
|
||||||
"votingaddress": "yeARCinqiurM9oni3VQ2Grm3Z6tXYxfKAR",
|
|
||||||
"collateraladdress": "yUq2J9YhZXSTQ76ifm9BHFvTtDMhWR8v6k"
|
|
||||||
},
|
},
|
||||||
"8b4a475fec02166c0d4a1dc6ede23e236a4cd07bb31d959fe5ed155fdc902b18-0": {
|
"4ee8c581255b643d805502e2997acb3c38deb57dc9483659d77332fd5a17de9d-6": {
|
||||||
"address": "95.183.53.17:10003",
|
"address": "52.50.208.53:20005",
|
||||||
"payee": "yYdXDDtfzSkRKUBDLH8qW2AfvehD1M9gM8",
|
"payee": "ybFPBD7hm9KVd2Dubj97K5mw2ymR8gWJre",
|
||||||
"status": "ENABLED",
|
"status": "ENABLED",
|
||||||
"protocol": 70213,
|
"lastpaidtime": 1553168003,
|
||||||
"daemonversion": "Unknown",
|
"lastpaidblock": 65194,
|
||||||
"sentinelversion": "Unknown",
|
"owneraddress": "yV97rchAqU7UGyXPZe392TNARfR93VKuU2",
|
||||||
"sentinelstate": "expired",
|
"votingaddress": "ygtDvoyioQ8Dc87A3moFgBrd97QxuiMiAR",
|
||||||
"lastseen": 0,
|
"collateraladdress": "ySQwPov5nLCJ4qWAB31tPTyY8kDZVNZrXM",
|
||||||
"activeseconds": -1553091168,
|
"pubkeyoperator": "8dfa69a96f23bd77e72c1a00984bb0df5ce93a76ca1d20694e8ad20b1dfea530cb6ee0b964b78ebb2bc8bfac22f61647"
|
||||||
"lastpaidtime": 1553078177,
|
|
||||||
"lastpaidblock": 64743,
|
|
||||||
"owneraddress": "yW9zeJrPv5yJf71qvNfyPrJg8Me9UdaDP3",
|
|
||||||
"votingaddress": "yW9zeJrPv5yJf71qvNfyPrJg8Me9UdaDP3",
|
|
||||||
"collateraladdress": "yX91ss7HuAH85TAv7tq5dVdMXJ68d4vJHT"
|
|
||||||
},
|
},
|
||||||
"d0a5d2bb6316a78e1e82569f625b56f68d7578eb2e22949f2a652bb1915f881b-1": {
|
"4758b97bbd20024e171767b8baf4290bec1475b254180869cdfe0db75d7faefb-0": {
|
||||||
"address": "140.82.59.51:19999",
|
"address": "68.183.167.16:19999",
|
||||||
"payee": "yYRfiUCoTjYAontZHqd7wAw7PhR2zru55V",
|
"payee": "ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX",
|
||||||
"status": "ENABLED",
|
"status": "ENABLED",
|
||||||
"protocol": 70213,
|
"lastpaidtime": 1553157194,
|
||||||
"daemonversion": "Unknown",
|
"lastpaidblock": 65147,
|
||||||
"sentinelversion": "Unknown",
|
"owneraddress": "yPmESxMJhZYuKDLJ1oYdH6kpE8oADVAPUQ",
|
||||||
"sentinelstate": "expired",
|
"votingaddress": "yLvTNLDLHa3pDMbFDRBX5mVMjCshzrDD1X",
|
||||||
"lastseen": 0,
|
"collateraladdress": "ydGCjUEVRHkQZK3ajCsGJGDE9sjrbbS56v",
|
||||||
"activeseconds": -1553091168,
|
"pubkeyoperator": "18af4d035eed23d30eb02808af0c133d9879c0fb82c72329ab2ed208ebc1631641ca42bbf462239d151f4e84d8dcde7b"
|
||||||
"lastpaidtime": 1553077735,
|
|
||||||
"lastpaidblock": 64724,
|
|
||||||
"owneraddress": "yX2VYLpM9ybXZHTbTEmND581QZSNRHucWm",
|
|
||||||
"votingaddress": "yX2VYLpM9ybXZHTbTEmND581QZSNRHucWm",
|
|
||||||
"collateraladdress": "ygkUtF9AbUwmGVjq2vfCUp4Znd3X9QiEqv"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{% endhighlight %}
|
{% endhighlight %}
|
||||||
|
@ -157,19 +133,20 @@ dash-cli -testnet masternodelist full "NEW"
|
||||||
Result:
|
Result:
|
||||||
{% highlight json %}
|
{% highlight json %}
|
||||||
{
|
{
|
||||||
"6125fc1da46cd2fdd013b1fbb02144367a95feffd379c08064f38de0e3deb80c-1": "NEW_START_REQUIRED 70208 yh7RGWjZN8yDAAzPpYFUJZAj41jG7G43c8 1507401630 0 1507409411 5874 1.1.1.1:19999",
|
"64fbf05880cdbd35a0278ba01a5edf0c20a9c756d15f883d496f5df35b31b542-1": " ENABLED ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX 1553155206 65121 167.99.164.60:19999",
|
||||||
"866d66b88afed15ed1a936b680ace1a99e0ca14d0242bc2983c5fdd2c16c1637-1": "NEW_START_REQUIRED 70208 yQHJ4muL7FyhUj1x8iBr2Ws9E4cJ68DKin 1507626190 138962 1507620650 7215 178.62.203.249:19999",
|
"809818107c1104bbba6d386567aa231a294219387e591542df599b7ae7d23339-1": " POSE_BANNED yLriZkwBhftk8VBUqrSykhFhAi4PowZ2Rs 1547488185 24447 45.48.177.222:19999",
|
||||||
"7c17695bdccc617410164882bd8b5fb7bf4f5a3dceb0a7476800e161cba1c57f-1": "NEW_START_REQUIRED 70208 yjWGCrz6iJnDsrog5FX6ag3iQUNor9UFj5 1507636178 0 0 0 83.1.99.1:19999",
|
"d9fd715b7d896f5426e90bd3383a67fd3e311e00c021750560c6e5c5f9cdac85-1": " ENABLED yRbiW3dguCym4fzUGZCf2kWzKUgw97zEqE 1553155396 65122 109.235.71.56:19999",
|
||||||
"0512f77ebceaf288386e9a050e3c80652c7bfb6e993659ded2dff43eae6904ac-1": "NEW_START_REQUIRED 70208 ydahSbZKWUjBi6jHeWjLgr7navPoZVCgwH 1507646277 32460 1507649163 7397 172.104.45.115:19999",
|
"0950cce784fadcc2df4febb19d3a21eab4836ba22ea996ce7e2dde32b6c31431-0": " ENABLED ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX 1553154969 65119 165.227.63.223:19999",
|
||||||
"4222505288507e0f1abc32f0323cce1d6c4d22c8e785adb0cf8075b70ae92ddf-1": "NEW_START_REQUIRED 70208 yUznkRL396PewekhtCpUJkfJcxt8fhDyoX 1507646174 9996 1507642757 7355 83.1.99.2:19999",
|
"08b493929f61a3205f09af9290af9034bec6a8355040a82ce4413f294c703e9a-0": " ENABLED ybCE7m9oPjvCjm8MzPdbMBGgkF7p9wXsFq 1553153959 65110 34.207.45.58:19999",
|
||||||
"b454dd0efc19657f8d56a750385b90ebfb53dce5182a21238b225d6cbb3307f0-1": "NEW_START_REQUIRED 70208 yYR5dcULfpnbPSixorzMkQ9SGwzPPsXcuC 1507401632 0 1507408648 5868 2.2.2.2: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 %}
|
{% endhighlight %}
|
||||||
|
|
||||||
*See also:*
|
*See also:*
|
||||||
|
|
||||||
* [Masternode][rpc masternode]: {{summary_masternode}}
|
* [Masternode][rpc masternode]: {{summary_masternode}}
|
||||||
* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}}
|
|
||||||
* [MnSync][rpc mnsync]: {{summary_mnSync}}
|
* [MnSync][rpc mnsync]: {{summary_mnSync}}
|
||||||
|
|
||||||
{% endautocrossref %}
|
{% endautocrossref %}
|
||||||
|
|
|
@ -58,16 +58,6 @@ The `mnsync` RPC {{summary_mnSync}}
|
||||||
p: "Required<br>(exactly 1)"
|
p: "Required<br>(exactly 1)"
|
||||||
d: "Blockchain sync status"
|
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`"
|
- n: "→<br>`IsSynced`"
|
||||||
t: "boolean"
|
t: "boolean"
|
||||||
p: "Required<br>(exactly 1)"
|
p: "Required<br>(exactly 1)"
|
||||||
|
@ -86,13 +76,13 @@ AssetID | AssetName
|
||||||
--- | --- | --- |
|
--- | --- | --- |
|
||||||
0 | MASTERNODE_SYNC_INITIAL
|
0 | MASTERNODE_SYNC_INITIAL
|
||||||
1 | MASTERNODE_SYNC_WAITING
|
1 | MASTERNODE_SYNC_WAITING
|
||||||
2 | MASTERNODE_SYNC_LIST
|
_2_ | **Deprecated since 0.14.0**<br>_MASTERNODE_SYNC_LIST_
|
||||||
3 | MASTERNODE_SYNC_MNW
|
_3_ | **Deprecated since 0.14.0**<br>_MASTERNODE_SYNC_MNW_
|
||||||
4 | MASTERNODE_SYNC_GOVERNANCE
|
4 | MASTERNODE_SYNC_GOVERNANCE
|
||||||
-1 | MASTERNODE_SYNC_FAILED
|
-1 | MASTERNODE_SYNC_FAILED
|
||||||
999 | MASTERNODE_SYNC_FINISHED
|
999 | MASTERNODE_SYNC_FINISHED
|
||||||
|
|
||||||
*Example from Dash Core 0.12.2*
|
*Example from Dash Core 0.14.0*
|
||||||
|
|
||||||
Get Masternode sync status
|
Get Masternode sync status
|
||||||
|
|
||||||
|
@ -108,8 +98,6 @@ Result:
|
||||||
"AssetStartTime": 1507662300,
|
"AssetStartTime": 1507662300,
|
||||||
"Attempt": 0,
|
"Attempt": 0,
|
||||||
"IsBlockchainSynced": true,
|
"IsBlockchainSynced": true,
|
||||||
"IsMasternodeListSynced": true,
|
|
||||||
"IsWinnersListSynced": true,
|
|
||||||
"IsSynced": true,
|
"IsSynced": true,
|
||||||
"IsFailed": false
|
"IsFailed": false
|
||||||
}
|
}
|
||||||
|
@ -136,7 +124,7 @@ dash-cli -testnet mnsync next
|
||||||
|
|
||||||
Result:
|
Result:
|
||||||
{% highlight text %}
|
{% highlight text %}
|
||||||
sync updated to MASTERNODE_SYNC_LIST
|
sync updated to MASTERNODE_SYNC_GOVERNANCE
|
||||||
{% endhighlight %}
|
{% endhighlight %}
|
||||||
|
|
||||||
|
|
||||||
|
@ -166,7 +154,6 @@ success
|
||||||
*See also:*
|
*See also:*
|
||||||
|
|
||||||
* [Masternode][rpc masternode]: {{summary_masternode}}
|
* [Masternode][rpc masternode]: {{summary_masternode}}
|
||||||
* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}}
|
|
||||||
* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}}
|
* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}}
|
||||||
|
|
||||||
{% endautocrossref %}
|
{% endautocrossref %}
|
||||||
|
|
|
@ -7,10 +7,12 @@ http://opensource.org/licenses/MIT.
|
||||||
##### SentinelPing
|
##### SentinelPing
|
||||||
{% include helpers/subhead-links.md %}
|
{% 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 %}
|
{% autocrossref %}
|
||||||
|
|
||||||
|
**_Removed in Dash Core 0.14.0._**
|
||||||
|
|
||||||
The `sentinelping` RPC {{summary_sentinelPing}}
|
The `sentinelping` RPC {{summary_sentinelPing}}
|
||||||
|
|
||||||
*Parameter #1---sentinel version*
|
*Parameter #1---sentinel version*
|
||||||
|
|
|
@ -44,7 +44,7 @@ To display the status of sporks, use the `show` or `active` syntax.
|
||||||
|
|
||||||
{% enditemplate %}
|
{% enditemplate %}
|
||||||
|
|
||||||
*Example from Dash Core 0.12.3*
|
*Example from Dash Core 0.14.0*
|
||||||
|
|
||||||
{% highlight bash %}
|
{% highlight bash %}
|
||||||
dash-cli -testnet spork show
|
dash-cli -testnet spork show
|
||||||
|
@ -56,12 +56,15 @@ Result:
|
||||||
"SPORK_2_INSTANTSEND_ENABLED": 0,
|
"SPORK_2_INSTANTSEND_ENABLED": 0,
|
||||||
"SPORK_3_INSTANTSEND_BLOCK_FILTERING": 0,
|
"SPORK_3_INSTANTSEND_BLOCK_FILTERING": 0,
|
||||||
"SPORK_5_INSTANTSEND_MAX_VALUE": 3000,
|
"SPORK_5_INSTANTSEND_MAX_VALUE": 3000,
|
||||||
"SPORK_6_NEW_SIGS": 4000000000,
|
"SPORK_6_NEW_SIGS": 0,
|
||||||
"SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT": 0,
|
|
||||||
"SPORK_9_SUPERBLOCKS_ENABLED": 0,
|
"SPORK_9_SUPERBLOCKS_ENABLED": 0,
|
||||||
"SPORK_10_MASTERNODE_PAY_UPDATED_NODES": 0,
|
|
||||||
"SPORK_12_RECONSIDER_BLOCKS": 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 %}
|
{% endhighlight %}
|
||||||
|
|
||||||
|
@ -82,7 +85,7 @@ Result:
|
||||||
|
|
||||||
{% enditemplate %}
|
{% enditemplate %}
|
||||||
|
|
||||||
*Example from Dash Core 0.12.3*
|
*Example from Dash Core 0.14.0*
|
||||||
|
|
||||||
{% highlight bash %}
|
{% highlight bash %}
|
||||||
dash-cli -testnet spork active
|
dash-cli -testnet spork active
|
||||||
|
@ -94,12 +97,15 @@ Result:
|
||||||
"SPORK_2_INSTANTSEND_ENABLED": true,
|
"SPORK_2_INSTANTSEND_ENABLED": true,
|
||||||
"SPORK_3_INSTANTSEND_BLOCK_FILTERING": true,
|
"SPORK_3_INSTANTSEND_BLOCK_FILTERING": true,
|
||||||
"SPORK_5_INSTANTSEND_MAX_VALUE": true,
|
"SPORK_5_INSTANTSEND_MAX_VALUE": true,
|
||||||
"SPORK_6_NEW_SIGS": false,
|
"SPORK_6_NEW_SIGS": true,
|
||||||
"SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT": true,
|
|
||||||
"SPORK_9_SUPERBLOCKS_ENABLED": true,
|
"SPORK_9_SUPERBLOCKS_ENABLED": true,
|
||||||
"SPORK_10_MASTERNODE_PAY_UPDATED_NODES": true,
|
|
||||||
"SPORK_12_RECONSIDER_BLOCKS": 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 %}
|
{% endhighlight %}
|
||||||
|
|
||||||
|
|
|
@ -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.
|
| 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.
|
| 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.
|
| 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.
|
| 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.
|
| 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.
|
| 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.**
|
| 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.
|
| 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
|
Type identifier zero and type identifiers greater than twenty are reserved
|
||||||
for future implementations. Dash Core ignores all inventories with
|
for future implementations. Dash Core ignores all inventories with
|
||||||
one of these unknown types.
|
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
|
| 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)
|
| 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
|
| 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)
|
| 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
|
| 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
|
| 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)
|
| 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.
|
| 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** |
|
| | | **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`
|
To verify `vchSig`, compare the hard-coded spork public key (`strSporkPubKey`
|
||||||
from [`src/chainparams.cpp`][spork pubkey]) with the public key recovered from
|
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 %}
|
{% endautocrossref %}
|
||||||
|
|
||||||
#### dseg
|
|
||||||
{% include helpers/subhead-links.md %}
|
|
||||||
|
|
||||||
{% autocrossref %}
|
|
||||||
|
|
||||||
 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 %}
|
|
||||||
|
|
||||||
 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 %}
|
|
||||||
|
|
||||||
 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.
|
|
||||||
|
|
||||||
 **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 %}
|
|
||||||
|
|
||||||
 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 %}
|
|
||||||
|
|
||||||
 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 %}
|
|
||||||
|
|
||||||
 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 %}
|
|
||||||
|
|
||||||
 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
|
#### ssc
|
||||||
{% include helpers/subhead-links.md %}
|
{% include helpers/subhead-links.md %}
|
||||||
|
|
||||||
|
@ -3363,6 +2958,412 @@ The following network messages have been deprecated and should no longer be used
|
||||||
|
|
||||||
{% endautocrossref %}
|
{% endautocrossref %}
|
||||||
|
|
||||||
|
#### dseg
|
||||||
|
{% include helpers/subhead-links.md %}
|
||||||
|
|
||||||
|
{% autocrossref %}
|
||||||
|
|
||||||
|
 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 %}
|
||||||
|
|
||||||
|
 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 %}
|
||||||
|
|
||||||
|
 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.
|
||||||
|
|
||||||
|
 **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 %}
|
||||||
|
|
||||||
|
 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 %}
|
||||||
|
|
||||||
|
 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 %}
|
||||||
|
|
||||||
|
 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 %}
|
||||||
|
|
||||||
|
 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
|
#### mnvs
|
||||||
{% include helpers/subhead-links.md %}
|
{% include helpers/subhead-links.md %}
|
||||||
|
|
||||||
|
|
|
@ -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_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_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_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_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_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." %}
|
{% 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_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_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_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_setAccount="puts the specified address in the given account." %}
|
||||||
{% assign summary_setBIP69Enabled="enables or disables BIP69 input/output sorting (regtest network only)" %}
|
{% 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_setBan="attempts add or remove a IP/Subnet from the banned list." %}
|
||||||
|
|
|
@ -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">Dash</td>
|
||||||
<td class="tg-b7b8"><a href="#getgovernanceinfo">GetGovernanceInfo</a></td>
|
<td class="tg-b7b8"><a href="#getgovernanceinfo">GetGovernanceInfo</a></td>
|
||||||
<td class="tg-dzk6">Y</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>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tg-yw4l">Dash</td>
|
<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">Dash</td>
|
||||||
<td class="tg-b7b8"><a href="#masternode">Masternode</a></td>
|
<td class="tg-b7b8"><a href="#masternode">Masternode</a></td>
|
||||||
<td class="tg-dzk6">Y</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>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tg-yw4l">Dash</td>
|
<td class="tg-yw4l">Dash</td>
|
||||||
<td class="tg-yw4l"><a href="#masternodebroadcast">MasternodeBroadcast</a></td>
|
<td class="tg-yw4l"><a href="#masternodebroadcast">MasternodeBroadcast</a></td>
|
||||||
<td class="tg-baqh">Y</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>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tg-b7b8">Dash</td>
|
<td class="tg-b7b8">Dash</td>
|
||||||
<td class="tg-b7b8"><a href="#masternodelist">MasternodeList</a></td>
|
<td class="tg-b7b8"><a href="#masternodelist">MasternodeList</a></td>
|
||||||
<td class="tg-dzk6">Y</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>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tg-yw4l">Dash</td>
|
<td class="tg-yw4l">Dash</td>
|
||||||
<td class="tg-yw4l"><a href="#mnsync">MnSync</a></td>
|
<td class="tg-yw4l"><a href="#mnsync">MnSync</a></td>
|
||||||
<td class="tg-baqh">Y</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>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tg-b7b8">Dash</td>
|
<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">Dash</td>
|
||||||
<td class="tg-yw4l"><a href="#sentinelping">SentinelPing</a></td>
|
<td class="tg-yw4l"><a href="#sentinelping">SentinelPing</a></td>
|
||||||
<td class="tg-baqh">Y</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>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tg-b7b8">Dash</td>
|
<td class="tg-b7b8">Dash</td>
|
||||||
|
|
|
@ -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
|
[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
|
[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
|
[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
|
[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
|
[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
|
[block subsidy]: https://github.com/dashpay/dash/blob/9ed9474a9eb007bba70278ce19df68e84aeeb712/src/main.cpp#L1741
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue