From 6aa26d7150433169daa06135d1e30014315c6dde Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 3 Jul 2018 13:51:34 -0400 Subject: [PATCH 001/117] Doxyfile version bump to 0.12.3.1 (#80) --- doxygen/Doxyfile-dashdocs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen/Doxyfile-dashdocs b/doxygen/Doxyfile-dashdocs index d6596471..8dc85721 100644 --- a/doxygen/Doxyfile-dashdocs +++ b/doxygen/Doxyfile-dashdocs @@ -41,7 +41,7 @@ PROJECT_NAME = "Dash Core" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.12.2.3 +PROJECT_NUMBER = 0.12.3.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a From 65819e3b09618966b9a11bb6478e3d1bd57d592f Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 5 Jul 2018 20:23:36 -0400 Subject: [PATCH 002/117] Content - Fix govobjvote hexdump --- _includes/devdoc/ref_p2p_networking.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 3f4afbcb..39f1e5bf 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -3084,8 +3084,8 @@ b8b4d39e5fda71f015996dbf14a51bff...... Parent Hash (0 = root) 01000000 ............................. Vote Outcome: VOTE_OUTCOME_NONE (1) 02000000 ............................. Vote Signal: VOTE_SIGNAL_VALID (2) b517a85900000000 ..................... Vote Create Timestamp: 2017-08-31 14:05:41 UTC -00000000000000000000000000000000 ..... Collateral Hash +41 ................................... Signature length: 65 1b049113a81fe913f061ad295561d267 00b8135a021ab0356a1e89b18d663d0b dc45e9c09ee0427223e332b52e8d709e From 27504bb73d55286ca334aba2265f2e5d4b56f68f Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 23 Jul 2018 13:33:48 -0400 Subject: [PATCH 003/117] Doxyfile version bump to 0.12.3.2 --- doxygen/Doxyfile-dashdocs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen/Doxyfile-dashdocs b/doxygen/Doxyfile-dashdocs index 8dc85721..b3ff8e73 100644 --- a/doxygen/Doxyfile-dashdocs +++ b/doxygen/Doxyfile-dashdocs @@ -41,7 +41,7 @@ PROJECT_NAME = "Dash Core" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.12.3.1 +PROJECT_NUMBER = 0.12.3.2 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a From 75f002ac314d7965be63c7e04765ae22783947b7 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 23 Jul 2018 14:10:01 -0400 Subject: [PATCH 004/117] Add ChainRider REST service doc link (#84) * Add ChainRider REST service doc link * Minor link update --- _includes/templates/index.html | 1 + en/developer-documentation.md | 1 + 2 files changed, 2 insertions(+) diff --git a/_includes/templates/index.html b/_includes/templates/index.html index f8eef414..7076c7a1 100644 --- a/_includes/templates/index.html +++ b/_includes/templates/index.html @@ -85,6 +85,7 @@ http://opensource.org/licenses/MIT.

Bitcoin Improvement Proposals (with Dash updates) - GitHub

RESTful JSON API for Dash - BlockCypher

+

RESTful JSON API for Dash - ChainRider

diff --git a/en/developer-documentation.md b/en/developer-documentation.md index 99f8bdac..6987e755 100644 --- a/en/developer-documentation.md +++ b/en/developer-documentation.md @@ -101,6 +101,7 @@ end_of_page: |

Bitcoin Improvement Proposals - GitHub

BlockCypher - RESTful JSON API for blockchains

+

ChainRider - RESTful JSON API for blockchains

From 7469ab42813302370a256d5e1a2cd5456e98d72a Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 5 Sep 2018 11:17:27 -0400 Subject: [PATCH 005/117] Content - RPC - getnetworkinfo (#86) - Add missing `networkactive` parameter --- _includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md index 1f25f110..277b8813 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md @@ -55,6 +55,11 @@ The `getnetworkinfo` RPC {{summary_getNetworkInfo}} p: "Required
(exactly 1)" d: "The offset of the node's clock from the computer's clock (both in UTC) in seconds. The offset may be up to 4200 seconds (70 minutes)" +- n: "→
`networkactive`" + t: "bool" + p: "Required
(exactly 1)" + d: "Set to `true` if P2P networking is enabled. Set to `false` if P2P networking is disabled. Enabling/disabling done via [SetNetworkActive][rpc setnetworkactive]" + - n: "→
`connections`" t: "number (int)" p: "Required
(exactly 1)" @@ -196,5 +201,6 @@ Result (actual addresses have been replaced with [RFC5737][] reserve * [GetPeerInfo][rpc getpeerinfo]: {{summary_getPeerInfo}} * [GetNetTotals][rpc getnettotals]: {{summary_getNetTotals}} +* [SetNetworkActive][rpc setnetworkactive]: {{summary_setNetworkActive}} {% endautocrossref %} From 6c7609f13775c1a6b80b2346eefd5a96a27daca6 Mon Sep 17 00:00:00 2001 From: thephez Date: Fri, 28 Sep 2018 11:09:47 -0400 Subject: [PATCH 006/117] Content - Update Tx malleability --- _includes/devdoc/guide_transactions.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/_includes/devdoc/guide_transactions.md b/_includes/devdoc/guide_transactions.md index db7e9cd4..a6553900 100644 --- a/_includes/devdoc/guide_transactions.md +++ b/_includes/devdoc/guide_transactions.md @@ -756,6 +756,14 @@ be added to the block chain immediately. But it does become a problem when the output from a transaction is spent before that transaction is added to the block chain. +Dash Core 12.3 implemented [BIP-147: Dealing with dummy stack element malleability](https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki) +which fixes a design flaw in OP_CHECKMULTISIG and OP_CHECKMULTISIGVERIFY that +caused them to consume an extra stack element ("dummy element") after signature +validation. Previously, the dummy element was not inspected in any manner, and could be +replaced by any value without invalidating the script. BIP147 removed this +malleability vector by forcing the dummy element to be an empty byte array and +rejecting anything else. + -in-dash-9536868ca861) +by one of the Dash Core developers. + {% endautocrossref %} From b4b9a13713ab71cf9462a3467fd9e73cb2ebe4c5 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 8 Oct 2018 13:57:06 -0400 Subject: [PATCH 007/117] Content - update DIP table --- _includes/layout/base/dip-table.html | 44 +++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/_includes/layout/base/dip-table.html b/_includes/layout/base/dip-table.html index faf510bf..1cad1b7e 100644 --- a/_includes/layout/base/dip-table.html +++ b/_includes/layout/base/dip-table.html @@ -10,7 +10,7 @@ http://opensource.org/licenses/MIT. .tg {border-collapse:collapse;border-spacing:0;border-color:#ccc;} margin:0px auto;} .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#fff;} .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;} -.tg .tg-jo0b{background-color:#f9f9f9;font-weight:bold;vertical-align:top} +.tg .tg-jo0b{background-color:#f9f9f9;font-weight:bold;text-align:center;vertical-align:top} .tg .tg-9hbo{font-weight:bold;vertical-align:top} .tg .tg-b7b8{background-color:#f9f9f9;vertical-align:top} th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header::selection { background:transparent; }th.tg-sort-header { cursor:pointer; }table th.tg-sort-header:after { content:''; float:right; margin-top:7px; border-width:0 4px 4px; border-style:solid; border-color:#404040 transparent; visibility:hidden; }table th.tg-sort-header:hover:after { visibility:visible; }table th.tg-sort-desc:after,table th.tg-sort-asc:after,table th.tg-sort-asc:hover:after { visibility:visible; opacity:0.4; }table th.tg-sort-desc:after { border-bottom:none; border-width:4px 4px 0; }@media screen and (max-width: 767px) {.tg {width: auto !important;}.tg col {width: auto !important;}.tg-wrap {overflow-x: auto;-webkit-overflow-scrolling: touch;margin: auto 0px;}} @@ -30,6 +30,48 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Standard Active + + 2 + Consensus + Special Transactions + Standard + Proposed + + + 3 + Consensus + Deterministic Masternode Lists + Standard + Proposed + + + 4 + Consensus + Simplified Verification of Deterministic Masternode Lists + Standard + Proposed + + + 5 + Consensus + Blockchain Users + Standard + Proposed + + + 6 + Consensus + Long-Living Masternode Quorums + Standard + Proposed + + + 7 + Consensus + LLMQ Signing Requests / Sessions + Standard + Proposed + From e0ee46e1d6f47b99bc8bcb3cfe368d8f99f7e86b Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 8 Oct 2018 14:04:04 -0400 Subject: [PATCH 008/117] Content - Doxyfile version bump to 0.12.3.3 --- doxygen/Doxyfile-dashdocs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen/Doxyfile-dashdocs b/doxygen/Doxyfile-dashdocs index b3ff8e73..acefb9b8 100644 --- a/doxygen/Doxyfile-dashdocs +++ b/doxygen/Doxyfile-dashdocs @@ -41,7 +41,7 @@ PROJECT_NAME = "Dash Core" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.12.3.2 +PROJECT_NUMBER = 0.12.3.3 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a From e7d301918eb233849a3e52ed1ff4d39f6b27e343 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 9 Oct 2018 13:16:09 -0400 Subject: [PATCH 009/117] Content - Add new DIP links --- _config.yml | 3 +++ _includes/references.md | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/_config.yml b/_config.yml index 3dde5510..e7d13310 100644 --- a/_config.yml +++ b/_config.yml @@ -508,6 +508,9 @@ devsearches: - "DIP2: Special Transactions": "https://github.com/dashpay/dips/blob/master/dip-0002.md" - "DIP3: Deterministic Masternode Lists": "https://github.com/dashpay/dips/blob/master/dip-0003.md" - "DIP4: Simplified Verification of Deterministic Masternode Lists": "https://github.com/dashpay/dips/blob/master/dip-0004.md" + - "DIP5: Blockchain Users": "https://github.com/dashpay/dips/blob/master/dip-0005.md" + - "DIP6: Long-Living Masternode Quorums": "https://github.com/dashpay/dips/blob/master/dip-0006.md" + - "DIP7: LLMQ Signing Requests / Sessions": "https://github.com/dashpay/dips/blob/master/dip-0007.md" ## Bitcoin P2P Protocol messages documented on Bitcoin.org "P2P Messages": diff --git a/_includes/references.md b/_includes/references.md index e602cc5f..ddceabdd 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -343,6 +343,12 @@ http://opensource.org/licenses/MIT. [secp256k1]: http://www.secg.org/sec2-v2.pdf [DIP1]: https://github.com/dashpay/dips/blob/master/dip-0001.md +[DIP2]: https://github.com/dashpay/dips/blob/master/dip-0002.md +[DIP3]: https://github.com/dashpay/dips/blob/master/dip-0003.md +[DIP4]: https://github.com/dashpay/dips/blob/master/dip-0004.md +[DIP5]: https://github.com/dashpay/dips/blob/master/dip-0005.md +[DIP6]: https://github.com/dashpay/dips/blob/master/dip-0006.md +[DIP7]: https://github.com/dashpay/dips/blob/master/dip-0007.md {% comment %}{% endcomment %} [#bitcoin]: https://webchat.freenode.net/?channels=bitcoin&uio=d4 From 88e97509c9a252a2e5ab4f6344095ac64e4fe0af Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 9 Oct 2018 13:24:23 -0400 Subject: [PATCH 010/117] Config - Update ffi to 1.9.24 (CVE-2018-1000201 vulnerability fix) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 069dbd68..7c214b3b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,7 +9,7 @@ GEM ethon (0.8.0) ffi (>= 1.3.0) execjs (2.6.0) - ffi (1.9.10) + ffi (1.9.24) ffi-icu (0.1.10) ffi (~> 1.0, >= 1.0.9) html-proofer (2.1.0) From c31012eb70ecd9794c0abc3989f1a55faf33d1f6 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 22 Oct 2018 15:16:30 -0400 Subject: [PATCH 011/117] Content - RPC - addlockconf to addlocked conversion - Update 8 RPCs based on dashpay/dash#2040 --- .../devdoc/dash-core/rpcs/rpcs/getbalance.md | 6 +++--- .../dash-core/rpcs/rpcs/getreceivedbyaccount.md | 6 +++--- .../dash-core/rpcs/rpcs/getreceivedbyaddress.md | 6 +++--- .../devdoc/dash-core/rpcs/rpcs/listaccounts.md | 6 +++--- .../dash-core/rpcs/rpcs/listreceivedbyaccount.md | 6 +++--- .../dash-core/rpcs/rpcs/listreceivedbyaddress.md | 6 +++--- _includes/devdoc/dash-core/rpcs/rpcs/sendfrom.md | 4 ++-- _includes/devdoc/dash-core/rpcs/rpcs/sendmany.md | 4 ++-- _includes/helpers/vars.md | 6 +++--- _includes/layout/base/rpc-table.html | 16 ++++++++-------- 10 files changed, 33 insertions(+), 33 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md b/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md index efc86e5e..d47311d4 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md @@ -31,13 +31,13 @@ The `getbalance` RPC {{summary_getBalance}} {{INCLUDE_CONFIRMATIONS_PARAMETER}} -*Parameter #3---whether to add 5 confirmations to transactions locked via InstantSend* +*Parameter #3---whether to add the balance from transactions locked via InstantSend* {% itemplate ntpd1 %} -- n: "addlockconf" +- n: "addlocked" t: "bool" p: "Optional
(exactly 1)" - d: "Add the number of InstantSend confirmations to InstantSend locked transactions" + d: "Add the balance from InstantSend locked transactions" {% enditemplate %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaccount.md b/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaccount.md index 7ed4e40d..64a9ac36 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaccount.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaccount.md @@ -34,13 +34,13 @@ Core. Use the RPCs listed in the See Also subsection below instead. {{INCLUDE_CONFIRMATIONS_PARAMETER}} -*Parameter #3---whether to add 5 confirmations to transactions locked via InstantSend* +*Parameter #3---whether to include transactions locked via InstantSend* {% itemplate ntpd1 %} -- n: "addlockconf" +- n: "addlocked" t: "bool" p: "Optional
(exactly 1)" - d: "Add the number of InstantSend confirmations to InstantSend locked transactions (default=false)" + d: "Add the balance from InstantSend locked transactions (default=false)" {% enditemplate %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md index b2d87964..1cc1b113 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md @@ -31,13 +31,13 @@ The `getreceivedbyaddress` RPC {{summary_getReceivedByAddress}} {{INCLUDE_CONFIRMATIONS_PARAMETER}} -*Parameter #3---whether to add 5 confirmations to transactions locked via InstantSend* +*Parameter #3---whether to include transactions locked via InstantSend* {% itemplate ntpd1 %} -- n: "addlockconf" +- n: "addlocked" t: "bool" p: "Optional
(exactly 1)" - d: "Add the number of InstantSend confirmations to InstantSend locked transactions" + d: "Add the balance from InstantSend locked transactions" {% enditemplate %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md b/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md index 042e238c..3fd6b56b 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md @@ -24,13 +24,13 @@ Core. Use the RPCs listed in the See Also subsection below instead. {{INCLUDE_CONFIRMATIONS_PARAMETER}} -*Parameter #2---whether to add 5 confirmations to transactions locked via InstantSend* +*Parameter #2--- whether to include transactions locked via InstantSend* {% itemplate ntpd1 %} -- n: "addlockconf" +- n: "addlocked" t: "bool" p: "Optional
(exactly 1)" - d: "Add the number of InstantSend confirmations to InstantSend locked transactions" + d: "Add the balance from InstantSend locked transactions" {% enditemplate %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md index 9ce6d3e3..390ecc64 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md @@ -24,13 +24,13 @@ Core. Use the RPCs listed in the See Also subsection below instead. {{INCLUDE_CONFIRMATIONS_PARAMETER}} -*Parameter #2---whether to add 5 confirmations to transactions locked via InstantSend* +*Parameter #2---whether to include transactions locked via InstantSend* {% itemplate ntpd1 %} -- n: "addlockconf" +- n: "addlocked" t: "bool" p: "Optional
(exactly 1)" - d: "Add the number of InstantSend confirmations to InstantSend locked transactions" + d: "Add the balance from InstantSend locked transactions" {% enditemplate %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md index dea5c33f..1d892892 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md @@ -21,13 +21,13 @@ The `listreceivedbyaddress` RPC {{summary_listReceivedByAddress}} {{INCLUDE_CONFIRMATIONS_PARAMETER}} -*Parameter #2---whether to add 5 confirmations to transactions locked via InstantSend* +*Parameter #2---whether to include transactions locked via InstantSend* {% itemplate ntpd1 %} -- n: "addlockconf" +- n: "addlocked" t: "bool" p: "Optional
(exactly 1)" - d: "Add the number of InstantSend confirmations to InstantSend locked transactions" + d: "Add the balance from InstantSend locked transactions" {% enditemplate %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/sendfrom.md b/_includes/devdoc/dash-core/rpcs/rpcs/sendfrom.md index dc922693..08b9bfa4 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/sendfrom.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/sendfrom.md @@ -55,9 +55,9 @@ Core. Use the RPCs listed in the See Also subsection below instead. {{INCLUDE_SPEND_CONFIRMATIONS}} -*Parameter #5---whether to add 5 confirmations to transactions locked via InstantSend* +*Parameter #5---whether to add the balance from transactions locked via InstantSend* -{{INCLUDE_ADD_LOCK_CONFIRMATIONS_PARAMETER}} +{{INCLUDE_ADD_LOCKED_PARAMETER}} *Parameter #6---a comment* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/sendmany.md b/_includes/devdoc/dash-core/rpcs/rpcs/sendmany.md index ebe4f37a..98b78f15 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/sendmany.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/sendmany.md @@ -47,8 +47,8 @@ The `sendmany` RPC {{summary_sendMany}} {{INCLUDE_SPEND_CONFIRMATIONS}} -*Parameter #4--whether to add 5 confirmations to transactions locked via InstantSend* -{{INCLUDE_ADD_LOCK_CONFIRMATIONS_PARAMETER}} +*Parameter #4--whether to add the balance from transactions locked via InstantSend* +{{INCLUDE_ADD_LOCKED_PARAMETER}} *Parameter #5---a comment* diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index b3ba1ee9..2c5e238d 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -319,12 +319,12 @@ NOT IN DASH {% enditemplate %} {% endcapture %} -{% capture INCLUDE_ADD_LOCK_CONFIRMATIONS_PARAMETER %} +{% capture INCLUDE_ADD_LOCKED_PARAMETER %} {% itemplate ntpd1 %} -- n: "addlockconf" +- n: "addlocked" t: "bool" p: "Optional
(0 or 1)" - d: "If set to `true`, add the number of InstantSend confirmations (default=5) to the confirmation count for transactions locked via InstantSend. If set to `false` (the default), the standard confirmation count is not modified for InstantSend transactions." + d: "If set to `true`, add the balance from InstantSend locked transactions. If set to `false` (the default), InstantSend locked transaction balances are not included." {% enditemplate %} {% endcapture %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index fd761ba9..05ab5043 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -605,7 +605,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet GetBalance Y - + Updated in 0.12.4.0 Wallet @@ -623,13 +623,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet GetReceivedByAccount Y - + Updated in 0.12.4.0 Wallet GetReceivedByAddress Y - + Updated in 0.12.4.0 Wallet @@ -713,7 +713,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ListAccounts Y - + Updated in 0.12.4.0 Wallet @@ -737,13 +737,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ListReceivedByAccount Y - + Updated in 0.12.4.0 Wallet ListReceivedByAddress Y - + Updated in 0.12.4.0 Wallet @@ -785,13 +785,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet SendFrom Y - + Updated in 0.12.4.0 Wallet SendMany Y - + Updated in 0.12.4.0 Wallet From f9bd089ffde8df17109937c7dc73d76c90a51bfc Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 23 Oct 2018 09:11:23 -0400 Subject: [PATCH 012/117] Content - RPC - Update dumpwallet with added info - Change from dashpay/dash#2191 --- .../devdoc/dash-core/rpcs/rpcs/dumpwallet.md | 60 +++++++++++++++++-- _includes/layout/base/rpc-table.html | 2 +- 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md b/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md index d50408b1..fe2a3be7 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md @@ -36,9 +36,43 @@ The `dumpwallet` RPC {{summary_dumpWallet}} p: "Required
(exactly 1)" d: "Always `null` whether success or failure. The JSON-RPC error and message fields will be set if a failure occurred" +- n: "→
`dashcoreversion`" + t: "string" + p: "Required
(exactly 1)" + d: "Dash Core build details" + +- n: "→
`lastblockheight`" + t: "int" + p: "Required
(exactly 1)" + d: "Height of the most recent block received" + +- n: "→
`lastblockhash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Hash of the most recent block received" + +- n: "→
`lastblocktime`" + t: "string" + p: "Required
(exactly 1)" + d: "Timestamp of the most recent block received" + +- n: "→
`keys`" + t: "int" + p: "Required
(exactly 1)" + d: "Number of keys dumped" + +- n: "→
`file`" + t: "string" + p: "Required
(exactly 1)" + d: "Name of the file the wallet was dumped to" + +- n: "→
`warning`" + t: "string" + p: "Required
(exactly 1)" + d: "Warning to not share the file due to it containing the private keys" {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.4* Create a wallet dump and then print its first 10 lines. @@ -47,13 +81,27 @@ dash-cli -testnet dumpwallet /tmp/dump.txt head /tmp/dump.txt {% endhighlight %} -Results (only showing the first 10 lines): +Results: + +{% highlight json %} +{ + "dashcoreversion": "v0.12.4.0", + "lastblockheight": 250186, + "lastblockhash": "0000000000a82fb1890de5da4740d0671910a436fe6fc4503a3e553adef073b4", + "lastblocktime": "2018-10-23T12:50:44Z", + "keys": 8135, + "file": "/tmp/dump.txt", + "warning": "/tmp/dump.txt file contains all private keys from this wallet. Do not share it with anyone!" +} +{% endhighlight %} + +Results (the first 10 lines of the file): {% highlight bash %} -# Wallet dump created by Dash Core v0.12.2.1 (2017-11-11 10:02:45 +0300) -# * Created on 2017-11-28T19:52:46Z -# * Best block at time of backup was 33750 (0000000005d5d1651f3b52d7a7158e350261519c52a28527c6053a8f5989a5a4), -# mined on 2017-11-28T19:48:05Z +# Wallet dump created by Dash Core v0.12.4.0 +# * Created on 2018-10-23T12:55:38Z +# * Best block at time of backup was 250186 (0000000000a82fb1890de5da4740d0671910a436fe6fc4503a3e553adef073b4), +# mined on 2018-10-23T12:50:44Z cQZZ4awQvcXXyES3CmUJqSgeTobQm9t9nyUr337kvUtsWsnvvMyw 2017-11-28T18:21:36Z label=test%20label # addr=ycBuREgSskHHkWLxDa9A5WppCki6PfFycL cTBRPnJoPjEMh67v1zes437v8Po5bFLDWKgEudTJMhVaLs1ZVGJe 2017-11-28T18:21:37Z reserve=1 # addr=yNsWkgPLN1u7p5dfWYnasYdgirU2J3tjUj diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 05ab5043..da404e18 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -575,7 +575,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet DumpWallet Y - + Updated in 0.12.4.0 Wallet From 7f1341b64fbae117bc0da05825d1fc35f04ea0b0 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 23 Oct 2018 09:22:45 -0400 Subject: [PATCH 013/117] Content - RPC - Update getblocktemplate - Add `previousbits` field from dashpay/dash#2201 --- _includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md | 8 +++++++- _includes/layout/base/rpc-table.html | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md index 7cf947f9..a264fd0d 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md @@ -218,6 +218,11 @@ information, please see the following resources: p: "Required
(exactly 1)" d: "The compressed target of next block" +- n: "→
`previousbits`" + t: "string" + p: "Required
(exactly 1)" + d: "The compressed target of the current highest block" + - n: "→
`height`" t: "number" p: "Required
(exactly 1)" @@ -347,7 +352,8 @@ Result: "sigoplimit": 40000, "sizelimit": 2000000, "curtime": 1507738818, - "bits": "1d01231e", + "bits": "1c103bdf", + "previousbits": "1c1548b5", "height": 7967, "masternode": { "payee": "yaJc6tADbEjxQBAC69ugWNoTFpzxqkcgWd", diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index da404e18..bfbb3a66 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -323,7 +323,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Mining GetBlockTemplate Y - Updated in 0.12.3.0 + Updated in 0.12.4.0 Mining From d62724bbe646f9bd09281cf6ad5d7584caf8216a Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 23 Oct 2018 09:41:05 -0400 Subject: [PATCH 014/117] Content - RPC - Update getblocktemplate for DIP3 - Change `masternode` to array of objects - Related to dashpay/dash#2216 --- .../dash-core/rpcs/rpcs/getblocktemplate.md | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md index a264fd0d..207a47e6 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md @@ -229,21 +229,26 @@ information, please see the following resources: d: "The height of the next block" - n: "→
`masternode`" - t: "object" - p: "Required
(exactly 1)" - d: "The masternode payee that must be included in the next block" + t: "array (objects)" + p: "Required
(0 or more)" + d: "Required masternode payments that must be included in the next block" -- n: "→ →
`payee`" +- n: "→ →
Masternode Payee" + t: "object" + p: "Optional (0 or more)" + d: "Object containing a masternode payee's information" + +- n: "→ → →
`payee`" t: "string" p: "Required
(exactly 1)" d: "Payee address" -- n: "→ →
`script`" +- n: "→ → →
`script`" t: "string" p: "Required
(exactly 1)" d: "Payee scriptPubKey" -- n: "→ →
`amount`" +- n: "→ → →
`amount`" t: "number" p: "Required
(exactly 1)" d: "Required amount to pay" @@ -355,11 +360,13 @@ Result: "bits": "1c103bdf", "previousbits": "1c1548b5", "height": 7967, - "masternode": { - "payee": "yaJc6tADbEjxQBAC69ugWNoTFpzxqkcgWd", - "script": "76a914996911b133d83de25d1f169c7046d74b728a757b88ac", - "amount": 6615000108 - }, + "masternode": [ + { + "payee": "yaJc6tADbEjxQBAC69ugWNoTFpzxqkcgWd", + "script": "76a914996911b133d83de25d1f169c7046d74b728a757b88ac", + "amount": 6615000108 + } + ], "masternode_payments_started": true, "masternode_payments_enforced": true, "superblock": [ From 7806d68e38a422f7af413707f8b21f01a510458e Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 23 Oct 2018 09:57:59 -0400 Subject: [PATCH 015/117] Content - RPC - Update masternode genkey - Add `compressed` parameter - Related to dashpay/dash#2232 --- .../devdoc/dash-core/rpcs/rpcs/masternode.md | 24 +++++++++++++++++-- _includes/layout/base/rpc-table.html | 2 +- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md index 071813bf..19f189eb 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md @@ -245,7 +245,15 @@ Masternode successfully started The `masternode genkey` RPC generates a new masternodeprivkey. -*Parameters: none* +*Parameter #1---generate compressed key* + +{% itemplate ntpd1 %} +- n: "Compressed" + t: "bool" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.12.4*

If set to `true`, generates a compressed private key (default: false)" + +{% enditemplate %} *Result---masternode private key* @@ -257,7 +265,7 @@ The `masternode genkey` RPC generates a new masternodeprivkey. {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.4* {% highlight bash %} dash-cli -testnet masternode genkey @@ -268,6 +276,18 @@ Result: 92Mn5DQpnBHjFPbS3ZXcX3EdhuET18u3eXTTtVsdDzdcAMaXqtG {% endhighlight %} +*Example from Dash Core 0.12.4 (compressed key)* + +{% highlight bash %} +dash-cli -testnet masternode genkey true +{% endhighlight %} + +Result: +{% highlight bash %} +cUHWQZQQNtrnvyYS3hERYyuzttvFAdw6JkrwS6T2gTZreH3oY6NJ +{% endhighlight %} + + {% endautocrossref %} ###### Masternode Outputs diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index bfbb3a66..31259e49 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -251,7 +251,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash Masternode Y - Updated in 0.12.3.0 + Updated in 0.12.4.0 Dash From dd5e804658919cd400bbac9cbe6265d322fb2fa3 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 23 Oct 2018 10:30:49 -0400 Subject: [PATCH 016/117] Content - RPC - Update examples for RPCs using addlocked --- _includes/devdoc/dash-core/rpcs/rpcs/getbalance.md | 6 +++--- .../devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md | 8 +++----- _includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md | 4 ++-- .../devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md | 7 +++---- .../devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md | 5 ++--- 5 files changed, 13 insertions(+), 17 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md b/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md index d47311d4..45d19f56 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md @@ -55,11 +55,11 @@ The `getbalance` RPC {{summary_getBalance}} {% enditemplate %} -*Examples from Dash Core 0.12.2* +*Examples from Dash Core 0.12.4* Get the balance for the main ("") account, including transactions with at least five confirmations and those spent to watch-only addresses in -that account. Do not add the InstantSend confirmations (5) for locked transactions. +that account. Do not include InstantSend locked transactions. {% highlight bash %} dash-cli -testnet getbalance "" 3 false true @@ -73,7 +73,7 @@ Result: Get the balance for the main ("") account, including transactions with at least one confirmation and those spent to watch-only addresses in -that account. Add the InstantSend confirmations (5) for locked transactions. +that account. Include the balance from InstantSend locked transactions. {% highlight bash %} dash-cli -testnet getbalance "" 3 true true diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md index 1cc1b113..e15e9c76 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md @@ -51,11 +51,10 @@ The `getreceivedbyaddress` RPC {{summary_getReceivedByAddress}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.4* Get the dash received for a particular address, only counting -transactions with six or more confirmations (ignore InstantSend confirmations for -locked InstantSend transactions): +transactions with six or more confirmations (ignore InstantSend locked transactions): {% highlight bash %} dash-cli -testnet getreceivedbyaddress yYoCWcjbykWsQJ7MVJrTMeQd8TZe5N4Q7g 6 @@ -68,8 +67,7 @@ Result: {% endhighlight %} Get the dash received for a particular address, only counting -transactions with six or more confirmations (include InstantSend confirmations for -locked InstantSend transactions): +transactions with six or more confirmations (include InstantSend locked transactions): {% highlight bash %} dash-cli -testnet getreceivedbyaddress yYoCWcjbykWsQJ7MVJrTMeQd8TZe5N4Q7g 6 true diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md b/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md index 3fd6b56b..8c292c07 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md @@ -53,10 +53,10 @@ Core. Use the RPCs listed in the See Also subsection below instead. {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.4* Display account balances with one confirmation and watch-only addresses -included. Add the InstantSend confirmations (5) for locked transactions. +included. Add the balance of InstantSend locked transactions also. {% highlight bash %} dash-cli -testnet listaccounts 1 true true diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md index 390ecc64..360cc0d4 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md @@ -88,11 +88,10 @@ Core. Use the RPCs listed in the See Also subsection below instead. {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.4* -Get the balances for all non-empty accounts, including only transactions -which have been confirmed at least six times (include InstantSend confirmations -for locked InstantSend transactions): +Get the balances for all non-empty accounts, including transactions +which have been confirmed at least six times and InstantSend locked transactions: {% highlight bash %} dash-cli -testnet listreceivedbyaccount 6 true false true diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md index 1d892892..79635549 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md @@ -100,11 +100,10 @@ The `listreceivedbyaddress` RPC {{summary_listReceivedByAddress}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.4* List addresses with balances confirmed by at least six blocks, including -watch-only addresses (include InstantSend confirmations for locked InstantSend -transactions): +watch-only addresses. Also include the balance from InstantSend locked transactions: {% highlight bash %} dash-cli -testnet listreceivedbyaddress 6 true false true From 8a4f9c9dcd050d01af6ded6604c85821431f5846 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 23 Oct 2018 11:23:10 -0400 Subject: [PATCH 017/117] Content - RPC - Add masternode check - Related to dashpay/dash#2218 --- .../devdoc/dash-core/rpcs/rpcs/masternode.md | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md index 19f189eb..ac0c5b0d 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md @@ -17,6 +17,62 @@ The `masternode` RPC {{summary_masternode}} {% endautocrossref %} +###### Masternode Check + + +{% autocrossref %} + +The `masternode 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
(exactly 1)" + d: "Masternode check results" + +- n: "→
`removedTotalCount`" + t: "int" + p: "Required
(exactly 1)" + d: "Count of all masternodes that were removed" + +- n: "→
`removedEnabledCount`" + t: "int" + p: "Required
(exactly 1)" + d: "Count of enabled masternodes that were removed" + +- n: "→
`totalCount`" + t: "int" + p: "Required
(exactly 1)" + d: "Count of all masternodes" + +- n: "→
`enabledCount`" + t: "int" + p: "Required
(exactly 1)" + d: "Count of enabled masternodes" + +{% enditemplate %} + +*Example from Dash Core 0.12.4* + +{% highlight bash %} +dash-cli -testnet masternode check +{% endhighlight %} + +Result: +{% highlight bash %} +{ + "removedTotalCount": 0, + "removedEnabledCount": 0, + "totalCount": 15, + "enabledCount": 15 +} +{% endhighlight %} +{% endautocrossref %} + ###### Masternode Count From 4be282f75cd92c1fbad4a9ac03535b715a3b097e Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 23 Oct 2018 13:13:11 -0400 Subject: [PATCH 018/117] Content - RPC - Add PS amount and round - Related to dashpay/dash#2230 --- _autocrossref.yaml | 4 ++ _config.yml | 2 + .../devdoc/dash-core/rpcs/quick-reference.md | 2 + .../rpcs/rpcs/setprivatesendamount.md | 42 +++++++++++++++++++ .../rpcs/rpcs/setprivatesendrounds.md | 42 +++++++++++++++++++ _includes/helpers/summaries.md | 2 + _includes/layout/base/rpc-table.html | 12 ++++++ _includes/references.md | 2 + en/developer-reference.md | 4 ++ 9 files changed, 112 insertions(+) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/setprivatesendamount.md create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/setprivatesendrounds.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index ac1ba50c..9ad61b3c 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -491,6 +491,10 @@ DIP1: '`setgenerate` RPC': rpc setgenerate '`setnetworkactive`': rpc setnetworkactive '`setnetworkactive` RPC': rpc setnetworkactive +'`setprivatesendamount`': rpc setprivatesendamount +'`setprivatesendamount` RPC': rpc setprivatesendamount +'`setprivatesendrounds`': rpc setprivatesendrounds +'`setprivatesendrounds` RPC': rpc setprivatesendrounds '`settxfee`': rpc settxfee '`settxfee` RPC': rpc settxfee '`signmessage`': rpc signmessage diff --git a/_config.yml b/_config.yml index e7d13310..5bc0b793 100644 --- a/_config.yml +++ b/_config.yml @@ -301,6 +301,8 @@ devsearches: - 'SetBIP69Enabled': "/en/developer-reference#setbip69enabled" - 'SetGenerate': "/en/developer-reference#setgenerate" - 'SetNetworkActive': "/en/developer-reference#setnetworkactive" + - 'SetPrivateSendAmount': "/en/developer-reference#setprivatesendamount" + - 'SetPrivateSendRounds': "/en/developer-reference#setprivatesendrounds" - 'SetTxFee': "/en/developer-reference#settxfee" - 'SignMessage': "/en/developer-reference#signmessage" - 'SignMessageWithPrivKey': "/en/developer-reference#signmessagewithprivkey" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 8275d351..bbb309dd 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -291,6 +291,8 @@ default. * [SendMany][rpc sendmany]: {{summary_sendMany}} * [SendToAddress][rpc sendtoaddress]: {{summary_sendToAddress}} * [SetAccount][rpc setaccount]: {{summary_setAccount}} {{DEPRECATED}} +* [SetPrivateSendAmount][rpc setprivatesendamount]: {{summary_setPrivateSendAmount}} +* [SetPrivateSendRounds][rpc setprivatesendrounds]: {{summary_setPrivateSendRounds}} * [SetTxFee][rpc settxfee]: {{summary_setTxFee}} * [SignMessage][rpc signmessage]: {{summary_signMessage}} * [WalletLock][rpc walletlock]: {{summary_walletLock}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendamount.md b/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendamount.md new file mode 100644 index 00000000..b5280eca --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendamount.md @@ -0,0 +1,42 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendamount.md" %} + +##### SetPrivateSendAmount +{% include helpers/subhead-links.md %} + +{% assign summary_setPrivateSendAmount="sets the amount of DASH to be mixed with PrivateSend" %} + + + +{% autocrossref %} + +The `setprivatesendamount` RPC {{summary_setPrivateSendAmount}} + +*Parameter #1---amount to mix* + +{% itemplate ntpd1 %} +- n: "Amount" + t: "int" + p: "Required
(exactly 1)" + d: "The number of DASH to mix (minimum: 2, maximum: 21,000,000)" + +{% enditemplate %} + +*Result---`null` on success* + +*Example from Dash Core 0.12.4* + +{% highlight bash %} +dash-cli -testnet setprivatesendamount 2000 +{% endhighlight %} + +(Success: no result displayed.) + +*See also:* + +* [SetPrivateSendRounds][rpc setprivatesendrounds]: {{summary_setPrivateSendRounds}} + +{% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendrounds.md b/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendrounds.md new file mode 100644 index 00000000..f40852ad --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendrounds.md @@ -0,0 +1,42 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendrounds.md" %} + +##### SetPrivateSendRounds +{% include helpers/subhead-links.md %} + +{% assign summary_setPrivateSendRounds="sets the number of PrivateSend mixing rounds to use" %} + + + +{% autocrossref %} + +The `setprivatesendrounds` RPC {{summary_setPrivateSendRounds}} + +*Parameter #1---number of mixing rounds to use* + +{% itemplate ntpd1 %} +- n: "Rounds" + t: "int" + p: "Required
(exactly 1)" + d: "The number of mixing rounds to use (minimum: 1, maximum: 16)" + +{% enditemplate %} + +*Result---`null` on success* + +*Example from Dash Core 0.12.4* + +{% highlight bash %} +dash-cli -testnet setprivatesendrounds 4 +{% endhighlight %} + +(Success: no result displayed.) + +*See also:* + +* [SetPrivateSendAmount][rpc setprivatesendamount]: {{summary_setPrivateSendAmount}} + +{% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index 67a59ce0..a26c2867 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -128,6 +128,8 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_setBan="attempts add or remove a IP/Subnet from the banned list." %} {% assign summary_setGenerate="was removed in Dash Core 0.12.3." %} {% assign summary_setNetworkActive="disables/enables all P2P network activity." %} +{% assign summary_setPrivateSendAmount="sets the amount of DASH to be mixed with PrivateSend" %} +{% assign summary_setPrivateSendRounds="sets the number of PrivateSend mixing rounds to use" %} {% assign summary_setTxFee="sets the transaction fee per kilobyte paid by transactions created by this wallet." %} {% assign summary_signMessage="signs a message with the private key of an address." %} {% assign summary_signMessageWithPrivKey="signs a message with a given private key." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 31259e49..9711f8e7 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -805,6 +805,18 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y + + Wallet + SetPrivateSendAmount + Y + Added in 0.12.4.0 + + + Wallet + SetPrivateSendRounds + Y + Added in 0.12.4.0 + Wallet SetTxFee diff --git a/_includes/references.md b/_includes/references.md index ddceabdd..f3204433 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -179,6 +179,8 @@ http://opensource.org/licenses/MIT. [rpc setbip69enabled]: /en/developer-reference#setbip69enabled [rpc setgenerate]: /en/developer-reference#setgenerate [rpc setnetworkactive]: /en/developer-reference#setnetworkactive +[rpc setprivatesendamount]: /en/developer-reference#setprivatesendamount +[rpc setprivatesendrounds]: /en/developer-reference#setprivatesendrounds [rpc settxfee]: /en/developer-reference#settxfee [rpc signmessage]: /en/developer-reference#signmessage [rpc signmessagewithprivkey]: /en/developer-reference#signmessagewithprivkey diff --git a/en/developer-reference.md b/en/developer-reference.md index 98d47096..a52124f3 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -308,6 +308,10 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/setnetworkactive.md %} +{% include devdoc/dash-core/rpcs/rpcs/setprivatesendamount.md %} + +{% include devdoc/dash-core/rpcs/rpcs/setprivatesendrounds.md %} + {% include devdoc/dash-core/rpcs/rpcs/settxfee.md %} {% include devdoc/dash-core/rpcs/rpcs/signmessage.md %} From 38bc6ece625b269661685591f03c9c318757f097 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 23 Oct 2018 15:35:59 -0400 Subject: [PATCH 019/117] Content - RPC - Add instantlock to getrawtx - Related to dashpay/dash#2314 --- .../dash-core/rpcs/rpcs/getrawtransaction.md | 89 ++++++++++--------- _includes/layout/base/rpc-table.html | 2 +- 2 files changed, 48 insertions(+), 43 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md index 77d85687..bab3e796 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md @@ -95,27 +95,33 @@ deprecated. p: "Optional
(0 or 1)" d: "This field is currently identical to the time field described above" +- n: "
`instantlock`" + t: "bool" + p: "Required
(exactly 1)" + d: "If set to `true`, this transaction is locked" + {% enditemplate %} -*Examples from Dash Core 0.12.2* +*Examples from Dash Core 0.12.4* A transaction in serialized transaction format: {% highlight bash %} dash-cli getrawtransaction \ - 2f124cb550d9967b81914b544dea3783de23e85d67a9816f9bada665ecfe1cd5 + 83f94090899fa63ea6ef913fe13cba851fd07c801bea7eedf73958c58936c19c {% endhighlight %} Result (wrapped): {% highlight text %} -01000000016b490886c0198b028c6c5cb145c4eb3b1055a224a7a105aadeff41\ -b69ec91e060100000069463043022033a61c56fa0867ed67b76b023204a9dc0e\ -e6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4\ -182a1de0b96fc22716e0845f561d542e012102eacba539d92eb88d4e73bb3274\ -9d79f53f6e8d7947ac40a71bd4b26c13b6ec29ffffffff0200205fa012000000\ -1976a914485485425fa99504ec1638ac4213f3cfc9f32ef388acc0a8f9be0100\ -00001976a914811eacc14db8ebb5b64486dc43400c0226b428a488ac00000000 +0200000001f28cab548af92fa2183e6615d133c4a0f0167de0a2acb6307335dc\ +a57fd71855010000006b483045022100c3d0d9b01a6654f536fd0c5bbf919b16\ +30d2e71807ba15a1f517b5c44ca35912022065825e727c8c916910a740434bc0\ +c7b8cc609424ac3ad06193efba4133616ce401210267fae84ef6aa6ab3d877b4\ +7932915a9b406566c873ea025986fc7e15a15fd2f2feffffff020f0b0c0a0000\ +00001976a9149f55b3dd67f76dd5ae11a5703481eb2f279041eb88ac0065cd1d\ +000000001976a914485485425fa99504ec1638ac4213f3cfc9f32ef388acf5d1\ +0300 {% endhighlight %} Get the same transaction in JSON: @@ -130,30 +136,42 @@ Result: {% highlight json %} { - "hex": "01000000016b490886c0198b028c6c5cb145c4eb3b1055a224a7a105aadeff41b69ec91e060100000069463043022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f561d542e012102eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29ffffffff0200205fa0120000001976a914485485425fa99504ec1638ac4213f3cfc9f32ef388acc0a8f9be010000001976a914811eacc14db8ebb5b64486dc43400c0226b428a488ac00000000", - "txid": "2f124cb550d9967b81914b544dea3783de23e85d67a9816f9bada665ecfe1cd5", - "size": 224, - "version": 1, - "locktime": 0, + "hex": "0200000001f28cab548af92fa2183e6615d133c4a0f0167de0a2acb6307335dca57fd71855010000006b483045022100c3d0d9b01a6654f536fd0c5bbf919b1630d2e71807ba15a1f517b5c44ca35912022065825e727c8c916910a740434bc0c7b8cc609424ac3ad06193efba4133616ce401210267fae84ef6aa6ab3d877b47932915a9b406566c873ea025986fc7e15a15fd2f2feffffff020f0b0c0a000000001976a9149f55b3dd67f76dd5ae11a5703481eb2f279041eb88ac0065cd1d000000001976a914485485425fa99504ec1638ac4213f3cfc9f32ef388acf5d10300", + "txid": "83f94090899fa63ea6ef913fe13cba851fd07c801bea7eedf73958c58936c19c", + "size": 226, + "version": 2, + "type": 0, + "locktime": 250357, "vin": [ { - "txid": "061ec99eb641ffdeaa05a1a724a255103bebc445b15c6c8c028b19c08608496b", + "txid": "5518d77fa5dc357330b6aca2e07d16f0a0c433d115663e18a22ff98a54ab8cf2", "vout": 1, "scriptSig": { - "asm": "3043022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f561d542e[ALL] 02eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29", - "hex": "463043022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f561d542e012102eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29" + "asm": "3045022100c3d0d9b01a6654f536fd0c5bbf919b1630d2e71807ba15a1f517b5c44ca35912022065825e727c8c916910a740434bc0c7b8cc609424ac3ad06193efba4133616ce4[ALL] 0267fae84ef6aa6ab3d877b47932915a9b406566c873ea025986fc7e15a15fd2f2", + "hex": "483045022100c3d0d9b01a6654f536fd0c5bbf919b1630d2e71807ba15a1f517b5c44ca35912022065825e727c8c916910a740434bc0c7b8cc609424ac3ad06193efba4133616ce401210267fae84ef6aa6ab3d877b47932915a9b406566c873ea025986fc7e15a15fd2f2" }, - "value": 874.99879200, - "valueSat": 87499879200, - "address": "yNpezfFDfoikDuT1f4iK75AiLp2YLPsGAb", - "sequence": 4294967295 + "sequence": 4294967294 } ], "vout": [ { - "value": 800.00000000, - "valueSat": 80000000000, + "value": 1.68561423, + "valueSat": 168561423, "n": 0, + "scriptPubKey": { + "asm": "OP_DUP OP_HASH160 9f55b3dd67f76dd5ae11a5703481eb2f279041eb OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a9149f55b3dd67f76dd5ae11a5703481eb2f279041eb88ac", + "reqSigs": 1, + "type": "pubkeyhash", + "addresses": [ + "yaqvxRbjheVBuVcKRFV8JHuaNumR6NB9RC" + ] + } + }, + { + "value": 5.00000000, + "valueSat": 500000000, + "n": 1, "scriptPubKey": { "asm": "OP_DUP OP_HASH160 485485425fa99504ec1638ac4213f3cfc9f32ef3 OP_EQUALVERIFY OP_CHECKSIG", "hex": "76a914485485425fa99504ec1638ac4213f3cfc9f32ef388ac", @@ -163,27 +181,14 @@ Result: "ySutkc49Khpz1HQN8AfWNitVBLwqtyaxvv" ] } - }, - { - "value": 74.99000000, - "valueSat": 7499000000, - "n": 1, - "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 811eacc14db8ebb5b64486dc43400c0226b428a4 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914811eacc14db8ebb5b64486dc43400c0226b428a488ac", - "reqSigs": 1, - "type": "pubkeyhash", - "addresses": [ - "yY6AmGopsZS31wy1JLHR9P6AC6owFaXwuh" - ] - } } ], - "blockhash": "00000000e679e76eabc913b15c7f202e7ea831b8fb07beb28ca2a047b03ff3cc", - "height": 19560, - "confirmations": 6, - "time": 1509568811, - "blocktime": 1509568811 + "blockhash": "0000000004acaea045b4ebe5b3663f8c235934149a72c8ab0c5a703fe594408e", + "height": 250358, + "confirmations": 1, + "time": 1540323061, + "blocktime": 1540323061, + "instantlock": true } {% endhighlight %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 9711f8e7..0da07711 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -449,7 +449,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Rawtransactions GetRawTransaction Y - Updated in 0.12.3.0 + Updated in 0.12.4.0 Rawtransactions From 461705aca147c04a39d2c60f2717bf487abacdea Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 23 Oct 2018 17:05:34 -0400 Subject: [PATCH 020/117] Content - RPC - Add DIP2 fields to raw tx - Applies to decoderawtransaction and getrawtransaction - Related to dashpay/dash#2239 --- .../rpcs/rpcs/decoderawtransaction.md | 6 +- .../dash-core/rpcs/rpcs/getrawtransaction.md | 77 +++++++++---------- _includes/helpers/vars.md | 14 ++++ _includes/layout/base/rpc-table.html | 2 +- 4 files changed, 57 insertions(+), 42 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md index 7b772442..3a387c8f 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md @@ -34,7 +34,7 @@ The `decoderawtransaction` RPC {{summary_decodeRawTransaction}} {{INCLUDE_DECODE_RAW_TRANSACTION}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.12.4* Decode a signed one-input, two-output transaction: @@ -55,6 +55,7 @@ Result: "txid": "2f124cb550d9967b81914b544dea3783de23e85d67a9816f9bada665ecfe1cd5", "size": 224, "version": 1, + "type": 0, "locktime": 0, "vin": [ { @@ -96,7 +97,8 @@ Result: ] } } - ] + ], + "instantlock": false } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md index bab3e796..2e6df596 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md @@ -114,14 +114,13 @@ dash-cli getrawtransaction \ Result (wrapped): {% highlight text %} -0200000001f28cab548af92fa2183e6615d133c4a0f0167de0a2acb6307335dc\ -a57fd71855010000006b483045022100c3d0d9b01a6654f536fd0c5bbf919b16\ -30d2e71807ba15a1f517b5c44ca35912022065825e727c8c916910a740434bc0\ -c7b8cc609424ac3ad06193efba4133616ce401210267fae84ef6aa6ab3d877b4\ -7932915a9b406566c873ea025986fc7e15a15fd2f2feffffff020f0b0c0a0000\ -00001976a9149f55b3dd67f76dd5ae11a5703481eb2f279041eb88ac0065cd1d\ -000000001976a914485485425fa99504ec1638ac4213f3cfc9f32ef388acf5d1\ -0300 +01000000016b490886c0198b028c6c5cb145c4eb3b1055a224a7a105aadeff41\ +b69ec91e060100000069463043022033a61c56fa0867ed67b76b023204a9dc0e\ +e6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4\ +182a1de0b96fc22716e0845f561d542e012102eacba539d92eb88d4e73bb3274\ +9d79f53f6e8d7947ac40a71bd4b26c13b6ec29ffffffff0200205fa012000000\ +1976a914485485425fa99504ec1638ac4213f3cfc9f32ef388acc0a8f9be0100\ +00001976a914811eacc14db8ebb5b64486dc43400c0226b428a488ac00000000 {% endhighlight %} Get the same transaction in JSON: @@ -136,42 +135,28 @@ Result: {% highlight json %} { - "hex": "0200000001f28cab548af92fa2183e6615d133c4a0f0167de0a2acb6307335dca57fd71855010000006b483045022100c3d0d9b01a6654f536fd0c5bbf919b1630d2e71807ba15a1f517b5c44ca35912022065825e727c8c916910a740434bc0c7b8cc609424ac3ad06193efba4133616ce401210267fae84ef6aa6ab3d877b47932915a9b406566c873ea025986fc7e15a15fd2f2feffffff020f0b0c0a000000001976a9149f55b3dd67f76dd5ae11a5703481eb2f279041eb88ac0065cd1d000000001976a914485485425fa99504ec1638ac4213f3cfc9f32ef388acf5d10300", - "txid": "83f94090899fa63ea6ef913fe13cba851fd07c801bea7eedf73958c58936c19c", - "size": 226, - "version": 2, + "hex": "01000000016b490886c0198b028c6c5cb145c4eb3b1055a224a7a105aadeff41b69ec91e060100000069463043022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f561d542e012102eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29ffffffff0200205fa0120000001976a914485485425fa99504ec1638ac4213f3cfc9f32ef388acc0a8f9be010000001976a914811eacc14db8ebb5b64486dc43400c0226b428a488ac00000000", + "txid": "2f124cb550d9967b81914b544dea3783de23e85d67a9816f9bada665ecfe1cd5", + "size": 224, + "version": 1, "type": 0, - "locktime": 250357, + "locktime": 0, "vin": [ { - "txid": "5518d77fa5dc357330b6aca2e07d16f0a0c433d115663e18a22ff98a54ab8cf2", + "txid": "061ec99eb641ffdeaa05a1a724a255103bebc445b15c6c8c028b19c08608496b", "vout": 1, "scriptSig": { - "asm": "3045022100c3d0d9b01a6654f536fd0c5bbf919b1630d2e71807ba15a1f517b5c44ca35912022065825e727c8c916910a740434bc0c7b8cc609424ac3ad06193efba4133616ce4[ALL] 0267fae84ef6aa6ab3d877b47932915a9b406566c873ea025986fc7e15a15fd2f2", - "hex": "483045022100c3d0d9b01a6654f536fd0c5bbf919b1630d2e71807ba15a1f517b5c44ca35912022065825e727c8c916910a740434bc0c7b8cc609424ac3ad06193efba4133616ce401210267fae84ef6aa6ab3d877b47932915a9b406566c873ea025986fc7e15a15fd2f2" + "asm": "3043022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f561d542e[ALL] 02eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29", + "hex": "463043022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f561d542e012102eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29" }, - "sequence": 4294967294 + "sequence": 4294967295 } ], "vout": [ { - "value": 1.68561423, - "valueSat": 168561423, + "value": 800.00000000, + "valueSat": 80000000000, "n": 0, - "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 9f55b3dd67f76dd5ae11a5703481eb2f279041eb OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a9149f55b3dd67f76dd5ae11a5703481eb2f279041eb88ac", - "reqSigs": 1, - "type": "pubkeyhash", - "addresses": [ - "yaqvxRbjheVBuVcKRFV8JHuaNumR6NB9RC" - ] - } - }, - { - "value": 5.00000000, - "valueSat": 500000000, - "n": 1, "scriptPubKey": { "asm": "OP_DUP OP_HASH160 485485425fa99504ec1638ac4213f3cfc9f32ef3 OP_EQUALVERIFY OP_CHECKSIG", "hex": "76a914485485425fa99504ec1638ac4213f3cfc9f32ef388ac", @@ -181,14 +166,28 @@ Result: "ySutkc49Khpz1HQN8AfWNitVBLwqtyaxvv" ] } + }, + { + "value": 74.99000000, + "valueSat": 7499000000, + "n": 1, + "scriptPubKey": { + "asm": "OP_DUP OP_HASH160 811eacc14db8ebb5b64486dc43400c0226b428a4 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914811eacc14db8ebb5b64486dc43400c0226b428a488ac", + "reqSigs": 1, + "type": "pubkeyhash", + "addresses": [ + "yY6AmGopsZS31wy1JLHR9P6AC6owFaXwuh" + ] + } } ], - "blockhash": "0000000004acaea045b4ebe5b3663f8c235934149a72c8ab0c5a703fe594408e", - "height": 250358, - "confirmations": 1, - "time": 1540323061, - "blocktime": 1540323061, - "instantlock": true + "blockhash": "00000000e679e76eabc913b15c7f202e7ea831b8fb07beb28ca2a047b03ff3cc", + "height": 19560, + "confirmations": 230837, + "time": 1509568811, + "blocktime": 1509568811, + "instantlock": false } {% endhighlight %} diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index 2c5e238d..f36af4e5 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -157,6 +157,11 @@ NOT IN DASH p: "Required
(exactly 1)" d: "The transaction format version number" +- n: "{{DEPTH}} →
`type`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "*Added in Dash Core 0.12.4.0*

The transaction format type" + - n: "{{DEPTH}} →
`locktime`" t: "number (int)" p: "Required
(exactly 1)" @@ -295,6 +300,15 @@ NOT IN DASH p: "Required
(1 or more)" d: "A P2PKH or P2SH address" +- n: "{{DEPTH}} →
`extraPayloadSize`" + t: "number (int)" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.12.4.0*

Size of the DIP2 extra payload. Only present if it's a DIP2 special transaction" + +- n: "{{DEPTH}} →
`extraPayload`" + t: "string (hex)" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.12.4.0*

Hex encoded DIP2 extra payload data. Only present if it's a DIP2 special transaction" {% endcapture %} {% assign INCLUDE_WALLET_UNLOCKED="If the wallet has been encrypted either through the GUI or with the `encryptwallet` RPC, it must first be unlocked with the `walletpassphrase` RPC" %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 0da07711..b82c9431 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -431,7 +431,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Rawtransactions DecodeRawTransaction Y - + Updated in 0.12.4.0 Rawtransactions From 1c5293bb9176d11ffd213cc37d0edfd7202d4bb5 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 24 Oct 2018 09:54:18 -0400 Subject: [PATCH 021/117] Content - RPC - Remove maxgovobjdatasize from getgovernanceinfo From dashpay/dash#2298 --- .../dash-core/rpcs/rpcs/getgovernanceinfo.md | 18 ++++++------------ _includes/layout/base/rpc-table.html | 2 +- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md index feebc2de..7cd5ddc2 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md @@ -60,14 +60,9 @@ The `getgovernanceinfo` RPC {{summary_getGovernanceInfo}} p: "Required
(exactly 1)" d: "The block number of the next superblock" -- n: "→
`maxgovobjdatasize`" - t: "number (int)" - p: "Required
(exactly 1)" - d: "*Added in Dash Core 0.12.2.2*

The maximum governance object data size in bytes" - {% enditemplate %} -*Example from Dash Core 0.12.3.0* +*Example from Dash Core 0.12.4.0* {% highlight bash %} dash-cli -testnet getgovernanceinfo @@ -75,15 +70,14 @@ dash-cli -testnet getgovernanceinfo Result: {% highlight json %} -{ + "governanceminquorum": 1, - "masternodewatchdogmaxseconds": 7200, - "sentinelpingmaxseconds": 7200, + "masternodewatchdogmaxseconds": 3600, + "sentinelpingmaxseconds": 3600, "proposalfee": 5.00000000, "superblockcycle": 24, - "lastsuperblock": 82704, - "nextsuperblock": 82728, - "maxgovobjdatasize": 16384 + "lastsuperblock": 250824, + "nextsuperblock": 250848 } {% endhighlight %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index b82c9431..2c620973 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -227,7 +227,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash GetGovernanceInfo Y - Updated in 0.12.3.0 + Updated in 0.12.4.0 Dash From b68663de1eae87ce9d9ba1c940c2638593b92746 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 30 Oct 2018 14:20:29 -0400 Subject: [PATCH 022/117] V13.0 special txs (#90) * Content - Add section for Special txs * Content - Add necessary cross-refs * Content - DIP3 - Add ProRegTx details Description and example hexdump added * Content - Minor DIP 2-5 formatting * Content - formatting fix * Content - DIP3 - Update ProRegTx Op Key info Uses BLS public key instead of ECDSA pubkeyhash * Content - DIP3 - Add ProUpServTx details * Content - DIP3 - Update ProRegTx Hexdump for both new collateral and reference to existing on * Content - DIP3 - Update ProUpServTx Add note about missing payloadSigSize Hexdump corrections * Content - DIP3 - Update ProUpServTx Minor formatting updates * Content - DIP3 - Add ProUpRevTx details * Content - DIP4 - Add CbTx details * Content - Update raw tx per DIP2 Split version into version and type Add extra_payload fields * Content - DIP3 - Add ProUpRegTx details --- _includes/devdoc/ref_transactions.md | 516 ++++++++++++++++++++++++++- 1 file changed, 515 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/ref_transactions.md b/_includes/devdoc/ref_transactions.md index f282b8eb..5fd4aedc 100644 --- a/_includes/devdoc/ref_transactions.md +++ b/_includes/devdoc/ref_transactions.md @@ -7,6 +7,8 @@ http://opensource.org/licenses/MIT. ## Transactions {% include helpers/subhead-links.md %} + + The following subsections briefly document core transaction details. #### OpCodes @@ -222,12 +224,15 @@ A raw transaction has the following top-level format: | Bytes | Name | Data Type | Description |----------|--------------|---------------------|------------- -| 4 | version | uint32_t | Transaction version number; currently version 2. Programs creating transactions using newer consensus rules may use higher version numbers. +| 2 | version | uint16_t | Transaction version number; currently version 3. Programs creating transactions using newer consensus rules may use higher version numbers. +| 2 | type | uint16_t | Transaction type number; 0 for classical transactions; Non-zero for DIP2 special transactions. | *Varies* | tx_in count | compactSize uint | Number of inputs in this transaction. | *Varies* | tx_in | txIn | Transaction inputs. See description of txIn below. | *Varies* | tx_out count | compactSize uint | Number of outputs in this transaction. | *Varies* | tx_out | txOut | Transaction outputs. See description of txOut below. | 4 | lock_time | uint32_t | A time (Unix epoch time) or block number. See the [locktime parsing rules][]. +| *Varies* | extra_payload size | compactSize uint | *Added by DIP2*

Variable number of bytes of extra payload for DIP2-based special transactions +| *Varies* | extra_payload | blob | *Added by DIP2*

Special transaction payload. A transaction may have multiple inputs and outputs, so the txIn and txOut structures may recur within a transaction. CompactSize unsigned @@ -398,6 +403,515 @@ have multiple outputs depending on the number of proposals being funded. {% endautocrossref %} +### Special Transactions +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +The Special Transaction framework established by DIP2 enabled the implementation +of new on-chain features and consensus mechanisms. These transactions provide the +flexibility to expand beyond the financial uses of classical transactions. DIP2 +transactions modified classical transactions by: + +1. Splitting the 32 bit `version` field into two 16 bit fields (`version` and `type`) +2. Adding support for a generic extra payload following the `lock_time` field + +Classical (financial) transactions have a `type` of 0 while special transactions +have a `type` defined in the DIP describing them. A list of current special +transaction types is maintained in the [DIP repository](https://github.com/dashpay/dips/blob/master/dip-0002-special-transactions.md). + +{% endautocrossref %} + +#### ProRegTx +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70211 of Dash Core as described by DIP3* + +The Masternode Registration (ProRegTx) special transaction is used to join the +masternode list by proving ownership of the 1000 DASH necessary to create a +masternode. + +A ProRegTx is created and sent using the `protx` RPC. The ProRegTx must either +include an output with 1000 DASH (`protx register`) or refer to an existing +unspent output holding 1000 DASH (`protx fund_register`). If the 1000 DASH is an +output of the ProRegTx, the collateralOutpoint hash field should be null. + +The special transaction type is 1 and the extra payload consists of the following +data: + +| Bytes | Name | Data type | Description | +| ---------- | ----------- | -------- | -------- | +| 2 | version | uint_16 | Provider transaction version number. Currently set to 1. +| 2 | type | uint_16 | Masternode type. Default set to 0. +| 2 | mode | uint_16 | Masternode mode. Default set to 0. +| 36 | collateralOutpoint | COutpoint | The collateral outpoint.
**Note:** The hash will be null if the collateral is part of this transaction, otherwise it will reference an existing collateral. +| 16 | ipAddress | byte[] | IPv6 address in network byte order. Only IPv4 mapped addresses are allowed (to be extended in the future) +| 2 | port | uint_16 | Port (network byte order) +| 20 | KeyIdOwner | CKeyID | The public key hash used for owner related signing (ProTx updates, governance voting) +| 48 | PubKeyOperator | CBLSPublicKey | The BLS public key used for operational related signing (network messages, ProTx updates) +| 20 | KeyIdVoting | CKeyID | The public key hash used for voting. +| 2 | operatorReward | uint_16 | A value from 0 to 10000. +| 1-9 | scriptPayoutSize | compactSize uint | Size of the Payee Script. +| Variable | scriptPayout | Script | Payee script (p2pkh/p2sh) +| 32 | inputsHash | uint256 | Hash of all the outpoints of the transaction inputs +| 1-9 | payloadSigSize |compactSize uint | Size of the Signature +| Variable | payloadSig | vector | Signature of the hash of the ProTx fields. Signed with the key corresponding to the collateral outpoint in case the collateral is not part of the ProRegTx itself, empty otherwise. + +The following annotated hexdump shows a ProRegTx transaction referencing an +existing collateral. (Parts of the classical transaction section have been omitted.) + +{% highlight text %} +0300 ....................................... Version (3) +0100 ....................................... Type (1 - ProRegTx) + +[...] ...................................... Transaction inputs omitted +[...] ...................................... Transaction outputs omitted + +00000000 ................................... locktime: 0 (a block height) + +fd1201 ..................................... Extra payload size (274) + +ProRegTx Payload +| 0100 ..................................... Version (1) +| 0000 ..................................... Type (0) +| 0000 ..................................... Mode (0) +| +| 4859747b0eb19bb2dae5a12ef7b6a69b +| 03712bfeded1174de0b6ab1334ab2e8b ......... Outpoint TXID +| 01000000 ................................. Outpoint index number: 1 +| +| 00000000000000000000ffffc0000233 ......... IP Address: ::ffff:192.0.2.51 +| 270f ..................................... Port: 9999 +| +| +| 1636e84d02310b0b458f3eb51d8ea8b2e684b7ce . Owner pubkey hash (ECDSA) +| 88d719278eef605d9c19037366910b59bc28d437 +| de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8 +| c22f4a914a6c5566 ......................... Operator public key (BLS) +| 1636e84d02310b0b458f3eb51d8ea8b2e684b7ce . Voting pubkey hash (ECDSA) +| +| f401 ..................................... Operator reward (500 -> 5%) +| +| Payout script +| 19 ....................................... Bytes in pubkey script: 25 +| | 76 ..................................... OP_DUP +| | a9 ..................................... OP_HASH160 +| | 14 ..................................... Push 20 bytes as data +| | | fc136008111fcc7a05be6cec66f97568 +| | | 727a9e51 ............................. PubKey hash +| | 88 ..................................... OP_EQUALVERIFY +| | ac ..................................... OP_CHECKSIG +| +| 0fcfb7d939078ba6a6b81ecf1dc2e05d +| e2776f49f7b503ac254798be6a672699 ......... Inputs hash +| +| Payload signature +| 41 ....................................... Signature Size (65) +| 200476f193b465764093014ba44bd4ff +| de2b3fc92794c4acda9cad6305ca172e +| 9e3d6b1cd6e30f86678dae8e6595e53d +| 2b30bc32141b6c0151eb58479121b3e6a4 ....... Signature +{% endhighlight %} + +The following annotated hexdump shows a ProRegTx transaction creating a new +collateral. + +**Note the presence of the output, a null Outpoint TXID and the +absence of a signature (since it isn't referring to an existing collateral).** +(Parts of the classical transaction section have been omitted.) + +{% highlight text %} +0300 ....................................... Version (3) +0100 ....................................... Type (1 - ProRegTx) + +[...] ...................................... Transaction inputs omitted + +02 ......................................... Number of outputs +| [...] .................................... 1 output omitted +| +| Masternode collateral output +| | 00e8764817000000 ....................... Duffs (1000 DASH) +| | 1976a9149e648c7e4b61482aa3 +| | 9bd10e0bf0b5268768005f88ac ............. Script + +00000000 ................................... locktime: 0 (a block height) + +d1 ......................................... Extra payload size (209) + +ProRegTx Payload +| 0100 ..................................... Version (1) +| 0000 ..................................... Type (0) +| 0000 ..................................... Mode (0) +| +| 00000000000000000000000000000000 +| 00000000000000000000000000000000 ......... Outpoint TXID +| 01000000 ................................. Outpoint index number: 1 +| +| 00000000000000000000ffffc0000233 ......... IP Address: ::ffff:192.0.2.51 +| 270f ..................................... Port: 9999 +| +| 757a2171bbf92517e358249f20c37a8ad2d7a5bc . Owner pubkey hash (ECDSA) +| 0e02146e9c34cfbcb3f3037574a1abb35525e2ca +| 0c3c6901dbf82ac591e30218d1711223b7ca956e +| df39f3d984d06d51 ......................... Operator public key (BLS) +| 757a2171bbf92517e358249f20c37a8ad2d7a5bc . Voting pubkey hash (ECDSA) +| +| f401 ..................................... Operator reward (500 -> 5%) +| +| Payout script +| 19 ....................................... Bytes in pubkey script: 25 +| | 76 ..................................... OP_DUP +| | a9 ..................................... OP_HASH160 +| | 14 ..................................... Push 20 bytes as data +| | | 9e648c7e4b61482aa39bd10e0bf0b526 +| | | 8768005f ............................. PubKey hash +| | 88 ..................................... OP_EQUALVERIFY +| | ac ..................................... OP_CHECKSIG +| +| 57b115d681b9aff82824ff7e22af99d4 +| ac4b39ad7be7cb70b662e9011827d589 ......... Inputs hash +| +| Payload signature +| 00 ....................................... Signature Size (0) +| .......................................... Signature (Empty) +{% endhighlight %} + +{% endautocrossref %} + +#### ProUpServTx +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70211 of Dash Core as described by DIP3* + +The Masternode Provider Update Service (ProUpServTx) special transaction is used +to update the IP Address and port of a masternode. If a non-zero operatorReward +was set in the initial ProRegTx, the operator may also set the scriptOperatorPayout +field in the ProUpServTx. + +A ProUpServTx is only valid for masternodes in the registered masternodes subset. +When processed, it updates the metadata of the masternode entry and revives the +masternode if it was previously marked as PoSe-banned. + +A ProUpServTx is created and sent using the `protx update_service` RPC. + +The special transaction type used for ProUpServTx Transactions is 2 and the extra +payload consists of the following data: + +| Bytes | Name | Data type | Description | +| ---------- | ----------- | -------- | -------- | +| 2 | version | uint_16 | ProUpServTx version number. Currently set to 1. +| 32 | proTXHash | uint256 | The hash of the initial ProRegTx +| 16 | ipAddress | byte[] | IPv6 address in network byte order. Only IPv4 mapped addresses are allowed (to be extended in the future) +| 2 | port | uint_16 | Port (network byte order) +| 1-9 | scriptOperator
PayoutSize | compactSize uint | Size of the Operator Payee Script. +| Variable | scriptOperator
Payout | Script | Operator Payee script (p2pkh/p2sh) +| 32 | inputsHash | uint256 | Hash of all the outpoints of the transaction inputs +| 1-9 | payloadSigSize |compactSize uint | Size of the Signature
**Note:** not present in BLS implementation +| 96 | payloadSig | vector | BLS Signature of the hash of the ProUpServTx fields. Signed by the Operator. + +The following annotated hexdump shows a ProUpServTx transaction. (Parts of the +classical transaction section have been omitted.) + +{% highlight text %} +0300 ....................................... Version (3) +0200 ....................................... Type (2 - ProUpServTx) + +[...] ...................................... Transaction inputs omitted +[...] ...................................... Transaction outputs omitted + +00000000 ................................... locktime: 0 (a block height) + +b5 ......................................... Extra payload size (181) + +ProUpServTx Payload +| 0100 ..................................... Version (1) +| +| db60b8cecae691a3d078a2341d460b06 +| b2914f6b092f1906b5c815589399b0ff ......... ProRegTx Hash +| +| 00000000000000000000ffffc0000233 ......... IP Address: ::ffff:192.0.2.51 +| 270f ..................................... Port: 9999 +| +| 00 ....................................... Operator payout script size (0) +| .......................................... Operator payout script (Empty) +| +| a9569d037b0eacc8bca05c5829c95283 +| 4ac27d1c7e7df610500b7ba70fd46507 ......... Inputs hash +| +| Payload signature (BLS) +| 0267702ef85d186ef7fa32dc40c65f2f +| eca0a7465715eb7c30f81beb69e35ee4 +| 1f6ff7f292b82a9caebb5aa961b0f915 +| 02501becf629e93c0a01c76162d56a6c +| 65a9675c3ca9d5297f053e68f91393dd +| 789beed8ef7e8839695a334c2e1bd37c ......... BLS Signature (96 bytes) +{% endhighlight %} + +{% endautocrossref %} + +#### ProUpRegTx +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70211 of Dash Core as described by DIP3* + +The Masternode Provider Update Registrar (ProUpRegTx) special transaction is used +by a masternode owner to update masternode metadata (e.g. operator/voting key +details or the payout script). + +A ProUpRegTx is created and sent using the `protx update_registrar` RPC. + +The special transaction type is 3 and the extra payload consists of the following +data: + +| Bytes | Name | Data type | Description | +| ---------- | ----------- | -------- | -------- | +| 2 | version | uint_16 | Provider update registrar transaction version number. Currently set to 1. +| 32 | proTXHash | uint256 | The hash of the initial ProRegTx +| 2 | mode | uint_16 | Masternode mode. Default set to 0. +| 48 | PubKeyOperator | CBLSPublicKey | The BLS public key used for operational related signing (network messages, ProTx updates) +| 20 | KeyIdVoting | CKeyID | The public key hash used for voting. +| 1-9 | scriptPayoutSize | compactSize uint | Size of the Payee Script. +| Variable | scriptPayout | Script | Payee script (p2pkh/p2sh) +| 32 | inputsHash | uint256 | Hash of all the outpoints of the transaction inputs +| 1-9 | payloadSigSize |compactSize uint | Size of the Signature +| Variable | payloadSig | vector | Signature of the hash of the ProTx fields. Signed with the key corresponding to the collateral outpoint in case the collateral is not part of the ProRegTx itself, empty otherwise. + +The following annotated hexdump shows a ProUpRegTx transaction referencing an +existing collateral. (Parts of the classical transaction section have been omitted.) + + + +{% highlight text %} +0300 ....................................... Version (3) +0300 ....................................... Type (3 - ProUpRegTx) + +[...] ...................................... Transaction inputs omitted +[...] ...................................... Transaction outputs omitted + +00000000 ................................... locktime: 0 (a block height) + +e4 ......................................... Extra payload size (228) + +ProRegTx Payload +| 0100 ..................................... Version (1) +| +| ddaf13bf1b02de39711de911e646c63e +| f089b6cee786a1b776086ae130331bba ......... ProRegTx Hash +| +| 0000 ..................................... Mode (0) +| +| 0e02146e9c34cfbcb3f3037574a1abb35525e2ca +| 0c3c6901dbf82ac591e30218d1711223b7ca956e +| df39f3d984d06d51 ......................... Operator public key (BLS) +| 757a2171bbf92517e358249f20c37a8ad2d7a5bc . Voting pubkey hash (ECDSA) +| +| Payout script +| 19 ....................................... Bytes in pubkey script: 25 +| | 76 ..................................... OP_DUP +| | a9 ..................................... OP_HASH160 +| | 14 ..................................... Push 20 bytes as data +| | | 9e648c7e4b61482aa39bd10e0bf0b526 +| | | 8768005f ............................. PubKey hash +| | 88 ..................................... OP_EQUALVERIFY +| | ac ..................................... OP_CHECKSIG +| +| 50b50b24193b2b16f0383125c1f4426e +| 883d256eeadee96d500f8c08b0e0f9e4 ......... Inputs hash +| +| Payload signature +| 41 ....................................... Signature Size (65) +| 1ffa8a27ae0301e414176d4c876cff2e +| 20b810683a68ab7dcea95de1f8f36441 +| 4c56368f189a3ef7a59b83bd77f22431 +| a73d347841a58768b94c771819dc2bbce3 ....... Signature +{% endhighlight %} + +{% endautocrossref %} + +#### ProUpRevTx +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70211 of Dash Core as described by DIP3* + +The Masternode Operator Revocation (ProUpRevTx) special transaction allows an +operator to revoke their key in case of compromise or if they wish to terminate +service. If a masternode's operator key is revoked, the masternode becomes +ineligible for payment until the owner provides a new operator key (via a ProUpRegTx). + +A ProUpRevTx is created and sent using the `protx revoke` RPC. + +The special transaction type used for ProUpServTx Transactions is 4 and the extra +payload consists of the following data: + +| Bytes | Name | Data type | Description | +| ---------- | ----------- | -------- | -------- | +| 2 | version | uint_16 | ProUpRevTx version number. Currently set to 1. +| 32 | proTXHash | uint256 | The hash of the initial ProRegTx +| 2 | reason | uint_16 | The reason for revoking the key.
`0` - Not specified
`1` - Termination of Service
`2` - Compromised Key
`3` - Change of key +| 32 | inputsHash | uint256 | Hash of all the outpoints of the transaction inputs +| 1-9 | payloadSigSize |compactSize uint | Size of the Signature
**Note:** not present in BLS implementation +| 96 | payloadSig | vector | BLS Signature of the hash of the ProUpServTx fields. Signed by the Operator. + +The following annotated hexdump shows a ProUpRevTx transaction. (Parts of the +classical transaction section have been omitted.) + +{% highlight text %} +0300 ....................................... Version (3) +0400 ....................................... Type (4 - ProUpRevTx) + +[...] ...................................... Transaction inputs omitted +[...] ...................................... Transaction outputs omitted + +00000000 ................................... locktime: 0 (a block height) + +a4 ......................................... Extra payload size (164) + +ProUpRevTx Payload +| 0100 ..................................... Version (1) +| +| ddaf13bf1b02de39711de911e646c63e +| f089b6cee786a1b776086ae130331bba ......... ProRegTx Hash +| +| 0000 ..................................... Reason: 0 (Not specified) +| +| cb0dfe113c87f8e9cde2c5d18aae12fc +| 8d0617c42c34ca5c2f2f6ab4b1dae164 ......... Inputs hash +| +| Payload signature (BLS) +| 0adaef4bf1a904308f1b0efbdfaffc93 +| 864f9e047fd83415c831589180303711 +| 0f0d8adb312ab43ddd7f8086042d3f5b +| 09029a6a16c341c9d2a62789b495fef4 +| e068da711dac28106ff354db7249ae88 +| 05877d82ff7d1af00ae2d303dea5eb3b ......... BLS Signature (96 bytes) +{% endhighlight %} + +{% endautocrossref %} + +#### CbTx +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70211 of Dash Core as described by DIP4* + +The Coinbase (CbTx) special transaction adds information to the block’s coinbase +transaction that enables verification of the deterministic masternode list without +the full chain (e.g. from SPV clients). This allows light-clients to properly +verify InstantSend transactions and support additional deterministic masternode +list functionality in the future. + +The special transaction type used for CbTx Transactions is 5 and the extra +payload consists of the following data: + +| Bytes | Name | Data type | Description | +| ---------- | ----------- | -------- | -------- | +| 2 | version | uint_16 | CbTx version number. Currently set to 1. +| 4 | height | uint32_t | Height of the block +| 32 | merkleRootMNList | uint256 | Merkle root of the masternode list + +The following annotated hexdump shows a CbTx transaction. + + + +An itemized coinbase transaction: + +{% highlight text %} +0300 ....................................... Version (3) +0500 ....................................... Type (5 - Coinbase) + +01 ......................................... Number of inputs +| 00000000000000000000000000000000 +| 00000000000000000000000000000000 ......... Previous outpoint TXID +| ffffffff ................................. Previous outpoint index +| +| 05 ....................................... Bytes in coinbase: 5 +| | +| | 02 ..................................... Bytes in height +| | | 0608 ................................. Height: 2054 +| | +| | 0101 ................................... Arbitrary data +| ffffffff ................................. Sequence + +02 ......................................... Output count +| Transaction Output 1 +| | 00902f5009000000 ....................... Duffs (400 DASH) +| | 2102c633b7022b4dab169c8a8459d83b7e0 +| | 6e0f8da0f89bf7e788ec98c8038107989ac .... Script +| +| Transaction Output 2 +| | 00e40b5402000000 ....................... Duffs (100 DASH) +| | 1976a914ebafa153cffbb5b37c30fb93 +| | 886f2fe0f1d549ed88ac ................... P2PKH script + +00000000 ................................... Locktime + +26 ......................................... Extra payload size (38) + +Coinbase Transaction Payload +| 0100 ..................................... Version (1) +| +| 06080000 ................................. Block height: 2054 +| +| 69010fa8b729b53c78a1e209946c82e2 +| 3159439022ea4055aa60d4393fffba46 ......... MN List merkle root +{% endhighlight %} + +{% endautocrossref %} + +#### Quorum Commitment +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +Quorum Commitment + +{% endautocrossref %} + +#### SubTxRegister +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +Register Blockchain User + +{% endautocrossref %} + +#### SubTxTopup +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +Topup Blockchain User Credit + +{% endautocrossref %} + +#### SubTxResetKey +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +Change Blockchain User Public Key + +{% endautocrossref %} + +#### SubTxCloseAccount +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +Close Blockchain User Account + +{% endautocrossref %} + ### CompactSize Unsigned Integers {% include helpers/subhead-links.md %} From 6a8da4d8ad7cc440ffd79c9a12b71be72dd8fa52 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 30 Oct 2018 14:29:18 -0400 Subject: [PATCH 023/117] Update 0.12.4 references to 0.13.0 --- .../rpcs/rpcs/decoderawtransaction.md | 2 +- .../devdoc/dash-core/rpcs/rpcs/dumpwallet.md | 6 ++-- .../devdoc/dash-core/rpcs/rpcs/getbalance.md | 2 +- .../dash-core/rpcs/rpcs/getgovernanceinfo.md | 2 +- .../dash-core/rpcs/rpcs/getrawtransaction.md | 2 +- .../rpcs/rpcs/getreceivedbyaddress.md | 2 +- .../dash-core/rpcs/rpcs/listaccounts.md | 2 +- .../rpcs/rpcs/listreceivedbyaccount.md | 2 +- .../rpcs/rpcs/listreceivedbyaddress.md | 2 +- .../devdoc/dash-core/rpcs/rpcs/masternode.md | 8 ++--- .../rpcs/rpcs/setprivatesendamount.md | 2 +- .../rpcs/rpcs/setprivatesendrounds.md | 2 +- _includes/devdoc/ref_p2p_networking.md | 2 +- _includes/helpers/vars.md | 6 ++-- _includes/layout/base/rpc-table.html | 32 +++++++++---------- scripts/create_empty_rpc_md.sh | 2 +- 16 files changed, 38 insertions(+), 38 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md index 3a387c8f..d93094cb 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md @@ -34,7 +34,7 @@ The `decoderawtransaction` RPC {{summary_decodeRawTransaction}} {{INCLUDE_DECODE_RAW_TRANSACTION}} {% enditemplate %} -*Example from Dash Core 0.12.4* +*Example from Dash Core 0.13.0* Decode a signed one-input, two-output transaction: diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md b/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md index fe2a3be7..8e4161c2 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md @@ -72,7 +72,7 @@ The `dumpwallet` RPC {{summary_dumpWallet}} d: "Warning to not share the file due to it containing the private keys" {% enditemplate %} -*Example from Dash Core 0.12.4* +*Example from Dash Core 0.13.0* Create a wallet dump and then print its first 10 lines. @@ -85,7 +85,7 @@ Results: {% highlight json %} { - "dashcoreversion": "v0.12.4.0", + "dashcoreversion": "v0.13.0.0", "lastblockheight": 250186, "lastblockhash": "0000000000a82fb1890de5da4740d0671910a436fe6fc4503a3e553adef073b4", "lastblocktime": "2018-10-23T12:50:44Z", @@ -98,7 +98,7 @@ Results: Results (the first 10 lines of the file): {% highlight bash %} -# Wallet dump created by Dash Core v0.12.4.0 +# Wallet dump created by Dash Core v0.13.0.0 # * Created on 2018-10-23T12:55:38Z # * Best block at time of backup was 250186 (0000000000a82fb1890de5da4740d0671910a436fe6fc4503a3e553adef073b4), # mined on 2018-10-23T12:50:44Z diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md b/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md index 45d19f56..501ae130 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md @@ -55,7 +55,7 @@ The `getbalance` RPC {{summary_getBalance}} {% enditemplate %} -*Examples from Dash Core 0.12.4* +*Examples from Dash Core 0.13.0* Get the balance for the main ("") account, including transactions with at least five confirmations and those spent to watch-only addresses in diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md index 7cd5ddc2..fb92d8d9 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md @@ -62,7 +62,7 @@ The `getgovernanceinfo` RPC {{summary_getGovernanceInfo}} {% enditemplate %} -*Example from Dash Core 0.12.4.0* +*Example from Dash Core 0.13.0.0* {% highlight bash %} dash-cli -testnet getgovernanceinfo diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md index 2e6df596..dcae467d 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md @@ -102,7 +102,7 @@ deprecated. {% enditemplate %} -*Examples from Dash Core 0.12.4* +*Examples from Dash Core 0.13.0* A transaction in serialized transaction format: diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md index e15e9c76..502c2267 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md @@ -51,7 +51,7 @@ The `getreceivedbyaddress` RPC {{summary_getReceivedByAddress}} {% enditemplate %} -*Example from Dash Core 0.12.4* +*Example from Dash Core 0.13.0* Get the dash received for a particular address, only counting transactions with six or more confirmations (ignore InstantSend locked transactions): diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md b/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md index 8c292c07..4cc6ffce 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md @@ -53,7 +53,7 @@ Core. Use the RPCs listed in the See Also subsection below instead. {% enditemplate %} -*Example from Dash Core 0.12.4* +*Example from Dash Core 0.13.0* Display account balances with one confirmation and watch-only addresses included. Add the balance of InstantSend locked transactions also. diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md index 360cc0d4..3b0edb90 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md @@ -88,7 +88,7 @@ Core. Use the RPCs listed in the See Also subsection below instead. {% enditemplate %} -*Example from Dash Core 0.12.4* +*Example from Dash Core 0.13.0* Get the balances for all non-empty accounts, including transactions which have been confirmed at least six times and InstantSend locked transactions: diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md index 79635549..fc67242e 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md @@ -100,7 +100,7 @@ The `listreceivedbyaddress` RPC {{summary_listReceivedByAddress}} {% enditemplate %} -*Example from Dash Core 0.12.4* +*Example from Dash Core 0.13.0* List addresses with balances confirmed by at least six blocks, including watch-only addresses. Also include the balance from InstantSend locked transactions: diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md index ac0c5b0d..83cb1f06 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md @@ -56,7 +56,7 @@ The `masternode check` RPC forces a check of all masternodes and rem {% enditemplate %} -*Example from Dash Core 0.12.4* +*Example from Dash Core 0.13.0* {% highlight bash %} dash-cli -testnet masternode check @@ -307,7 +307,7 @@ The `masternode genkey` RPC generates a new masternodeprivkey. - n: "Compressed" t: "bool" p: "Optional
(0 or 1)" - d: "*Added in Dash Core 0.12.4*

If set to `true`, generates a compressed private key (default: false)" + d: "*Added in Dash Core 0.13.0*

If set to `true`, generates a compressed private key (default: false)" {% enditemplate %} @@ -321,7 +321,7 @@ The `masternode genkey` RPC generates a new masternodeprivkey. {% enditemplate %} -*Example from Dash Core 0.12.4* +*Example from Dash Core 0.13.0* {% highlight bash %} dash-cli -testnet masternode genkey @@ -332,7 +332,7 @@ Result: 92Mn5DQpnBHjFPbS3ZXcX3EdhuET18u3eXTTtVsdDzdcAMaXqtG {% endhighlight %} -*Example from Dash Core 0.12.4 (compressed key)* +*Example from Dash Core 0.13.0 (compressed key)* {% highlight bash %} dash-cli -testnet masternode genkey true diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendamount.md b/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendamount.md index b5280eca..49c4e318 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendamount.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendamount.md @@ -27,7 +27,7 @@ The `setprivatesendamount` RPC {{summary_setPrivateSendAmount}} *Result---`null` on success* -*Example from Dash Core 0.12.4* +*Example from Dash Core 0.13.0* {% highlight bash %} dash-cli -testnet setprivatesendamount 2000 diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendrounds.md b/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendrounds.md index f40852ad..7e18bd8b 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendrounds.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendrounds.md @@ -27,7 +27,7 @@ The `setprivatesendrounds` RPC {{summary_setPrivateSendRounds}} *Result---`null` on success* -*Example from Dash Core 0.12.4* +*Example from Dash Core 0.13.0* {% highlight bash %} dash-cli -testnet setprivatesendrounds 4 diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 39f1e5bf..3ecb4cdf 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -66,7 +66,7 @@ with the most recent versions listed first. (If you know of a protocol version that implemented a major change but which is not listed here, please [open an issue][docs issue].) -As of Dash Core 0.12.3.0, the most recent protocol version is 70210. +As of Dash Core 0.13.0.0, the most recent protocol version is 70211. | Version | Initial Release | Major Changes |---------|------------------------------------|-------------- diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index f36af4e5..60624cbf 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -160,7 +160,7 @@ NOT IN DASH - n: "{{DEPTH}} →
`type`" t: "number (int)" p: "Required
(exactly 1)" - d: "*Added in Dash Core 0.12.4.0*

The transaction format type" + d: "*Added in Dash Core 0.13.0.0*

The transaction format type" - n: "{{DEPTH}} →
`locktime`" t: "number (int)" @@ -303,12 +303,12 @@ NOT IN DASH - n: "{{DEPTH}} →
`extraPayloadSize`" t: "number (int)" p: "Optional
(0 or 1)" - d: "*Added in Dash Core 0.12.4.0*

Size of the DIP2 extra payload. Only present if it's a DIP2 special transaction" + d: "*Added in Dash Core 0.13.0.0*

Size of the DIP2 extra payload. Only present if it's a DIP2 special transaction" - n: "{{DEPTH}} →
`extraPayload`" t: "string (hex)" p: "Optional
(0 or 1)" - d: "*Added in Dash Core 0.12.4.0*

Hex encoded DIP2 extra payload data. Only present if it's a DIP2 special transaction" + d: "*Added in Dash Core 0.13.0.0*

Hex encoded DIP2 extra payload data. Only present if it's a DIP2 special transaction" {% endcapture %} {% assign INCLUDE_WALLET_UNLOCKED="If the wallet has been encrypted either through the GUI or with the `encryptwallet` RPC, it must first be unlocked with the `walletpassphrase` RPC" %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 2c620973..04497fe7 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -227,7 +227,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash GetGovernanceInfo Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Dash @@ -251,7 +251,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash Masternode Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Dash @@ -323,7 +323,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Mining GetBlockTemplate Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Mining @@ -431,7 +431,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Rawtransactions DecodeRawTransaction Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Rawtransactions @@ -449,7 +449,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Rawtransactions GetRawTransaction Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Rawtransactions @@ -575,7 +575,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet DumpWallet Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Wallet @@ -605,7 +605,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet GetBalance Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Wallet @@ -623,13 +623,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet GetReceivedByAccount Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Wallet GetReceivedByAddress Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Wallet @@ -713,7 +713,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ListAccounts Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Wallet @@ -737,13 +737,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ListReceivedByAccount Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Wallet ListReceivedByAddress Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Wallet @@ -785,13 +785,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet SendFrom Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Wallet SendMany Y - Updated in 0.12.4.0 + Updated in 0.13.0.0 Wallet @@ -809,13 +809,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet SetPrivateSendAmount Y - Added in 0.12.4.0 + Added in 0.13.0.0 Wallet SetPrivateSendRounds Y - Added in 0.12.4.0 + Added in 0.13.0.0 Wallet diff --git a/scripts/create_empty_rpc_md.sh b/scripts/create_empty_rpc_md.sh index 7cab519b..483596e1 100755 --- a/scripts/create_empty_rpc_md.sh +++ b/scripts/create_empty_rpc_md.sh @@ -34,7 +34,7 @@ if [ "$PARAMCOUNT" == 1 ]; then echo "*Result---RESULT DESCRIPTION*" >> $FILENAME echo "" >> $FILENAME - echo "*Example from Dash Core 0.12.3*" >> $FILENAME + echo "*Example from Dash Core 0.13.0*" >> $FILENAME echo "" >> $FILENAME # Example From 9fa37ab7dfba0afb6c37ce2fec6bd1c86f537c2d Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 30 Oct 2018 14:41:48 -0400 Subject: [PATCH 024/117] Content - RPC - Add bls Used to create operator keys for DIP3 Pro*tx special txs --- _autocrossref.yaml | 2 + _config.yml | 1 + .../devdoc/dash-core/rpcs/quick-reference.md | 14 ++++ _includes/devdoc/dash-core/rpcs/rpcs/bls.md | 64 +++++++++++++++++++ _includes/helpers/summaries.md | 1 + _includes/layout/base/rpc-table.html | 6 ++ _includes/references.md | 1 + en/developer-reference.md | 2 + 8 files changed, 91 insertions(+) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/bls.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 9ad61b3c..745560d9 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -260,6 +260,8 @@ DIP1: '`addwitnessaddress` RPC': rpc addwitnessaddress '`backupwallet`': rpc backupwallet '`backupwallet` RPC': rpc backupwallet +'`bls`': rpc bls +'`bls` RPC': rpc bls '`bumpfee`': rpc bumpfee '`bumpfee` RPC': rpc bumpfee '`clearbanned`': rpc clearbanned diff --git a/_config.yml b/_config.yml index 5bc0b793..db5a57ec 100644 --- a/_config.yml +++ b/_config.yml @@ -187,6 +187,7 @@ devsearches: - 'AddNode': "/en/developer-reference#addnode" - 'AddWitnessAddress': "/en/developer-reference#addwitnessaddress" - 'BackupWallet': "/en/developer-reference#backupwallet" + - 'BLS': "/en/developer-reference#bls" - 'BumpFee': "/en/developer-reference#bumpfee" - 'ClearBanned': "/en/developer-reference#clearbanned" - 'CreateMultisig': "/en/developer-reference#createmultisig" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index bbb309dd..d9224f18 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -19,6 +19,10 @@ Use v0.n.n in abbreviation title to prevent autocrossrefing. {% assign DASH_NOT_IMPLEMENTED='**Not Implemented**' %} + +{% assign DASH_NEW0_13_0='**New in Dash Core 0.13.0**' %} +{% assign DASH_UPDATED0_13_0='**Updated in Dash Core 0.13.0**' %} + {% assign DASH_NEW0_12_3='**New in Dash Core 0.12.3**' %} {% assign DASH_UPDATED0_12_3='**Updated in Dash Core 0.12.3**' %} @@ -157,6 +161,16 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% endautocrossref %} +#### Evolution RPCs +{:.no_toc} + + +{% autocrossref %} + +* [BLS][rpc bls]: {{summary_bls}} {{DASH_NEW0_13_0}} + +{% endautocrossref %} + #### Generating RPCs {:.no_toc} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/bls.md b/_includes/devdoc/dash-core/rpcs/rpcs/bls.md new file mode 100644 index 00000000..9729619d --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/bls.md @@ -0,0 +1,64 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/bls.md" %} + + + +##### BLS +{% include helpers/subhead-links.md %} + +{% assign summary_bLS="provides a set of commands to execute BLS-related actions." %} + +{% autocrossref %} + +The `bls` RPC {{summary_bLS}} + +{% endautocrossref %} + +###### BLS Generate + + +{% autocrossref %} + +The `bls generate` RPC creates a new BLS secret/public key pair. + +*Parameters: none* + +*Result---a secret/public key pair* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object" + p: "Required
(exactly 1)" + d: "BLS key pair" + +- n: "→
`secret`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "A BLS secret key" + +- n: "→
`public`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "A BLS public key" +{% enditemplate %} + +*Example from Dash Core 0.13.0* + +{% highlight bash %} +dash-cli -testnet bls generate +{% endhighlight %} + +Result: +{% highlight bash %} +{ + "secret": "52f35cd3d977a505485f2474e7e71ef3f60f859603d72ad6b0fa7f7bd163e144", + "public": "885d01d746c3e4d2093b0975de2d8c1f3e5a2c3e8fdaaed929f86fc9fbb278a095248163c101a2456650b415776b7990" +} +{% endhighlight %} + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index a26c2867..9b4214f4 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -4,6 +4,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_addMultiSigAddress="adds a P2SH multisig address to the wallet." %} {% assign summary_addNode="attempts to add or remove a node from the addnode list, or to try a connection to a node once." %} {% assign summary_addWitnessAddress="adds a witness address for a script (with pubkey or redeem script known)." %} +{% assign summary_bLS="provides a set of commands to execute BLS-related actions." %} {% assign summary_backupWallet="safely copies `wallet.dat` to the specified file, which can be a directory or a path with filename." %} {% assign summary_bumpFee="replaces an unconfirmed wallet transaction that signaled RBF with a new transaction that pays a higher fee." %} {% assign summary_clearBanned="clears list of banned nodes." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 04497fe7..91681e56 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -295,6 +295,12 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y + + Evolution + BLS + Y + Added in 0.13.0 + Generating Generate diff --git a/_includes/references.md b/_includes/references.md index f3204433..4007c41f 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -65,6 +65,7 @@ http://opensource.org/licenses/MIT. [rpc addnode]: /en/developer-reference#addnode [rpc addwitnessaddress]: /en/developer-reference#addwitnessaddress [rpc backupwallet]: /en/developer-reference#backupwallet +[rpc bls]: /en/developer-reference#bls [rpc bumpfee]: /en/developer-reference#bumpfee [rpc clearbanned]: /en/developer-reference#clearbanned [rpc createmultisig]: /en/developer-reference#createmultisig diff --git a/en/developer-reference.md b/en/developer-reference.md index a52124f3..49c88ce2 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -80,6 +80,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/backupwallet.md %} +{% include devdoc/dash-core/rpcs/rpcs/bls.md %} + {% include devdoc/dash-core/rpcs/rpcs/bumpfee.md %} {% include devdoc/dash-core/rpcs/rpcs/clearbanned.md %} From 6eb7a16bbd88b3a262b0e2d9befee4f22ff6f149 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 6 Nov 2018 14:50:57 -0500 Subject: [PATCH 025/117] Content - Spork - Add 2 new sporks --- _includes/devdoc/ref_p2p_networking.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 3ecb4cdf..8c48cf61 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1631,6 +1631,8 @@ Sporks (per [`src/spork.h`][spork.h]) | 10009 | 10 | `MASTERNODE_PAY_UPDATED_NODES` | Only current protocol version masternode's will be paid (not older nodes) | 10011 | 12 | `RECONSIDER_BLOCKS` | Forces reindex of a specified number of blocks to recover from unintentional network forks | 10013 | 14 | `REQUIRE_SENTINEL_FLAG` | Only masternode's running sentinel will be paid +| 10014 | 15 | `DETERMINISTIC_MNS_ENABLED` | Deterministic masternode lists are enabled +| 10015 | 16 | `INSTANTSEND_AUTOLOCKS` | Automatic InstantSend for transactions with <=4 inputs (also eliminates the special InstantSend fee requirement for these transactions) | | | | | | | **Removed Sporks** | | _10012_ | _13_ | _`OLD_SUPERBLOCK_FLAG`_ | _Removed in Dash Core 0.12.3. No network function since block 614820_ From c4e728c59f0da966b7f9de1542278e0f00ec1b1b Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 6 Nov 2018 14:51:27 -0500 Subject: [PATCH 026/117] Content - RPC - Minor BLS changes --- _includes/devdoc/dash-core/rpcs/rpcs/bls.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/bls.md b/_includes/devdoc/dash-core/rpcs/rpcs/bls.md index 9729619d..502ef083 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/bls.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/bls.md @@ -13,6 +13,8 @@ http://opensource.org/licenses/MIT. {% autocrossref %} +*Added in Dash Core 0.13.0* + The `bls` RPC {{summary_bLS}} {% endautocrossref %} @@ -52,7 +54,7 @@ dash-cli -testnet bls generate {% endhighlight %} Result: -{% highlight bash %} +{% highlight json %} { "secret": "52f35cd3d977a505485f2474e7e71ef3f60f859603d72ad6b0fa7f7bd163e144", "public": "885d01d746c3e4d2093b0975de2d8c1f3e5a2c3e8fdaaed929f86fc9fbb278a095248163c101a2456650b415776b7990" From 3910f569782d49033a9e270b379ade25dc1ada90 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 6 Nov 2018 14:52:13 -0500 Subject: [PATCH 027/117] Content - P2P - Note messages that will be deprecated by DIP3 --- _includes/devdoc/ref_p2p_networking.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 8c48cf61..7aa2690d 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -2498,6 +2498,9 @@ and [Masternode Payment](developer-guide#masternode-payment) section {% autocrossref %} +![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated +following activation of DIP3 which implements deterministic masternode lists. + The `dseg` message requests either the entire masternode list or a specific entry. To request the list of all masternodes, use an empty txIn (TXID of all zeros and an index of 0xFFFFFFFF). To request information about a specific @@ -2544,6 +2547,9 @@ Masternode Unspent Outpoint {% autocrossref %} +![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated +following activation of DIP3 which implements deterministic masternode lists. + The `mnb` message is sent whenever a masternode comes online or a client is syncing. The masternode will send this message which describes the masternode entry and how to validate messages from it. @@ -2626,6 +2632,9 @@ Masternode Ping Message {% autocrossref %} +![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated +following activation of DIP3 which implements deterministic masternode lists. + The `mnget` message requests masternode payment sync. The response to an `mnget` message is `mnw` message inventories. Masternodes ignore this request if they are not fully synced. @@ -2662,6 +2671,9 @@ a8170000 ................................... Count: 6056 {% autocrossref %} +![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated +following activation of DIP3 which implements deterministic masternode lists. + The `mnp` message is sent by masternodes every few minutes to ping the network with a message that propagates across the whole network. Dash Core currently uses a minimum masternode ping time of 10 minutes. @@ -2822,6 +2834,9 @@ Masternode 2 Signature {% autocrossref %} +![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated +following activation of DIP3 which implements deterministic masternode lists. + The `mnw` message is used to pick the next winning masternode. When a new block is found on the network, a masternode quorum will be determined and those 10 selected masternodes will issue the masternode payment vote message. @@ -2870,6 +2885,9 @@ Masternode Signature {% autocrossref %} +![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated +following activation of DIP3 which implements deterministic masternode lists. + There is no message for `mnwb` (`inv` message only). The following annotated hexdump shows an `inv` message with a `mnwb` @@ -3141,7 +3159,6 @@ message header has been omitted.) {% endautocrossref %} - ### Deprecated Messages {% include helpers/subhead-links.md %} From 7aceb01cee47e6500a8b493a0ca2cea696767f2c Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 6 Nov 2018 16:40:11 -0500 Subject: [PATCH 028/117] Content - Add Crowdnode testnet faucet --- _includes/references.md | 1 + 1 file changed, 1 insertion(+) diff --git a/_includes/references.md b/_includes/references.md index 4007c41f..f8f7c89b 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -462,6 +462,7 @@ http://opensource.org/licenses/MIT. [Testnet Faucet - Dash.org]: https://test.faucet.dash.org/ [Testnet Faucet - Masternode.io]: http://test.faucet.masternode.io/ [Testnet Faucet - Dashninja.pl]: https://test.faucet.dashninja.pl/ +[Testnet Faucet - Crowdnode.io]: http://faucet.test.dash.crowdnode.io/ [Tor]: https://en.wikipedia.org/wiki/Tor_%28anonymity_network%29 [transifex]: https://www.transifex.com/projects/p/bitcoinorg/ [unix epoch time]: https://en.wikipedia.org/wiki/Unix_time From 04a254135592c548ee05abc9c4fff8beabc0f776 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 6 Nov 2018 17:21:45 -0500 Subject: [PATCH 029/117] V0.13.0 RPC protx (#91) * Content - RPC - Add basic protx details Example calls and subcommands only * Content - RPC - Add parameter info for register RPCs * Content - RPC - Add parameter info for list RPC * Content - Create reusable var for ProTx details * Content - RPC - Add parameter info for remaining protx subcommands info, update_service, update_registrar, revoke, diff * Content - RPC - Minor typo fixes --- _autocrossref.yaml | 6 + _config.yml | 1 + .../devdoc/dash-core/rpcs/quick-reference.md | 1 + _includes/devdoc/dash-core/rpcs/rpcs/protx.md | 752 ++++++++++++++++++ _includes/helpers/summaries.md | 1 + _includes/helpers/vars.md | 127 +++ _includes/layout/base/rpc-table.html | 6 + _includes/references.md | 5 + en/developer-reference.md | 2 + 9 files changed, 901 insertions(+) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/protx.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 745560d9..5cd39bcf 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -150,6 +150,10 @@ pki: '`pong` message': pong message '`pong` messages': pong message previous block header hash: +'ProRegTx': proregtx special tx +'ProUpRegTx': proupregtx special tx +'ProUpRevTx': prouprevtx special tx +'ProUpServTx': proupservtx special tx protocol buffer: protobuf protocol buffers: protobuf protocol version 106: section protocol versions @@ -462,6 +466,8 @@ DIP1: '`move` RPC': rpc move '`ping`': rpc ping '`ping` RPC': rpc ping +'`protx`': rpc protx +'`protx` RPC': rpc protx '`preciousblock`': rpc preciousblock '`preciousblock` RPC': rpc preciousblock '`prioritisetransaction`': rpc prioritisetransaction diff --git a/_config.yml b/_config.yml index db5a57ec..b4fab8d2 100644 --- a/_config.yml +++ b/_config.yml @@ -288,6 +288,7 @@ devsearches: - 'MnSync': "/en/developer-reference#mnsync" - 'Move': "/en/developer-reference#move" - 'Ping': "/en/developer-reference#ping-rpc" + - 'ProTx': "/en/developer-reference#protx" - 'PreciousBlock': "/en/developer-reference#preciousblock" - 'PrioritiseTransaction': "/en/developer-reference#prioritisetransaction" - 'PrivateSend': "/en/developer-reference#privatesend" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index d9224f18..3c55d81c 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -168,6 +168,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} * [BLS][rpc bls]: {{summary_bls}} {{DASH_NEW0_13_0}} +* [ProTx][rpc protx]: {{summary_proTx}} {{DASH_NEW0_13_0}} {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md new file mode 100644 index 00000000..400522cd --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md @@ -0,0 +1,752 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/protx.md" %} + + + +##### ProTx +{% include helpers/subhead-links.md %} + +{% assign summary_proTx="provides a set of commands to execute ProTx related actions." %} + +{% autocrossref %} + +*Added in Dash Core 0.13.0* + +The `protx` RPC {{summary_proTx}} + +{% endautocrossref %} + +###### ProTx Register + + +{% autocrossref %} + +The `protx register` RPC creates a ProRegTx referencing an existing collateral and and sends it to the network. + +*Parameter #1---collateral address* + +{% itemplate ntpd1 %} +- n: "`collateralHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The collateral transaction hash" +{% enditemplate %} + +*Parameter #2---collateral index* + +{% itemplate ntpd1 %} +- n: "`collateralIndex`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The collateral transaction output index" +{% enditemplate %} + +*Parameter #3---IP Address and port* + +{% itemplate ntpd1 %} +- n: "`ipAndPort`" + t: "string" + p: "Required
(exactly 1)" + d: "IP and port in the form 'IP:PORT'.
Must be unique on the network.
Can be set to '0', which will require a ProUpServTx afterwards." +{% enditemplate %} + +*Parameter #4---owner key address* + +{% itemplate ntpd1 %} +- n: "`ownerKeyAddr`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The owner key used for payee updates and proposal voting. The private key belonging to this address be known in your wallet. The address must be unused and must differ from the `collateralAddress`." +{% enditemplate %} + +*Parameter #5---operator public key* + +{% itemplate ntpd1 %} +- n: "`operatorPubKey`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: " The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode." +{% enditemplate %} + +*Parameter #6---voting key address* + +{% itemplate ntpd1 %} +- n: "`votingKeyAddr`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The voting key address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to '0' or an empty string, `ownerAddr` will be used." +{% enditemplate %} + +*Parameter #7---operator reward* + +{% itemplate ntpd1 %} +- n: "`operatorReward`" + t: "number" + p: "Required
(exactly 1)" + d: "The fraction in % to share with the operator. If non-zero, `ipAndPort` must be zero as well.
The value must be between '0.00' and '100.00'." +{% enditemplate %} + +*Parameter #8---payout address* + +{% itemplate ntpd1 %} +- n: "`payoutAddress`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The Dash address to use for masternode reward payments. Must match `collateralAddress`." +{% enditemplate %} + +*Result---provider registration transaction hash* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Provider registration transaction (ProRegTx) hash" +{% enditemplate %} + +*Example from Dash Core 0.13.0* + +{% highlight bash %} +dash-cli -testnet protx register\ + 8b2eab3413abb6e04d17d1defe2b71039ba6b6f72ea1e5dab29bb10e7b745948 1\ + 2.3.4.5:2345 yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6\ + 88d719278eef605d9c19037366910b59bc28d437de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8c22f4a914a6c5566\ + yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt +{% endhighlight %} + +Result: +{% highlight bash %} +61e6d780178d353940c4cb9b3073ac0c50792bbcf0b15c1750d2028b71e34929 +{% endhighlight %} + +{% endautocrossref %} + +###### ProTx Fund-Register + + +{% autocrossref %} + +The `protx fund_register` RPC creates and funds a ProRegTx with the 1,000 DASH necessary for a masternode and then sends it to the network. + +*Parameter #1---collateral address* + +{% itemplate ntpd1 %} +- n: "`collateralAddress`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The Dash address to send the collateral to (must be a P2PKH address)" +{% enditemplate %} + +*Parameter #2---IP Address and port* + +{% itemplate ntpd1 %} +- n: "`ipAndPort`" + t: "string" + p: "Required
(exactly 1)" + d: "IP and port in the form 'IP:PORT'.
Must be unique on the network.
Can be set to '0', which will require a ProUpServTx afterwards." +{% enditemplate %} + +*Parameter #3---owner key address* + +{% itemplate ntpd1 %} +- n: "`ownerKeyAddr`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The owner key used for payee updates and proposal voting. The private key belonging to this address be known in your wallet. The address must be unused and must differ from the `collateralAddress`." +{% enditemplate %} + +*Parameter #4---operator public key* + +{% itemplate ntpd1 %} +- n: "`operatorPubKey`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: " The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode." +{% enditemplate %} + +*Parameter #5---voting key address* + +{% itemplate ntpd1 %} +- n: "`votingKeyAddr`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The voting key address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to '0' or an empty string, `ownerAddr` will be used." +{% enditemplate %} + +*Parameter #6---operator reward* + +{% itemplate ntpd1 %} +- n: "`operatorReward`" + t: "number" + p: "Required
(exactly 1)" + d: "The fraction in % to share with the operator. If non-zero, `ipAndPort` must be zero as well.
The value must be between '0.00' and '100.00'." +{% enditemplate %} + +*Parameter #7---payout address* + +{% itemplate ntpd1 %} +- n: "`payoutAddress`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The Dash address to use for masternode reward payments. Must match `collateralAddress`." +{% enditemplate %} + +*Result---provider registration transaction hash* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Provider registration transaction (ProRegTx) hash" +{% enditemplate %} + +*Example from Dash Core 0.13.0* + +{% highlight bash %} +dash-cli -testnet protx fund_register yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7\ + 3.4.5.6:3456 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw\ + 0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51\ + yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw 5 yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7 +{% endhighlight %} + +Result: +{% highlight bash %} +ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd +{% endhighlight %} + +{% endautocrossref %} + +###### ProTx List + + +{% autocrossref %} + +The `protx list` RPC returns a list of provider transactions. + +Lists all ProTxs in your wallet or on-chain, depending on the given type. If +`type` is not specified, it defaults to `wallet`. All types have the optional +argument `detailed` which if set to `true` will result in a detailed list being +returned. If set to `false`, only the hashes of the ProTx will be returned. + +*Parameter #1---type* + +{% itemplate ntpd1 %} +- n: "`type`" + t: "string" + p: "Optional
(0 or 1)" + d: "The type of ProTxs to list:
`registered` - all ProTxs registered at height
`valid` - all active/valid ProTxs at height
`wallet` - all ProTxs found in the current wallet

Height defaults to current chain-tip if one is not provided" +{% enditemplate %} + +**List Type - `registered` or `valid`** + +*Parameter #2---height* + +{% itemplate ntpd1 %} +- n: "`height`" + t: "bool" + p: "Optional
(0 or 1)" + d: "List ProTxs from this height." +{% enditemplate %} + +*Parameter #3---detailed* + +{% itemplate ntpd1 %} +- n: "`detailed`" + t: "bool" + p: "Optional
(0 or 1)" + d: "If set to `false` (default), only ProTx hashes are returned. If set to `true`, a detailed list of ProTx details is returned." +{% enditemplate %} + + +**List Type - `wallet`** + +*Parameter #2---detailed* + +{% itemplate ntpd1 %} +- n: "`detailed`" + t: "bool" + p: "Optional
(0 or 1)" + d: "If set to `false` (default), only ProTx hashes are returned. If set to `true`, a detailed list of ProTx details is returned." +{% enditemplate %} + + +*Result (if `detailed` was `false`)---provider registration transaction hash* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string (hex): array" + p: "Required
(exactly 1)" + d: "Array of provider transaction (ProTx) hashes" +{% enditemplate %} + +*Result (if `detailed` was `true`)---JSON provider registration transaction details* + +{% assign DEPTH="→" %} +{% include helpers/vars.md %} + +{% itemplate ntpd1 %} +- n: "`result`" + t: "array" + p: "Required
(exactly 1)" + d: "An array of objects each containing a provider transaction, or JSON `null` if an error occurred" + + {{INCLUDE_PROTX}} + +{% enditemplate %} + +*Example from Dash Core 0.13.0* + +{% highlight bash %} +dash-cli -testnet protx list +{% endhighlight %} + +Result: +{% highlight json %} +[ + "2b4a07a9b04dc42a0c19b85edb60954a27acaadfe3ee21d0171385778f34e1c2", + "61e6d780178d353940c4cb9b3073ac0c50792bbcf0b15c1750d2028b71e34929", + "ca193751f3cbed2aa4f1b33b0acc48c7ed8b9a3679858d69cf23157a4f545176", + "ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd" +] +{% endhighlight %} + + +List of ProTxs which are active/valid at the given chain height. + +{% highlight bash %} +dash-cli -testnet protx list valid 700 +{% endhighlight %} + +Result: +{% highlight json %} +[ + "2b4a07a9b04dc42a0c19b85edb60954a27acaadfe3ee21d0171385778f34e1c2" +] +{% endhighlight %} + +Detailed list of ProTxs which are active/valid at the given chain height. + +{% highlight bash %} +dash-cli -testnet protx list valid 700 true +{% endhighlight %} + +Result: +{% highlight json %} +[ + { + "proTxHash": "2b4a07a9b04dc42a0c19b85edb60954a27acaadfe3ee21d0171385778f34e1c2", + "collateralHash": "8d23d08ee6e2e0577550c90afde9bc63745f734605724ba9908e0220c48dec04", + "collateralIndex": 1, + "operatorReward": 5, + "state": { + "registeredHeight": 683, + "lastPaidHeight": 700, + "PoSePenalty": 0, + "PoSeRevivedHeight": -1, + "PoSeBanHeight": -1, + "revocationReason": 0, + "keyIDOwner": "29705bab955f252f876cbe47958b20feaa2b3e99", + "pubKeyOperator": "0bfd3d519f16de1669e977c316bd53fc902f83a75b6008dff3a7037ab4d3edaa39eadb13f5d6d1f192673f9ab86f17a2", + "keyIDVoting": "29705bab955f252f876cbe47958b20feaa2b3e99", + "addr": "1.2.3.4:1234", + "payoutAddress": "ybeK49S8ineDqNV698GZdMpdiHaYsZUJ2g" + }, + "confirmations": -1, + "wallet": { + "hasOwnerKey": true, + "hasOperatorKey": false, + "hasVotingKey": true, + "ownsCollateral": true, + "ownsPayeeScript": true, + "ownsOperatorRewardScript": false + } + } +] +{% endhighlight %} + +{% endautocrossref %} + +###### ProTx Info + + +{% autocrossref %} + +The `protx info` RPC returns detailed information about a deterministic masternode. + +{% assign DEPTH="→" %} +{% include helpers/vars.md %} + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object" + p: "Required
(exactly 1)" + d: "An JSON object containing a provider transaction, or JSON `null` if an error occurred" + + {{INCLUDE_PROTX}} +{% enditemplate %} + +*Example from Dash Core 0.13.0* + +{% highlight bash %} +dash-cli -testnet protx info\ + 2b4a07a9b04dc42a0c19b85edb60954a27acaadfe3ee21d0171385778f34e1c2 +{% endhighlight %} + +Result: +{% highlight json %} +{ + "proTxHash": "2b4a07a9b04dc42a0c19b85edb60954a27acaadfe3ee21d0171385778f34e1c2", + "collateralHash": "8d23d08ee6e2e0577550c90afde9bc63745f734605724ba9908e0220c48dec04", + "collateralIndex": 1, + "operatorReward": 5, + "state": { + "registeredHeight": 683, + "lastPaidHeight": 785, + "PoSePenalty": 0, + "PoSeRevivedHeight": -1, + "PoSeBanHeight": -1, + "revocationReason": 0, + "keyIDOwner": "29705bab955f252f876cbe47958b20feaa2b3e99", + "pubKeyOperator": "0bfd3d519f16de1669e977c316bd53fc902f83a75b6008dff3a7037ab4d3edaa39eadb13f5d6d1f192673f9ab86f17a2", + "keyIDVoting": "29705bab955f252f876cbe47958b20feaa2b3e99", + "addr": "1.2.3.4:1234", + "payoutAddress": "ybeK49S8ineDqNV698GZdMpdiHaYsZUJ2g" + }, + "confirmations": 192, + "wallet": { + "hasOwnerKey": true, + "hasOperatorKey": false, + "hasVotingKey": true, + "ownsCollateral": true, + "ownsPayeeScript": true, + "ownsOperatorRewardScript": false + } +} +{% endhighlight %} + +{% endautocrossref %} + +###### ProTx Update Service + + +{% autocrossref %} + +The `protx update_service` RPC creates and sends a ProUpServTx to the network. + +*Parameter #1---initial provider registration transaction hash* + +{% itemplate ntpd1 %} +- n: "`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the provider transaction as hex in RPC byte order" +{% enditemplate %} + +*Parameter #2---IP Address and port* + +{% itemplate ntpd1 %} +- n: "`ipAndPort`" + t: "string" + p: "Required
(exactly 1)" + d: "IP and port in the form 'IP:PORT'.
Must be unique on the network." +{% enditemplate %} + +*Parameter #3---operator public key* + +{% itemplate ntpd1 %} +- n: "`operatorPubKey`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: " The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode." +{% enditemplate %} + +*Parameter #4---operator payout address* + +{% itemplate ntpd1 %} +- n: "`operatorPayoutAddress`" + t: "string (hex)" + p: "Optional
(0 or 1)" + d: "The Dash address used for operator reward payments. Only allowed when the ProRegTx had a non-zero `operatorReward` value." +{% enditemplate %} + +*Result---provider update service transaction hash* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Provider update service transaction (ProUpServTx) hash" +{% enditemplate %} + +*Example from Dash Core 0.13.0* + +{% highlight bash %} +dash-cli -testnet protx update_service\ + ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd\ + "4.3.2.1:4321"\ + 4da7e1ea30fb9e55c73ad23df0b9d3d34342acb24facf4b19420e1a26ae272d1 +{% endhighlight %} + +Result: +{% highlight bash %} +5b6cfa1bdd3c8b7e0b9550b9c4e809381f81a410bc7f241d3879dd736fd51270 +{% endhighlight %} + +{% endautocrossref %} + +###### ProTx Update Registrar + + +{% autocrossref %} + +The `protx update_registrar` RPC creates and sends a ProUpRegTx to the network. + +*Parameter #1---initial provider registration transaction hash* + +{% itemplate ntpd1 %} +- n: "`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the provider transaction as hex in RPC byte order" +{% enditemplate %} + +*Parameter #2---operator public key* + +{% itemplate ntpd1 %} +- n: "`operatorPubKey`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: " The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode." +{% enditemplate %} + +*Parameter #3---voting key address* + +{% itemplate ntpd1 %} +- n: "`votingKeyAddr`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The voting key address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to '0' or an empty string, the last on-chain voting key of the masternode will be used." +{% enditemplate %} + +*Parameter #4---operator payout address* + +{% itemplate ntpd1 %} +- n: "`operatorPayoutAddress`" + t: "string (hex)" + p: "Optional
(0 or 1)" + d: "The Dash address to use for masternode reward payments. Must match `collateralAddress` of initial ProRegTx. If set to '0' or an empty string, the last on-chain payout address of the masternode will be used." +{% enditemplate %} + +*Result---provider update registrar transaction hash* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Provider update registrar transaction (ProUpRegTx) hash" +{% enditemplate %} + +*Example from Dash Core 0.13.0* + +{% highlight bash %} +dash-cli -testnet protx update_registrar\ + "ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd"\ + "0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51"\ + "yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw" "yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7" +{% endhighlight %} + +Result: +{% highlight bash %} +702390ef06b10c174841ad7b863df23c166c27815e3be2438e2fee6f87882b91 +{% endhighlight %} + +{% endautocrossref %} + +###### ProTx Revoke + + +{% autocrossref %} + +The `protx revoke` RPC creates and sends a ProUpRevTx to the network. + +*Parameter #1---initial provider registration transaction hash* + +{% itemplate ntpd1 %} +- n: "`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the provider transaction as hex in RPC byte order" +{% enditemplate %} + +*Parameter #2---operator private key* + +{% itemplate ntpd1 %} +- n: "`operatorPubKey`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: " The operator private key belonging to the registered operator public key." +{% enditemplate %} + +*Parameter #3---reason* + +{% itemplate ntpd1 %} +- n: "`reason`" + t: "number" + p: "Required
(exactly 1)" + d: "The reason for revocation." +{% enditemplate %} + +*Result---provider update revoke transaction hash* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Provider update revoke transaction (ProUpRevTx) hash" +{% enditemplate %} + +*Example from Dash Core 0.13.0* + +{% highlight bash %} +dash-cli -testnet protx revoke\ + "ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd"\ + "4da7e1ea30fb9e55c73ad23df0b9d3d34342acb24facf4b19420e1a26ae272d1" +{% endhighlight %} + +Result: +{% highlight bash %} +2aad36dd2ab254bee06b0b5dad51e7603691b72058d5806fd94e1d2d19a7c209 +{% endhighlight %} + +{% endautocrossref %} + +###### ProTx Diff + + +{% autocrossref %} + +The `protx diff` RPC calculates a diff and a proof between two masternode list. + +*Parameter #1---start block height* + +{% itemplate ntpd1 %} +- n: "`baseBlock`" + t: "number (int)" + p: "Required
(Exactly 1)" + d: "" +{% enditemplate %} + +*Parameter #2---end block height* + +{% itemplate ntpd1 %} +- n: "`block`" + t: "bool" + p: "Required
(Exactly 1)" + d: "" +{% enditemplate %} + +*Result---JSON provider registration transaction details* + +{% assign DEPTH="→" %} +{% include helpers/vars.md %} + +{% itemplate ntpd1 %} +- n: "`result`" + t: "array" + p: "Required
(exactly 1)" + d: "An array of objects each containing a provider transaction, or JSON `null` if an error occurred" + +- n: "→
`baseBlockHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the base block as hex in RPC byte order" + +- n: "→
`blockHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the ending block as hex in RPC byte order" + +- n: "→
`cbTxMerkleTree`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The coinbase transaction merkle tree" + +- n: "→
`cbTx`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The coinbase transaction" + +- n: "→
`deletedMNs`" + t: "array" + p: "Required
(exactly 1)" + d: "An array of deleted masternode hashes" + +- n: "→
`mnlist`" + t: "array" + p: "Required
(exactly 1)" + d: "An array of masternode details" + +- n: "→ →
`proRegTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the initial provider registration transaction as hex in RPC byte order" + +- n: "→ →
`pubKeyOperator`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The operator public key" + +- n: "→ →
`keyIDVoting`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The voting key" + +- n: "→ →
`isValid`" + t: "bool" + p: "Required
(exactly 1)" + d: "Set to `true` if masternode is valid" + +- n: "→
`merkleRootMNList`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Merkle root of the masternode list" +{% enditemplate %} + +*Example from Dash Core 0.13.0* + +{% highlight bash %} +dash-cli -testnet protx diff 600 700 +{% endhighlight %} + +Result: +{% highlight json %} +{ + "baseBlockHash": "0000a691fd23e6e51368b9204ae9ae67fecdda2fd51ab29fde964e335c84f962", + "blockHash": "0000b8291620f592a16eea5bbb937c992217d3ff676aa08a5c4e8d4c1d353c61", + "cbTxMerkleTree": "0100000001351a1d8f0bb20542ce1a83729cdf0048e2deb777e641f7db89b94b0c76544e980101", + "cbTx": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff0502bc020101ffffffff0100743ba40b000000232103ad831efe17ae73c016883085313aaa80365218cc029152edc2886c162048bd0bac00000000260100bc02000043ef07f248e6d6beb10c203a17f434201edba8b85d46699728b7a8e048c339fc", + "deletedMNs": [ + ], + "mnList": [ + { + "proRegTxHash": "2b4a07a9b04dc42a0c19b85edb60954a27acaadfe3ee21d0171385778f34e1c2", + "service": "1.2.3.4:1234", + "pubKeyOperator": "0bfd3d519f16de1669e977c316bd53fc902f83a75b6008dff3a7037ab4d3edaa39eadb13f5d6d1f192673f9ab86f17a2", + "keyIDVoting": "29705bab955f252f876cbe47958b20feaa2b3e99", + "isValid": true + } + ], + "merkleRootMNList": "fc39c348e0a8b7289769465db8a8db1e2034f4173a200cb1bed6e648f207ef43" +} +{% endhighlight %} + +{% endautocrossref %} + +{% autocrossref %} + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index 9b4214f4..08045563 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -109,6 +109,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_preciousBlock="treats a block as if it were received before others with the same work." %} {% assign summary_prioritiseTransaction="adds virtual priority or fee to a transaction, allowing it to be accepted into blocks mined by this node (or miners which use this node) with a lower priority or fee. (It can also remove virtual priority or fee, requiring the transaction have a higher priority or fee to be accepted into a locally-mined block.)" %} {% assign summary_privateSend="controls the mixing process." %} +{% assign summary_proTx="provides a set of commands to execute ProTx related actions." %} {% assign summary_pruneBlockChain="prunes the blockchain up to a specified height or timestamp." %} {% assign summary_removePrunedFunds="deletes the specified transaction from the wallet. Meant for use with pruned wallets and as a companion to importprunedfunds." %} {% assign summary_restGetBlock-noTxDetails="gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. The JSON object includes TXIDs for transactions within the block rather than the complete transactions [GET block][rest get block] returns." %} diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index 60624cbf..1a81ad22 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -438,6 +438,133 @@ NOT IN DASH {% enditemplate %} {% endcapture %} +{% capture INCLUDE_PROTX %} +- n: "{{DEPTH}}
Provider Transaction" + t: "object/null" + p: "Required
(exactly 1)" + d: "An object containing a provider transaction" + +- n: "{{DEPTH}} →
`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the provider transaction as hex in RPC byte order" + +- n: "{{DEPTH}} →
`collateralHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the collateral transaction as hex in RPC byte order" + +- n: "{{DEPTH}} →
`collateralIndex`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The collateral index" + +- n: "{{DEPTH}} →
`operatorReward`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The operator reward %" + +- n: "{{DEPTH}} →
`state`" + t: "object/null" + p: "Required
(exactly 1)" + d: "An object containing a provider transaction state" + +- n: "{{DEPTH}} → →
`registeredHeight`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The height where the masternode was registered" + +- n: "{{DEPTH}} → →
`lastPaidHeight`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The height where the masternode was last paid" + +- n: "{{DEPTH}} → →
`PoSePenalty`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The masternode's proof of service penalty" + +- n: "{{DEPTH}} → →
`PoSeRevivedHeight`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The height where the masternode recovered from a proof of service ban" + +- n: "{{DEPTH}} → →
`PoSeBanHeight`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The height where the masternode was banned for proof of service violations" + +- n: "{{DEPTH}} → →
`revocationReason`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The reason for a ProUpRegTx revocation" + +- n: "{{DEPTH}} → →
`keyIDOwner`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The owner key" + +- n: "{{DEPTH}} → →
`pubKeyOperator`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The operator public key" + +- n: "{{DEPTH}} → →
`keyIDVoting`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The voting key" + +- n: "{{DEPTH}} → →
`addr`" + t: "string" + p: "Required
(exactly 1)" + d: "The masternode's IP:Port" + +- n: "{{DEPTH}} → →
`payoutAddress`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The payout address" + +- n: "{{DEPTH}} →
`confirmations`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The number of confirmations this ProTx has" + +- n: "{{DEPTH}} →
`wallet`" + t: "object/null" + p: "Required
(exactly 1)" + d: "An object containing a wallet details related to this ProTx" + +- n: "{{DEPTH}} → →
`hasOwnerKey`" + t: "bool" + p: "Required
(exactly 1)" + d: "The owner key is present in this wallet" + +- n: "{{DEPTH}} → →
`hasOperatorKey`" + t: "bool" + p: "Required
(exactly 1)" + d: "The operator key is present in this wallet" + +- n: "{{DEPTH}} → →
`hasVotingKey`" + t: "bool" + p: "Required
(exactly 1)" + d: "The voting key is present in this wallet" + +- n: "{{DEPTH}} → →
`ownsCollateral`" + t: "bool" + p: "Required
(exactly 1)" + d: "The collateral is owned by this wallet" + +- n: "{{DEPTH}} → →
`ownsPayeeScript`" + t: "bool" + p: "Required
(exactly 1)" + d: "The payee script is owned by this wallet" + +- n: "{{DEPTH}} → →
`ownsOperatorRewardScript`" + t: "bool" + p: "Required
(exactly 1)" + d: "The operator reward script is owned by this wallet" +{% endcapture %} + {% assign WARNING="![Warning icon](/img/icons/icon_warning.svg) **Warning:**" %} {% assign WARNING_ICON="![Warning icon](/img/icons/icon_warning.svg)" %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 91681e56..2537d83a 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -301,6 +301,12 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y Added in 0.13.0 + + Evolution + ProTx + Y + Added in 0.13.0 + Generating Generate diff --git a/_includes/references.md b/_includes/references.md index f8f7c89b..fd28e792 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -166,6 +166,7 @@ http://opensource.org/licenses/MIT. [rpc mnsync]: /en/developer-reference#mnsync [rpc move]: /en/developer-reference#move [rpc ping]: /en/developer-reference#ping-rpc +[rpc protx]: /en/developer-reference#protx [rpc preciousblock]: /en/developer-reference#preciousblock [rpc pruneblockchain]: /en/developer-reference#pruneblockchain [rpc prioritisetransaction]: /en/developer-reference#prioritisetransaction @@ -451,6 +452,10 @@ http://opensource.org/licenses/MIT. [Piotr Piasecki's testnet faucet]: https://tpfaucet.appspot.com/ [prime symbol]: https://en.wikipedia.org/wiki/Prime_%28symbol%29 [protobuf]: https://developers.google.com/protocol-buffers/ +[proregtx special tx]: /en/developer-reference#proregtx +[proupregtx special tx]: /en/developer-reference#proupregtx +[prouprevtx special tx]: /en/developer-reference#prouprevtx +[proupservtx special tx]: /en/developer-reference#proupservtx [python-bitcoinlib]: https://github.com/petertodd/python-bitcoinlib [python-blkmaker]: https://gitorious.org/bitcoin/python-blkmaker [Satoshi Nakamoto]: https://en.bitcoin.it/wiki/Satoshi_Nakamoto diff --git a/en/developer-reference.md b/en/developer-reference.md index 49c88ce2..4c4d963e 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -282,6 +282,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/ping.md %} +{% include devdoc/dash-core/rpcs/rpcs/protx.md %} + {% include devdoc/dash-core/rpcs/rpcs/preciousblock.md %} {% include devdoc/dash-core/rpcs/rpcs/privatesend.md %} From 9ef3f3a791cda3b5f1d067ad5598078145a6b763 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 7 Nov 2018 16:22:59 -0500 Subject: [PATCH 030/117] Content - RPC - protx update Rename registration with funding to register_fund Add register_prepare for allowing external signing --- _includes/devdoc/dash-core/rpcs/rpcs/protx.md | 118 +++++++++++++++++- 1 file changed, 115 insertions(+), 3 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md index 400522cd..48ee749b 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md @@ -124,12 +124,12 @@ Result: {% endautocrossref %} -###### ProTx Fund-Register +###### ProTx Register Fund {% autocrossref %} -The `protx fund_register` RPC creates and funds a ProRegTx with the 1,000 DASH necessary for a masternode and then sends it to the network. +The `protx register_fund` RPC creates and funds a ProRegTx with the 1,000 DASH necessary for a masternode and then sends it to the network. *Parameter #1---collateral address* @@ -206,7 +206,7 @@ The `protx fund_register` RPC creates and funds a ProRegTx with the *Example from Dash Core 0.13.0* {% highlight bash %} -dash-cli -testnet protx fund_register yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7\ +dash-cli -testnet protx register_fund yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7\ 3.4.5.6:3456 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw\ 0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51\ yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw 5 yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7 @@ -219,6 +219,118 @@ ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd {% endautocrossref %} +###### ProTx Register Prepare + + +{% autocrossref %} + +The `protx register prepare` RPC creates an unsigned ProTx and +returns it. The ProTx must be signed externally with the collateral key and then +passed to "protx register_submit". The prepared transaction will also contain inputs +and outputs to cover fees. + +*Parameter #1---collateral address* + +{% itemplate ntpd1 %} +- n: "`collateralHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The collateral transaction hash" +{% enditemplate %} + +*Parameter #2---collateral index* + +{% itemplate ntpd1 %} +- n: "`collateralIndex`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The collateral transaction output index" +{% enditemplate %} + +*Parameter #3---IP Address and port* + +{% itemplate ntpd1 %} +- n: "`ipAndPort`" + t: "string" + p: "Required
(exactly 1)" + d: "IP and port in the form 'IP:PORT'.
Must be unique on the network.
Can be set to '0', which will require a ProUpServTx afterwards." +{% enditemplate %} + +*Parameter #4---owner key address* + +{% itemplate ntpd1 %} +- n: "`ownerKeyAddr`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The owner key used for payee updates and proposal voting. The private key belonging to this address be known in your wallet. The address must be unused and must differ from the `collateralAddress`." +{% enditemplate %} + +*Parameter #5---operator public key* + +{% itemplate ntpd1 %} +- n: "`operatorPubKey`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: " The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode." +{% enditemplate %} + +*Parameter #6---voting key address* + +{% itemplate ntpd1 %} +- n: "`votingKeyAddr`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The voting key address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to '0' or an empty string, `ownerAddr` will be used." +{% enditemplate %} + +*Parameter #7---operator reward* + +{% itemplate ntpd1 %} +- n: "`operatorReward`" + t: "number" + p: "Required
(exactly 1)" + d: "The fraction in % to share with the operator. If non-zero, `ipAndPort` must be zero as well.
The value must be between '0.00' and '100.00'." +{% enditemplate %} + +*Parameter #8---payout address* + +{% itemplate ntpd1 %} +- n: "`payoutAddress`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The Dash address to use for masternode reward payments. Must match `collateralAddress`." +{% enditemplate %} + +*Result---provider registration transaction hash* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Provider registration transaction (ProRegTx) hash" +{% enditemplate %} + +*Example from Dash Core 0.13.0* + +{% highlight bash %} +dash-cli -testnet protx register_prepare\ + df41e398bb245e973340d434d386f431dbd69735a575721b0b6833856e7d31ec 1 \ + 9.8.7.6:9876 yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz\ + 06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280c\ + yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz 1.2 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt +{% endhighlight %} + +Result: +{% highlight json %} +{ + "tx": "0300010001912b88876fee2f8e43e23b5e81276c163cf23d867bad4148170cb106ef9023700000000000feffffff0125623ba40b0000001976a914736e155c1039a269d4019c66219d2a18f0fee27588ac00000000d1010000000000ec317d6e8533680b1b7275a53597d6db31f486d334d44033975e24bb98e341df0100000000000000000000000000ffff090807062694ca6b243168b30461d1f19e2bb89a965a5bac067e06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280cca6b243168b30461d1f19e2bb89a965a5bac067e78001976a914fc136008111fcc7a05be6cec66f97568727a9e5188ace5f6b70ac55411727e25178bd417b9b03f837ad7155d90ad286f3a427203fb9f00", + "collateralAddress": "yWuKWhDzGQqZL8rw6kGxGrfe6P8bUC2S4f", + "signMessage": "yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt|120|yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz|yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz|69a49e18c1253b90d39322f7e2f7af74524401bc33a27645e697e74a214e3e1e" +} +{% endhighlight %} + +{% endautocrossref %} + ###### ProTx List From 3e3660ffef359e1e92042e5af8e6f54862251267 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 7 Nov 2018 17:35:56 -0500 Subject: [PATCH 031/117] Content - RPC - protx update Correct result section of register_prepare Add register_submit details --- _includes/devdoc/dash-core/rpcs/rpcs/protx.md | 82 ++++++++++++++++++- 1 file changed, 79 insertions(+), 3 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md index 48ee749b..71168134 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md @@ -224,7 +224,7 @@ ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd {% autocrossref %} -The `protx register prepare` RPC creates an unsigned ProTx and +The `protx register_prepare` RPC creates an unsigned ProTx and returns it. The ProTx must be signed externally with the collateral key and then passed to "protx register_submit". The prepared transaction will also contain inputs and outputs to cover fees. @@ -301,13 +301,28 @@ and outputs to cover fees. d: "The Dash address to use for masternode reward payments. Must match `collateralAddress`." {% enditemplate %} -*Result---provider registration transaction hash* +*Result---unsigned transaction and message to sign* {% itemplate ntpd1 %} - n: "`result`" + t: "object" + p: "Required
(exactly 1)" + d: "JSON object containing an unsigned provider transaction and the message to be signed externally, or JSON `null` if an error occurred" + +- n: "→
`tx`" t: "string (hex)" p: "Required
(exactly 1)" - d: "Provider registration transaction (ProRegTx) hash" + d: "The serialized ProRegTx in hex format" + +- n: "→
`collateralAddress`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The collateral address" + +- n: "→
`signMessage`" + t: "string (base64)" + p: "Required
(exactly 1)" + d: "The string message that needs to be signed with the collateral key." {% enditemplate %} *Example from Dash Core 0.13.0* @@ -331,6 +346,67 @@ Result: {% endautocrossref %} +###### ProTx Register Submit + + +{% autocrossref %} + +The `protx register_submit` RPC submits the specified ProTx to the +network. This command will also sign the inputs of the transaction which were +previously added by `protx register_prepare` to cover transaction fees. + +*Parameter #1---collateral address* + +{% itemplate ntpd1 %} +- n: "`tx`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The serialized transaction previously returned by `protx register_prepare`" +{% enditemplate %} + +*Parameter #2---collateral index* + +{% itemplate ntpd1 %} +- n: "`sig`" + t: "string (base64)" + p: "Required
(exactly 1)" + d: "The signature signed with the collateral key. Must be in base64 format." +{% enditemplate %} + +*Result---provider registration transaction hash* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Provider registration transaction (ProRegTx) hash" +{% enditemplate %} + +*Example from Dash Core 0.13.0* + +{% highlight bash %} +dash-cli -testnet protx register_submit\ + 03000100012d988526d5d1efd32320023c92eff09c2963dcb021b0de9761\ + 17e5e37dc7a7870000000000feffffff015f603ba40b0000001976a9140c\ + 37e07eb5c608961769e6506c23c11e9f9fe00988ac00000000d101000000\ + 00002d988526d5d1efd32320023c92eff09c2963dcb021b0de976117e5e3\ + 7dc7a7870100000000000000000000000000ffff05060708162e243dd366\ + bf4a329968d77eac9fb63481a600938d125e1b7cba03ca2a097e402185e6\ + 160232ea53e6d62898a3be8617b06ff347d967543228bd9b605547c3d478\ + b0a838ca243dd366bf4a329968d77eac9fb63481a600938dc4091976a914\ + e9bf4e6f26fecf1dfc1e04dde43472df378628b888ac6a048e7f645e8adc\ + 305ccfd8652066046a0702596af13b8ac97803ade256da2900\ + \ + H90IvqVtFjZkwLJb08yMEgGixs0/FpcdvwImBcir4cYLJhD3pdX+lKD2GsPl6KNxghVXNk5/HpOdBoWAHo9u++Y= +{% endhighlight %} + +Result: +{% highlight bash %} +273ce3ebe24183ee4117b10e054cdbb108a3bde5d2f286129e29480d46a3f573 +{% endhighlight %} + +{% endautocrossref %} + ###### ProTx List From 00649c592808b27ef250c99ea1ad05f8a93d05dc Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 8 Nov 2018 15:04:17 -0500 Subject: [PATCH 032/117] Content - P2P - Add DIP4 p2p messages getmnlistd and mnlistdiff with details Update data message image with DIP4 messages --- _includes/devdoc/ref_p2p_networking.md | 109 ++++++++++++++++++ img/dev/en-p2p-data-messages.dot | 1 + img/dev/en-p2p-data-messages.png | Bin 24436 -> 22625 bytes img/dev/en-p2p-data-messages.svg | 152 ++++++++++++++----------- 4 files changed, 193 insertions(+), 69 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 7aa2690d..22478d7d 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -542,6 +542,34 @@ to the `getheaders` message will include as many as 2,000 block headers. {% endautocrossref %} +#### GetMNListD +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70211* + +The `getmnlistd` message is sent to request a full masternode list or an +update to a previously requested masternode list. + +| Bytes | Name | Data type | Required | Description | +| ---------- | ----------- | --------- | -------- | -------- | +| 32 | baseBlockHash | uint256 | Required | Hash of a block the requester already has a valid masternode list of.
_Note: Can be all-zero to indicate that a full masternode list is requested._ +| 32 | blockHash | uint256 | Required | Hash of the block for which the masternode list diff is requested + +The following annotated hexdump shows a `getmnlistd` message. (The +message header has been omitted.) + +{% highlight text %} +000001ee5108348a2c59396da29dc576 +9b2a9bb303d7577aee9cd95136c49b9b ........... Base block hash + +0000030f51f12e7069a7aa5f1bc9085d +db3fe368976296fd3b6d73fdaf898cc0 ........... Block hash +{% endhighlight %} + +{% endautocrossref %} + #### Headers {% include helpers/subhead-links.md %} @@ -849,6 +877,87 @@ template near the beginning of this subsection. {% endautocrossref %} +#### MnListDiff +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70211* + +The `mnlistdiff` message is a reply to a `getmnlistd` message which +requested either a full masternode list or a diff for a range of blocks. + +| Bytes | Name | Data type | Required | Description | +| ---------- | ----------- | --------- | -------- | -------- | +| 32 | baseBlockHash | uint256 | Required | Hash of a block the requester already has a valid masternode list of. Can be all-zero to indicate that a full masternode list is requested. +| 32 | blockHash | uint256 | Required | Hash of the block for which the masternode list diff is requested +| 4 | totalTransactions | uint32_t | Required | Number of total transactions in `blockHash` +| 1-9 | merkleHashesCount | compactSize uint | Required | Number of Merkle hashes +| variable | merkleHashes | vector | Required | Merkle hashes in depth-first order +| 1-9 | merkleFlagsCount | compactSize uint | Required | Number of Merkle flag bytes +| variable | merkleFlags | vector | Required | Merkle flag bits, packed per 8 in a byte, least significant bit first +| variable | cbTx | CTransaction | Required | The fully serialized coinbase transaction of `blockHash` +| variable | deletedMNs | vector | Required | A list of ProRegTx hashes for masternode which were deleted after `baseBlockHash` +| variable | mnList | vector | Required | The list of SML entries which were added or updated since `baseBlockHash` + +The following annotated hexdump shows a `mnlistdiff` message. (The +message header has been omitted.) + +{% highlight text %} +000001ee5108348a2c59396da29dc576 +9b2a9bb303d7577aee9cd95136c49b9b ........... Base block hash + +0000030f51f12e7069a7aa5f1bc9085d +db3fe368976296fd3b6d73fdaf898cc0 ........... Block hash + +05000000 ................................... Transactions: 5 + +04 ......................................... Merkle hash count: 4 + +4488a599e5d61709664c32305befd58b +ef29e33bc6e718af0233f938557a57a9 ........... Merkle hash 1 +5c8119b7b136d94e477a0d2917d5f724 +5ff299cc6e31994f6236a8fb34fec88f ........... Merkle hash 2 +905efa3e6743c889823f00147d36d12f +d12ad401c19089f0affcabd423deef67 ........... Merkle hash 3 +3f3a7f84d7ad33214994b5aecf4c1e19 +2cb65b86750b1377e069073d1eba477a ........... Merkle hash 4 + +01 ......................................... Merkle flag count: 1 +0f ......................................... Flags: 0 0 0 0 1 1 1 1 + +[...]....................................... Coinbase Tx (Not shown) + +00 ......................................... Deleted masternodes: 0 + +02 ......................................... Masternode list entries: 2 + +Masternode List +| Masternode 1 +| | 01040eb32f760490054543356cff4638 +| | 65633439dd073cffa570305eb086f70e ....... ProRegTx hash +| | 00000000000000000000000000000000 ....... IP Address: ::ffff:0.0.0.0 +| | 0000 ................................... Port: 0 +| | +| | 0000000000000000000000000000000000000000 +| | 0000000000000000000000000000000000000000 +| | 0000000000000000 ....................... Operator public key (BLS) +| | c2ae01fb4084cbc3bc31e7f59b36be228a320404 Voting pubkey hash (ECDSA) +| +| Masternode 2 +| | f7737beb39779971e9bc59632243e13f +| | c5fc9ada93b69bf48c2d4c463296cd5a ....... ProRegTx hash +| | 000000000000000000000000cf9af40d ....... IP Address: ::ffff:207.154.244.13 +| | 4e1f ................................... Port: 19999 +| | +| | 88d719278eef605d9c19037366910b59bc28d437 +| | de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8 +| | c22f4a914a6c5566 ....................... Operator public key (BLS) +| | 43ce12751c4ba45dcdfe2c16cefd61461e17a54d Voting pubkey hash (ECDSA) +{% endhighlight %} + +{% endautocrossref %} + #### NotFound {% include helpers/subhead-links.md %} diff --git a/img/dev/en-p2p-data-messages.dot b/img/dev/en-p2p-data-messages.dot index 2e47a418..72e090ac 100644 --- a/img/dev/en-p2p-data-messages.dot +++ b/img/dev/en-p2p-data-messages.dot @@ -10,6 +10,7 @@ edge [ penwidth = 1.75, fontname="Sans", dir="none" ] node [ penwidth = 1.75, shape = "box", fontname="Sans", ] graph [ penwidth = 1.75, fontname="Sans" ] +getmnlistd -> mnlistdiff [ minlen = 3 ]; getblocktxn -> blocktxn [ minlen = 3 ]; getblocks -> inv; diff --git a/img/dev/en-p2p-data-messages.png b/img/dev/en-p2p-data-messages.png index 39ada9342adfe9a875d97cf826f722aa4139a007..9b511c8d4184c71c93621242ed1bd8f7f3207ab0 100644 GIT binary patch literal 22625 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 literal 24436 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 diff --git a/img/dev/en-p2p-data-messages.svg b/img/dev/en-p2p-data-messages.svg index 73699941..38ba1556 100644 --- a/img/dev/en-p2p-data-messages.svg +++ b/img/dev/en-p2p-data-messages.svg @@ -4,128 +4,142 @@ - - + + %3 - + Overview Of P2P Protocol Data Request And Reply Messages + +getmnlistd + +getmnlistd + + +mnlistdiff + +mnlistdiff + + +getmnlistd->mnlistdiff + + -getblocktxn - -getblocktxn +getblocktxn + +getblocktxn -blocktxn - -blocktxn +blocktxn + +blocktxn -getblocktxn->blocktxn - +getblocktxn->blocktxn + -getblocks - -getblocks +getblocks + +getblocks -inv - -inv +inv + +inv -getblocks->inv - +getblocks->inv + -getdata - -getdata +getdata + +getdata -inv->getdata - +inv->getdata + -mempool - -mempool +mempool + +mempool -mempool->inv - +mempool->inv + -tx - -tx +tx + +tx -getdata->tx - +getdata->tx + -block - -block +block + +block -getdata->block - +getdata->block + -merkleblock - -merkleblock +merkleblock + +merkleblock -getdata->merkleblock - +getdata->merkleblock + -notfound - -notfound +notfound + +notfound -getdata->notfound - +getdata->notfound + -getheaders - -getheaders +getheaders + +getheaders -headers - -headers +headers + +headers -getheaders->headers - +getheaders->headers + -label1 -Request For Help -Getting Up To Date +label1 +Request For Help +Getting Up To Date -label2 -Reply With -Inventory +label2 +Reply With +Inventory -label3 -Request For Specific Data +label3 +Request For Specific Data -label4 -Reply With -Requested Data +label4 +Reply With +Requested Data From 2f35efbf5d0b78a48afaf4bbc59376bf95082ee5 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 8 Nov 2018 16:15:58 -0500 Subject: [PATCH 033/117] Content - Clarify OP_RETURN max text length 83 byte limit must factor in opcodes --- _includes/devdoc/guide_transactions.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/_includes/devdoc/guide_transactions.md b/_includes/devdoc/guide_transactions.md index a6553900..53d4ab4a 100644 --- a/_includes/devdoc/guide_transactions.md +++ b/_includes/devdoc/guide_transactions.md @@ -456,6 +456,29 @@ number of data pushes, provided the total byte limit is not exceeded. There must still only be a single null data output and it must still pay exactly 0 duffs. +**Note:** Since the null data output must include opcodes, the limit for data +is less than 83 bytes. A typical OP_RETURN is limited to 80 bytes +due to the following 3 required bytes: + + * OP_RETURN (0x6a) + * OP_PUSHDATA1 (0x4c) + * Data Size (e.g. 0x50 for 80 bytes) + + +The following annotated hexdump shows an example OP_RETURN output: + +{% highlight bash %} +6a ......................................... OP_RETURN Opcode +4c ......................................... OP_PUSHDATA1 Opcode +50 ......................................... Bytes to push: 80 + +48656c6c6f2066726f6d207468657068657a203 +a2d29205468697320697320746865206d617869 +6d756d2074657874206c656e67746820616c6c6 +f77656420666f7220616e204f505f5245545552 +4e2e ....................................... Data +{% endhighlight %} + The `-datacarriersize` Dash Core configuration option allows you to set the maximum number of bytes in null data outputs that you will relay or mine. From af6e45b63c2e548e7922479a444e8f2e23127458 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 13 Nov 2018 09:45:59 -0500 Subject: [PATCH 034/117] Content - RPC - Add coinbase_payload to getblocktemplate --- .../dash-core/rpcs/rpcs/getblocktemplate.md | 70 ++++++++----------- 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md index 207a47e6..0f0bbfd1 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md @@ -115,17 +115,17 @@ information, please see the following resources: - n: "→ →
Transaction" t: "object" - p: "Optional (0 or more)" + p: "Optional
(0 or more)" d: "Non-coinbase transaction" - n: "→ → →
`data`" t: "string (hex)" - p: "Optional (0 or more)" + p: "Optional
(0 or more)" d: "Transaction data encoded in hex (byte-for-byte)" - n: "→ → →
`hash`" t: "string (hex)" - p: "Optional (0 or more)" + p: "Optional
(0 or more)" d: "The hash/id encoded in little-endian hex" - n: "→ → →
`depends`" @@ -235,7 +235,7 @@ information, please see the following resources: - n: "→ →
Masternode Payee" t: "object" - p: "Optional (0 or more)" + p: "Optional
(0 or more)" d: "Object containing a masternode payee's information" - n: "→ → →
`payee`" @@ -270,7 +270,7 @@ information, please see the following resources: - n: "→ →
Superblock Payee" t: "object" - p: "Optional (0 or more)" + p: "Optional
(0 or more)" d: "Object containing a superblock payee's information" - n: "→ → →
`payee`" @@ -298,9 +298,13 @@ information, please see the following resources: p: "Required
(exactly 1)" d: "True if superblock payments enabled" +- n: "→
`coinbase_payload`" + t: "string" + p: "Required
(exactly 1)" + d: "_Added in Dash Core 0.13.0_

Coinbase transaction payload data encoded in hexadecimal" {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.13.0* {% highlight bash %} dash-cli -testnet getblocktemplate @@ -313,41 +317,26 @@ Result: "capabilities": [ "proposal" ], - "version": 536870913, + "version": 536870920, "rules": [ - "dip0001" + "csv", + "dip0001", + "bip147" ], "vbavailable": { - "csv": 0 + "dip0003": 3 }, "vbrequired": 0, - "previousblockhash": "000000003d5c325259275fbf51a5dd623a13aade887cf83e5fdc3b\ - 11898a71ce", + "previousblockhash": "0000000004dd4bf3ed4f4bac4a8f8c781a73bff32886390ec15fa0c5686476ac", "transactions": [ - { - "data": "01000000013e9e7e2116d8546a54d8531092d50e2da705a6f229f91a6d129f\ - 3f3e529d2bdb010000006a473044022044569ec727012e06bd4fa853fdcb2d\ - c268f193ca00b68649f3dee0c0ca3207ff02206dc8656025c2f503e58779e6\ - 8a14ed18a7134f2c7d2c4235269bd70a3d6d5bd301210226d4ce54b37c1886\ - 92844201edbfb19e37cdbe7138a133b92b7d3d43ec157da6feffffff02a00b\ - d100000000001976a914d7b47d4b40a23c389f5a17754d7f60f511c7d0ec88\ - ac43321005140000001976a914616fdfd6eae0548f0b0f51bef165974abc10\ - 511688ac1e1f0000", - "hash": "9fd01aafcb4c59741ddfef41da2ec0eb3e1cc5b740150320b29534abdcd67e77", - "depends": [ - ], - "fee": 226, - "sigops": 2 - } ], "coinbaseaux": { "flags": "" }, - "coinbasevalue": 13230000226, - "longpollid": "000000003d5c325259275fbf51a5dd623a13aade887cf83e5fdc3b11898a\ - 71ce316", - "target": "00000001231e0000000000000000000000000000000000000000000000000000", - "mintime": 1507737402, + "coinbasevalue": 2089285715, + "longpollid": "0000000004dd4bf3ed4f4bac4a8f8c781a73bff32886390ec15fa0c5686476ac4", + "target": "000000000eeb4b00000000000000000000000000000000000000000000000000", + "mintime": 1542118149, "mutable": [ "time", "transactions", @@ -356,23 +345,24 @@ Result: "noncerange": "00000000ffffffff", "sigoplimit": 40000, "sizelimit": 2000000, - "curtime": 1507738818, - "bits": "1c103bdf", - "previousbits": "1c1548b5", - "height": 7967, + "curtime": 1542119335, + "bits": "1c0eeb4b", + "previousbits": "1c0e639b", + "height": 263905, "masternode": [ { - "payee": "yaJc6tADbEjxQBAC69ugWNoTFpzxqkcgWd", - "script": "76a914996911b133d83de25d1f169c7046d74b728a757b88ac", - "amount": 6615000108 + "payee": "yedxgyCLu7BpxBbpeLUw4vAkxNrcEgHt57", + "script": "76a914c8f2a948efe84e9d9795aa473c5afb6023d6c07488ac", + "amount": 1044642850 } - ], + ], "masternode_payments_started": true, "masternode_payments_enforced": true, "superblock": [ ], "superblocks_started": true, - "superblocks_enabled": true + "superblocks_enabled": true, + "coinbase_payload": "" } {% endhighlight %} From 4f5237cba4a7a519e30b534cc466cb1714318468 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 13 Nov 2018 09:46:31 -0500 Subject: [PATCH 035/117] Content - Correct 0.13.0 protocol version number --- _includes/devdoc/ref_p2p_networking.md | 6 +++--- _includes/devdoc/ref_transactions.md | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 22478d7d..f9e9d810 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -66,7 +66,7 @@ with the most recent versions listed first. (If you know of a protocol version that implemented a major change but which is not listed here, please [open an issue][docs issue].) -As of Dash Core 0.13.0.0, the most recent protocol version is 70211. +As of Dash Core 0.13.0.0, the most recent protocol version is 70212. | Version | Initial Release | Major Changes |---------|------------------------------------|-------------- @@ -547,7 +547,7 @@ to the `getheaders` message will include as many as 2,000 block headers. {% autocrossref %} -*Added in protocol version 70211* +*Added in protocol version 70212* The `getmnlistd` message is sent to request a full masternode list or an update to a previously requested masternode list. @@ -882,7 +882,7 @@ template near the beginning of this subsection. {% autocrossref %} -*Added in protocol version 70211* +*Added in protocol version 70212* The `mnlistdiff` message is a reply to a `getmnlistd` message which requested either a full masternode list or a diff for a range of blocks. diff --git a/_includes/devdoc/ref_transactions.md b/_includes/devdoc/ref_transactions.md index 5fd4aedc..3fb73c12 100644 --- a/_includes/devdoc/ref_transactions.md +++ b/_includes/devdoc/ref_transactions.md @@ -427,7 +427,7 @@ transaction types is maintained in the [DIP repository](https://github.com/dashp {% autocrossref %} -*Added in protocol version 70211 of Dash Core as described by DIP3* +*Added in protocol version 70212 of Dash Core as described by DIP3* The Masternode Registration (ProRegTx) special transaction is used to join the masternode list by proving ownership of the 1000 DASH necessary to create a @@ -585,7 +585,7 @@ ProRegTx Payload {% autocrossref %} -*Added in protocol version 70211 of Dash Core as described by DIP3* +*Added in protocol version 70212 of Dash Core as described by DIP3* The Masternode Provider Update Service (ProUpServTx) special transaction is used to update the IP Address and port of a masternode. If a non-zero operatorReward @@ -658,7 +658,7 @@ ProUpServTx Payload {% autocrossref %} -*Added in protocol version 70211 of Dash Core as described by DIP3* +*Added in protocol version 70212 of Dash Core as described by DIP3* The Masternode Provider Update Registrar (ProUpRegTx) special transaction is used by a masternode owner to update masternode metadata (e.g. operator/voting key @@ -739,7 +739,7 @@ ProRegTx Payload {% autocrossref %} -*Added in protocol version 70211 of Dash Core as described by DIP3* +*Added in protocol version 70212 of Dash Core as described by DIP3* The Masternode Operator Revocation (ProUpRevTx) special transaction allows an operator to revoke their key in case of compromise or if they wish to terminate @@ -801,7 +801,7 @@ ProUpRevTx Payload {% autocrossref %} -*Added in protocol version 70211 of Dash Core as described by DIP4* +*Added in protocol version 70212 of Dash Core as described by DIP4* The Coinbase (CbTx) special transaction adds information to the block’s coinbase transaction that enables verification of the deterministic masternode list without From 29b6536e89b050aa4f005c727971a7779c2a40d9 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 13 Nov 2018 16:33:23 -0500 Subject: [PATCH 036/117] Content - RPC - Generate can be used on testnet --- _includes/devdoc/dash-core/rpcs/rpcs/generate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/generate.md b/_includes/devdoc/dash-core/rpcs/rpcs/generate.md index 165de423..39aac636 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/generate.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/generate.md @@ -13,7 +13,7 @@ http://opensource.org/licenses/MIT. {% autocrossref %} -*Requires wallet support. Can only be used on the regtest network.* +*Requires wallet support.* The `generate` RPC {{summary_generate}} From 2372ce3e56c6e2a3bf75bb1361abd048b98d5d4d Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 19 Nov 2018 09:34:07 -0500 Subject: [PATCH 037/117] V0.13.0 guide dash features (#93) * Content - Guide - IS updates Drop psuedo-confirmations Automatic IS and fee changes * Content - Guide - PS updates Add 5th denom Update collateral fee info * Content - Guide - MN Sync schedule Minor updates * Content - Guide - Auto-IS limitations * Content - Guide - Auto-IS limitation update --- _includes/devdoc/guide_dash_features.md | 78 ++++++++++++++++--------- 1 file changed, 52 insertions(+), 26 deletions(-) diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index c612bdfe..f6c30972 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -33,7 +33,12 @@ economy. {% autocrossref %} Dash Core's InstantSend feature provides a way to lock transaction inputs and -enable secure, instantaneous transactions. +enable secure, instantaneous transactions. Since Dash Core 0.13.0, any qualifying +transaction is automatically upgraded to InstantSend by the network without a +need for the sending wallet to explicitly request it. For these simple +transactions (those containing 4 or fewer inputs), the previous requirement for +a special InstantSend transaction fee was also removed. The criteria for +determining eligibility can be found in the lists of limitations below. The following video provides an overview with a good introduction to the details including the InstantSend vulnerability that was fixed in Dash Core 0.12.2. @@ -62,12 +67,10 @@ Some specific points in the video are listed here for quick reference: | `getdata` message (txlvote) | → | | Client requests vote | | ← | `txlvote` message | Peer responds with vote -Once a sufficient number of votes approve the transaction lock, the InstantSend -transaction is approved and shows 5 confirmations (`DEFAULT_INSTANTSEND_DEPTH`). - -NOTE: The 5 "pseudo-confirmations" are shown to convey confidence that the -transaction is secure from double-spending and DO NOT indicate the transaction -has already been confirmed to a block depth of 5 in the blockchain. +Once an InstantSend lock has been requested, the `instantsend` field of various +RPCs (e.g. the `getmempoolentry` RPC) is set to `true`. Then, if a sufficient +number of votes approve the transaction lock, the InstantSend transaction is approved +the `instantlock` field of the RPC is set to `true`. If an InstantSend transaction is a valid transaction but does not receive a transaction lock, it reverts to being a standard transaction. @@ -76,7 +79,7 @@ There are a number of limitations on InstantSend transactions: * The lock request will timeout 15 seconds after the first vote is seen (`INSTANTSEND_LOCK_TIMEOUT_SECONDS`) * The lock request will fail if it has not been locked after 60 seconds (`INSTANTSEND_FAILED_TIMEOUT_SECONDS`) -* A minimum fee (0.0001 Dash) is required since the transaction involves the masternodes in addition to miners. This fee was most +* A minimum fee (0.0001 Dash) is required for non-simple transactions since they place a higher load on the masternodes. This fee was most recently decreased by [DIP-0001](https://github.com/dashpay/dips/blob/master/dip-0001.md). * To be used in an InstantSend transaction, an input must have at least the number confirmations (block depth) indicated by the table below @@ -87,6 +90,24 @@ recently decreased by [DIP-0001](https://github.com/dashpay/dips/blob/master/dip | Regtest | 2 Blocks | | Devnet | 2 Blocks | +There are some further limitations on Automatic InstantSend transactions: + +* DIP3 must be active +* Spork 16 must be enabled +* Mempool usage must be lower than 10% (`AUTO_IX_MEMPOOL_THRESHOLD`). As of Dash Core 0.13.0, this corresponds to a mempool size of 30 MB (`DEFAULT_MAX_MEMPOOL_SIZE` = 300 MB). + +**Historical Note** + +Prior to Dash Core 0.13.0, `instantsend` and `instantlock` values were not +available via RPC. At that time, the InstantSend system worked as described below. + +Once a sufficient number of votes approved the transaction lock, the InstantSend +transaction was approved and showed 5 confirmations (`DEFAULT_INSTANTSEND_DEPTH`). + +NOTE: The 5 "pseudo-confirmations" were shown to convey confidence that the +transaction was secure from double-spending and DID NOT indicate the transaction +had already been confirmed to a block depth of 5 in the blockchain. + {% endautocrossref %} @@ -127,10 +148,13 @@ sending the actual denomination. The table below lists the bit, its associated integer value used in P2P messages, and the actual Dash value. | **Bit** | **Denom. (Integer)** | **Denomination (DASH)** | -| 0 | 1 | 10.0001 | -| 1 | 2 | 01.00001 | -| 2 | 4 | 00.100001 | -| 3 | 8 | 00.0100001 | +| 0 | 1 | 10.0001 | +| 1 | 2 | 01.00001 | +| 2 | 4 | 00.100001 | +| 3 | 8 | 00.0100001 | +| 4 | 16 | 00.00100001 | + +Protocol version 70212 added a 5th denomination (0.001 DASH). The denominations are structured to allow converting between denominations directly without requiring additional inputs or creating change (for example, @@ -145,9 +169,11 @@ directly without requiring additional inputs or creating change (for example, **Creating Collaterals** PrivateSend collaterals are used to pay mixing fees, but are kept separate from -the denominations to maximize privacy. The minimum collateral fee is 0.001 DASH for -all mixing sessions regardless of denomination. In Dash Core, collaterals are -created with enough value to pay 4 collateral fees (4 x 0.001 DASH). ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend.h#L313)) +the denominations to maximize privacy. Since protocol version 70212, the minimum +collateral fee is 1/10 of the smallest denomination for all mixing sessions +regardless of denomination. +In Dash Core, collaterals are created with enough value to pay 4 collateral fees +(4 x 0.001 DASH). ([Dash Core Reference](https://github.com/dashpay/dash/blob/262454791c4b4f783b2533d1b16b757a71eb5f7d/src/privatesend.h#L413)) In protocol version 70208, collateral inputs can be anything from 2x the minimum collateral amount to the maximum collateral amount (currently defined as @@ -397,23 +423,23 @@ sync. {% include helpers/subhead-links.md %} The following tables detail the timing of various functions used to keep the -masternodes in sync with each other. This information is derived from -`ThreadCheckPrivateSend` in `src/privatesend.cpp`. +masternodes in sync with each other. This information is derived from the +scheduler section of `AppInitMain` in `src/init.cpp`. | **Period (seconds)** | **Action** | **Description** | -| 6 | MN Sync | Synchronizes sporks, masternode list, masternode payments, and governance objects | +| 6 | MN Sync | Synchronizes sporks, masternode list, masternode payments, and governance objects (masternode-sync.cpp) | The following actions only run when the masternode sync is past `MASTERNODE_SYNC_WAITING` status. | **Period (seconds)** | **Action** | **Description** | -| 1 | MN Check | Check the state of each masternode that is still funded and not banned. The action occurs once per second, but individual masternodes are only checked at most every 5 seconds (only a subset of masternodes are checked each time it runs) | -| 60 | Process MN Connections | Disconnects some masternodes | -| 60 | MN Check/Remove | Remove spent masternodes and check the state of inactive ones | -| 60 | MN Payment Check/Remove | Remove old masternode payment votes/blocks | -| 60 | InstantSend Check/Remove | Remove expired/orphaned/invalid InstantSend candidates and votes | -| 300 | Full verification | Verify masternodes via direct requests (`mnv` messages - note time constraints in the Developer Reference section) | -| 300 | Maintenance | Check/remove/reprocess governance objects | -| 600 | Manage State | Sends masternode pings (`mnp` message). Also sends initial masternode broadcast (`mnb` message) for local masternodes. | +| 1 | MN Check | Check the state of each masternode that is still funded and not banned. The action occurs once per second, but individual masternodes are only checked at most every 5 seconds (only a subset of masternodes are checked each time it runs) (masternodeman.cpp) | +| 60 | Process MN Connections | Disconnects some masternodes (masternodeman.cpp) | +| 60 | MN Check/Remove | Remove spent masternodes and check the state of inactive ones (masternodeman.cpp) | +| 60 | MN Payment Check/Remove | Remove old masternode payment votes/blocks (masternode-payments.cpp) | +| 60 | InstantSend Check/Remove | Remove expired/orphaned/invalid InstantSend candidates and votes (instantx.cpp) | +| 300 | Full verification | Verify masternodes via direct requests (`mnv` messages - note time constraints in the Developer Reference section) (masternodeman.cpp) | +| 300 | Maintenance | Check/remove/reprocess governance objects (governance.cpp) | +| 600 | Manage State | Sends masternode pings (`mnp` message). Also sends initial masternode broadcast (`mnb` message) for local masternodes. (activemasternode.cpp) | {% endautocrossref %} From be84b44e9b29a501b5d1b66100703e5f47396a4d Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 19 Nov 2018 12:43:37 -0500 Subject: [PATCH 038/117] Github Pages build debug (#94) * Config - Minimize size of doxygen output * Config - Renable doxygen class diagrams --- doxygen/Doxyfile-dashdocs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doxygen/Doxyfile-dashdocs b/doxygen/Doxyfile-dashdocs index acefb9b8..d7441961 100644 --- a/doxygen/Doxyfile-dashdocs +++ b/doxygen/Doxyfile-dashdocs @@ -2324,7 +2324,7 @@ INCLUDED_BY_GRAPH = YES # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -CALL_GRAPH = YES +CALL_GRAPH = NO # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller # dependency graph for every global function or class method. @@ -2336,7 +2336,7 @@ CALL_GRAPH = YES # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -CALLER_GRAPH = YES +CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical # hierarchy of all classes instead of a textual one. From 28514b62d7c2335c07875e22be81870b07dfb4ad Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 26 Dec 2018 11:05:10 -0500 Subject: [PATCH 039/117] V0.13.0 RC updates (#95) * Content - RPC - Update quick reference * RPC - Update getblockchaininfo to show BIP-9 progress Related to dashpay/dash#2435 * RPC - Update gobject prepare with new params Use-IS (dashpay/dash#2452) Use specific UTXO for fee (dashpay/dash#2482) * RPC - Update mode name * RPC - Update protx default mode dashpay/dash#2513 * Content - Add spork 17 * Content - Special transactions Add info for Quorum commitment Remove messages not in 13.0 (SubTx) * P2P - Add new txlvote fields masternodeProTxHash (dashpay/dash#2484) quorumModifierHash (dashpay/dash#2505) * RPC - Update protx list Make all options follow the same parameter format (dashpay/dash#2559) * Content - version bump 0.13.0.0 bumped to 70213 (dashpay/dash#2557) * Guide - PrivateSend dstx message limit Up to 5 simultaneous dstxs per MN allowed (dashpay/dash#2552) * RPC - Update getblock Add missing versionHex field (dashpay/dash@e7d9ffa) Change to use verbosity syntax (dashpay/dash#2506 and bitcoin/bitcoin#8704) * P2P - Add qfcommit message (no hexdump example) DIP6 quorum final commitment (dashpay/dash#2477) * P2P - qfcommit typo Change description of llmqType field * P2P - Special tx payload size clarification * Guide - Update MN payment description Related to dashpay/dash#2258 * Guide - fix broken link * Guide - Update some example txs Change to hashes on the chain following the 12.3.4 reset * P2P - Add QcTx hexdump * P2P - DIP4 message updates Add SML entry Update hexdump to include new fields Add getmnlistd and mnlistdiff to cross ref * P2P - minor DIP3-related comments --- _autocrossref.yaml | 7 + _config.yml | 5 +- .../devdoc/dash-core/rpcs/quick-reference.md | 32 +-- .../devdoc/dash-core/rpcs/rpcs/getblock.md | 271 +++++++++++++++--- .../dash-core/rpcs/rpcs/getblockchaininfo.md | 25 ++ .../devdoc/dash-core/rpcs/rpcs/gobject.md | 31 ++ .../dash-core/rpcs/rpcs/masternodelist.md | 2 +- _includes/devdoc/dash-core/rpcs/rpcs/protx.md | 37 +-- _includes/devdoc/guide_dash_features.md | 31 +- _includes/devdoc/ref_p2p_networking.md | 131 +++++++-- _includes/devdoc/ref_transactions.md | 111 +++++-- _includes/layout/base/rpc-table.html | 6 +- _includes/references.md | 6 +- 13 files changed, 549 insertions(+), 146 deletions(-) diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 5cd39bcf..e7c0bce7 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -69,6 +69,8 @@ fiat: '`getheaders` messages': getheaders message '`getaddr` message': getaddr message '`getaddr` messages': getaddr message +'`getmnlistd` message': getmnlistd message +'`getmnlistd` messages': getmnlistd message '`getsporks` message': getsporks message '`getsporks` messages': getsporks message '`govobj` message': govobj message @@ -114,6 +116,8 @@ micropayment channels: micropayment channel '`mnb` messages': mnb message '`mnget` message': mnget message '`mnget` messages': mnget message +'`mnlistdiff` message': mnlistdiff message +'`mnlistdiff` messages': mnlistdiff message '`mnp` message': mnp message '`mnp` messages': mnp message '`mnv` message': mnv message @@ -170,6 +174,9 @@ protocol version 70012: section protocol versions protocol version 70013: section protocol versions protocol version 70014: section protocol versions public key infrastructure: pki +'QcTx': quorum commitment special tx +'`qfcommit` message': qfcommit message +'`qfcommit` messages': qfcommit message '`r`': r receipt: DO NOT AUTOCROSSREF recurrent rebilling: diff --git a/_config.yml b/_config.yml index b4fab8d2..940789f0 100644 --- a/_config.yml +++ b/_config.yml @@ -514,7 +514,7 @@ devsearches: - "DIP4: Simplified Verification of Deterministic Masternode Lists": "https://github.com/dashpay/dips/blob/master/dip-0004.md" - "DIP5: Blockchain Users": "https://github.com/dashpay/dips/blob/master/dip-0005.md" - "DIP6: Long-Living Masternode Quorums": "https://github.com/dashpay/dips/blob/master/dip-0006.md" - - "DIP7: LLMQ Signing Requests / Sessions": "https://github.com/dashpay/dips/blob/master/dip-0007.md" + - "DIP7: LLMQ Signing Requests / Sessions": "https://github.com/dashpay/dips/blob/master/dip-0007.md" ## Bitcoin P2P Protocol messages documented on Bitcoin.org "P2P Messages": @@ -532,10 +532,12 @@ devsearches: - "getblocktxn": "/en/developer-reference#getblocktxn" - "getdata": "/en/developer-reference#getdata" - "getheaders": "/en/developer-reference#getheaders" + - "getmnlistd": "/en/developer-reference#getmnlistd" - "headers": "/en/developer-reference#headers" - "inv": "/en/developer-reference#inv" - "mempool": "/en/developer-reference#mempool" - "merkleblock": "/en/developer-reference#merkleblock" + - "mnlistdiff": "/en/developer-reference#mnlistdiff" - "notfound": "/en/developer-reference#notfound" - "ping": "/en/developer-reference#ping" - "pong": "/en/developer-reference#pong" @@ -572,6 +574,7 @@ devsearches: - "mnw": "/en/developer-reference#mnw" - "mnwb": "/en/developer-reference#mnwb" - "ssc": "/en/developer-reference#ssc" + - "qfcommit": "/en/developer-reference#qfcommit" # Dash - governance - "govobj": "/en/developer-reference#govobj" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 3c55d81c..deab1b83 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -101,8 +101,8 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} * [GetBestBlockHash][rpc getbestblockhash]: {{summary_getBestBlockHash}} -* [GetBlock][rpc getblock]: {{summary_getBlock}} {{UPDATED0_13_0}} -* [GetBlockChainInfo][rpc getblockchaininfo]: {{summary_getBlockChainInfo}} {{DASH_UPDATED0_12_3}} {{UPDATED0_12_1}} +* [GetBlock][rpc getblock]: {{summary_getBlock}} {{DASH_UPDATED0_13_0}} +* [GetBlockChainInfo][rpc getblockchaininfo]: {{summary_getBlockChainInfo}} {{DASH_UPDATED0_13_0}} {{UPDATED0_12_1}} * [GetBlockCount][rpc getblockcount]: {{summary_getBlockCount}} * [GetBlockHash][rpc getblockhash]: {{summary_getBlockHash}} * [GetBlockHashes][rpc getblockhashes]: {{summary_getBlockHashes}} {{DASH_NEW0_12_1}} @@ -146,11 +146,11 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} -* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_12_3}} +* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_13_0}} * [GetPoolInfo][rpc getpoolinfo]: {{summary_getPoolInfo}} * [GetSuperblockBudget][rpc getsuperblockbudget]: {{summary_getSuperblockBudget}} -* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_12_3}} -* [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_12_3}} +* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_13_0}} +* [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_13_0}} * [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}} * [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_12_3}} * [MnSync][rpc mnsync]: {{summary_mnSync}} @@ -189,7 +189,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} -* [GetBlockTemplate][rpc getblocktemplate]: {{summary_getBlockTemplate}} {{DASH_UPDATED0_12_3}} +* [GetBlockTemplate][rpc getblocktemplate]: {{summary_getBlockTemplate}} {{DASH_UPDATED0_13_0}} * [GetMiningInfo][rpc getmininginfo]: {{summary_getMiningInfo}} {{UPDATED0_14_0}} * [GetNetworkHashPS][rpc getnetworkhashps]: {{summary_getNetworkHashPS}} * [PrioritiseTransaction][rpc prioritisetransaction]: {{summary_prioritiseTransaction}} @@ -228,7 +228,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [DecodeRawTransaction][rpc decoderawtransaction]: {{summary_decodeRawTransaction}} {{UPDATED0_13_0}} * [DecodeScript][rpc decodescript]: {{summary_decodeScript}} * [FundRawTransaction][rpc fundrawtransaction]: {{summary_fundRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}} -* [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}} +* [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{DASH_UPDATED0_13_0}} {{UPDATED0_14_0}} * [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} * [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}} @@ -267,16 +267,16 @@ default. * [BackupWallet][rpc backupwallet]: {{summary_backupWallet}} * [DumpHDInfo][rpc dumphdinfo]: {{summary_dumpHDInfo}} {{DASH_NEW0_12_2}} * [DumpPrivKey][rpc dumpprivkey]: {{summary_dumpPrivKey}} -* [DumpWallet][rpc dumpwallet]: {{summary_dumpWallet}} +* [DumpWallet][rpc dumpwallet]: {{summary_dumpWallet}} {{DASH_UPDATED0_13_0}} * [EncryptWallet][rpc encryptwallet]: {{summary_encryptWallet}} * [GetAccount][rpc getaccount]: {{summary_getAccount}} {{DEPRECATED}} * [GetAccountAddress][rpc getaccountaddress]: {{summary_getAccountAddress}} {{DEPRECATED}} * [GetAddressesByAccount][rpc getaddressesbyaccount]: {{summary_getAddressesByAccount}} {{DEPRECATED}} -* [GetBalance][rpc getbalance]: {{summary_getBalance}} +* [GetBalance][rpc getbalance]: {{summary_getBalance}} {{DASH_UPDATED0_13_0}} * [GetNewAddress][rpc getnewaddress]: {{summary_getNewAddress}} * [GetRawChangeAddress][rpc getrawchangeaddress]: {{summary_getRawChangeAddress}} -* [GetReceivedByAccount][rpc getreceivedbyaccount]: {{summary_getReceivedByAccount}} {{DEPRECATED}} -* [GetReceivedByAddress][rpc getreceivedbyaddress]: {{summary_getReceivedByAddress}} +* [GetReceivedByAccount][rpc getreceivedbyaccount]: {{summary_getReceivedByAccount}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}} +* [GetReceivedByAddress][rpc getreceivedbyaddress]: {{summary_getReceivedByAddress}} {{DASH_UPDATED0_13_0}} * [GetTransaction][rpc gettransaction]: {{summary_getTransaction}} {{UPDATED0_12_0}} * [GetUnconfirmedBalance][rpc getunconfirmedbalance]: {{summary_getUnconfirmedBalance}} * [GetWalletInfo][rpc getwalletinfo]: {{summary_getWalletInfo}} {{DASH_UPDATED0_12_3}} @@ -290,20 +290,20 @@ default. * [InstantSendToAddress][rpc instantsendtoaddress]: {{summary_instantSendToAddress}} * [KeePass][rpc keepass]: {{summary_keepass}} {{DARKCOIN_NEW0_11_0}} * [KeyPoolRefill][rpc keypoolrefill]: {{summary_keyPoolRefill}} -* [ListAccounts][rpc listaccounts]: {{summary_listAccounts}} {{DEPRECATED}} +* [ListAccounts][rpc listaccounts]: {{summary_listAccounts}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}} * [ListAddressBalances][rpc listaddressbalances]: {{summary_listAddressBalances}} {{DASH_NEW0_12_3}} * [ListAddressGroupings][rpc listaddressgroupings]: {{summary_listAddressGroupings}} * [ListLockUnspent][rpc listlockunspent]: {{summary_listLockUnspent}} -* [ListReceivedByAccount][rpc listreceivedbyaccount]: {{summary_listReceivedByAccount}} {{DEPRECATED}} -* [ListReceivedByAddress][rpc listreceivedbyaddress]: {{summary_listReceivedByAddress}} +* [ListReceivedByAccount][rpc listreceivedbyaccount]: {{summary_listReceivedByAccount}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}} +* [ListReceivedByAddress][rpc listreceivedbyaddress]: {{summary_listReceivedByAddress}} {{DASH_UPDATED0_13_0}} * [ListSinceBlock][rpc listsinceblock]: {{summary_listSinceBlock}} * [ListTransactions][rpc listtransactions]: {{summary_listTransactions}} {{UPDATED0_12_1}} * [ListUnspent][rpc listunspent]: {{summary_listUnspent}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} * [LockUnspent][rpc lockunspent]: {{summary_lockUnspent}} * [Move][rpc move]: {{summary_move}} {{DEPRECATED}} * [RemovePrunedFunds][rpc removeprunedfunds]: {{summary_removePrunedFunds}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} -* [SendFrom][rpc sendfrom]: {{summary_sendFrom}} {{DEPRECATED}} -* [SendMany][rpc sendmany]: {{summary_sendMany}} +* [SendFrom][rpc sendfrom]: {{summary_sendFrom}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}} +* [SendMany][rpc sendmany]: {{summary_sendMany}} {{DASH_UPDATED0_13_0}} * [SendToAddress][rpc sendtoaddress]: {{summary_sendToAddress}} * [SetAccount][rpc setaccount]: {{summary_setAccount}} {{DEPRECATED}} * [SetPrivateSendAmount][rpc setprivatesendamount]: {{summary_setPrivateSendAmount}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md index 2b11232a..7a59b0e6 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md @@ -13,10 +13,10 @@ http://opensource.org/licenses/MIT. The `getblock` RPC {{summary_getBlock}} -*Parameter #1---header hash* +*Parameter #1---block hash* {% itemplate ntpd1 %} -- n: "Header Hash" +- n: "Block Hash" t: "string (hex)" p: "Required
(exactly 1)" d: "The hash of the header of the block to get, encoded as hex in RPC byte order" @@ -26,14 +26,14 @@ The `getblock` RPC {{summary_getBlock}} *Parameter #2---whether to get JSON or hex output* {% itemplate ntpd1 %} -- n: "Format" - t: "boolean" - p: "Optional
(true or false)" - d: "Set to `false` to get the block in serialized block format; set to `true` (the default) to get the decoded block as a JSON object" +- n: "Verbosity" + t: "number (int)" + p: "Optional
(0 or 1)" + d: "Set to one of the following verbosity levels:
• `0` - Get the block in serialized block format;
• `1` - Get the decoded block as a JSON object (default)
• `2` - Get the decoded block as a JSON object with transaction details" {% enditemplate %} -*Result (if format was `false`)---a serialized block* +*Result (if verbosity was `0`)---a serialized block* {% itemplate ntpd1 %} - n: "`result`" @@ -43,7 +43,7 @@ The `getblock` RPC {{summary_getBlock}} {% enditemplate %} -*Result (if format was `true` or omitted)---a JSON block* +*Result (if verbosity was `1` or omitted)---a JSON block with transaction hashes* {% itemplate ntpd1 %} - n: "`result`" @@ -76,6 +76,11 @@ The `getblock` RPC {{summary_getBlock}} p: "Required
(exactly 1)" d: "This block's version number. See [block version numbers][section block versions]" +- n: "→
`versionHex`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "_Added in Bitcoin Core 0.13.0_

The block version formatted in hexadecimal" + - n: "→
`merkleroot`" t: "string (hex)" p: "Required
(exactly 1)" @@ -133,63 +138,253 @@ The `getblock` RPC {{summary_getBlock}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Result (if verbosity was `2`---a JSON block with full transaction details* + +{% assign DEPTH="→" %} +{% include helpers/vars.md %} + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object/null" + p: "Required
(exactly 1)" + d: "An object containing the requested block, or JSON `null` if an error occurred" + +- n: "→
`hash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of this block's block header encoded as hex in RPC byte order. This is the same as the hash provided in parameter #1" + +- n: "→
`confirmations`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The number of confirmations the transactions in this block have, starting at 1 when this block is at the tip of the best block chain. This score will be -1 if the the block is not part of the best block chain" + +- n: "→
`size`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The size of this block in serialized block format, counted in bytes" + +- n: "→
`height`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The height of this block on its block chain" + +- n: "→
`version`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "This block's version number. See [block version numbers][section block versions]" + +- n: "→
`versionHex`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "_Added in Bitcoin Core 0.13.0_

The block version formatted in hexadecimal" + +- n: "→
`merkleroot`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The merkle root for this block, encoded as hex in RPC byte order" + +- n: "→
`tx`" + t: "array" + p: "Required
(exactly 1)" + d: "An array containing the TXIDs of all transactions in this block. The transactions appear in the array in the same order they appear in the serialized block" + +{{INCLUDE_DECODE_RAW_TRANSACTION}} + +- n: "→
`time`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The value of the *time* field in the block header, indicating approximately when the block was created" + +- n: "→
`mediantime`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "*Added in Bitcoin Core 0.12.0*

The median block time in Unix epoch time" + +- n: "→
`nonce`" + t: "number (int)" + p: "Required
(exactly 1)" + d: "The nonce which was successful at turning this particular block into one that could be added to the best block chain" + +- n: "→
`bits`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The value of the *nBits* field in the block header, indicating the target threshold this block's header had to pass" + +- n: "→
`difficulty`" + t: "number (real)" + p: "Required
(exactly 1)" + d: "The estimated amount of work done to find this block relative to the estimated amount of work done to find block 0" + +- n: "→
`chainwork`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The estimated number of block header hashes miners had to check from the genesis block to this block, encoded as big-endian hex" + +- n: "→
`previousblockhash`" + t: "string (hex)" + p: "Optional
(0 or 1)" + d: "The hash of the header of the previous block, encoded as hex in RPC byte order. Not returned for genesis block" + +- n: "→
`nextblockhash`" + t: "string (hex)" + p: "Optional
(0 or 1)" + d: "The hash of the next block on the best block chain, if known, encoded as hex in RPC byte order" + +{% enditemplate %} + +*Example from Dash Core 0.13.0* Get a block in raw hex: {% highlight bash %} dash-cli -testnet getblock \ - 0000000037955fcc39af8b1ae75914ffb422313c0fca7eba96a1ac99c2e57f84 \ - false + 00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994 \ + 0 {% endhighlight %} Result (wrapped): {% highlight text %} -0100002011f5719a0a0c4881ff98b4a68c1c828dc3b10f5b51033f5f93d48dbf\ -000000004b8e38f197d6ee878e160d2bae3ce05ab898a6252458ec67ce770140\ -260397c4dd2ed659a1dd001d00636b5601010000000100000000000000000000\ -00000000000000000000000000000000000000000000ffffffff4b02041204dd\ -2ed65908fabe6d6d7445746d63506b62572d2d35584853467a765a6748696972\ -30657a3a6f6d656e010000000000000017fffff9020000000d2f6e6f64655374\ -726174756d2f00000000058028bb13010000001976a914bad55652dffb1af943\ -41015c94feea79793442fd88ac40e553b1020000001976a9142b7856de53d4c1\ -823090c98f8ad79862842c09b588ac4094dd89000000001976a914c2c29ebc78\ -7954ef99d01c5f79115abf7012fb8e88ac4094dd89000000001976a914d7b47d\ -4b40a23c389f5a17754d7f60f511c7d0ec88ac4094dd89000000001976a914dc\ -3e0793134b081145ec0c67a9c72a7b297df27c88ac00000000 +01000020d2fb795188566bd52deaa8e62de6f59c2833e842f9f6a48cea026689\ +04000000c7274c45e043e5953f2d62a1938818b513d8fd4c9f99c2c1541d1449\ +7f368602c2d8175c417b4d1d0007a96501010000000100000000000000000000\ +00000000000000000000000000000000000000000000ffffffff1202a91a0e2f\ +5032506f6f6c2d74444153482fffffffff0404e65a96010000001976a9144f79\ +c383bc5d3e9d4d81b98f87337cedfa78953688ac40c3609a010000001976a914\ +f627e64c0453f74d879f6e6a37709189af0298da88ac3cdd0504000000001976\ +a914badadfdebaa6d015a0299f23fbc1fcbdd72ba96f88ac0000000000000000\ +2a6a285fb560df18bc5145faa0860841df9daf30dc544c7b0cdb52ff28c06fa3\ +b33924000000000100000000000000 {% endhighlight %} Get the same block in JSON: {% highlight bash %} dash-cli -testnet getblock \ - 0000000037955fcc39af8b1ae75914ffb422313c0fca7eba96a1ac99c2e57f84 + 00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994 {% endhighlight %} Result: {% highlight json %} { - "hash": "0000000037955fcc39af8b1ae75914ffb422313c0fca7eba96a1ac99c2e57f84", - "confirmations": 3, - "size": 377, - "height": 4612, + "hash": "00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994", + "confirmations": 1, + "size": 303, + "height": 6825, "version": 536870913, - "merkleroot": "c4970326400177ce67ec582425a698b85ae03cae2b0d168e87eed697f1388e4b", + "versionHex": "20000001", + "merkleroot": "0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7", "tx": [ - "c4970326400177ce67ec582425a698b85ae03cae2b0d168e87eed697f1388e4b" + "0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7" ], - "time": 1507208925, - "mediantime": 1507208645, - "nonce": 1449878272, - "bits": "1d00dda1", - "difficulty": 1.155066358813473, - "chainwork": "000000000000000000000000000000000000000000000000000001c3e86f0f04", - "previousblockhash": "00000000bf8dd4935f3f03515b0fb1c38d821c8ca6b498ff81480c0a9a71f511", - "nextblockhash": "0000000028817c7fce55d802f3647640600535a983d00e16076f284ec6cb001b" + "time": 1545066690, + "mediantime": 1545065992, + "nonce": 1705576192, + "bits": "1d4d7b41", + "difficulty": 0.01290611629979371, + "chainwork": "00000000000000000000000000000000000000000000000000000647104aa574", + "previousblockhash": "00000004896602ea8ca4f6f942e833289cf5e62de6a8ea2dd56b56885179fbd2" } +{% endhighlight %} +Get the same block in JSON with transaction details: + +{% highlight bash %} +dash-cli -testnet getblock \ + 00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994 2 +{% endhighlight %} + +Result: + +{% highlight json %} +{ + "hash": "00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994", + "confirmations": 1, + "size": 303, + "height": 6825, + "version": 536870913, + "versionHex": "20000001", + "merkleroot": "0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7", + "tx": [ + { + "txid": "0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7", + "size": 222, + "version": 1, + "type": 0, + "locktime": 0, + "vin": [ + { + "coinbase": "02a91a0e2f5032506f6f6c2d74444153482f", + "sequence": 4294967295 + } + ], + "vout": [ + { + "value": 68.17506820, + "valueSat": 6817506820, + "n": 0, + "scriptPubKey": { + "asm": "OP_DUP OP_HASH160 4f79c383bc5d3e9d4d81b98f87337cedfa789536 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a9144f79c383bc5d3e9d4d81b98f87337cedfa78953688ac", + "reqSigs": 1, + "type": "pubkeyhash", + "addresses": [ + "yTZg6eePKxbJZyoaC93bVrTUq5vjhFrbst" + ] + } + }, + { + "value": 68.85000000, + "valueSat": 6885000000, + "n": 1, + "scriptPubKey": { + "asm": "OP_DUP OP_HASH160 f627e64c0453f74d879f6e6a37709189af0298da OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914f627e64c0453f74d879f6e6a37709189af0298da88ac", + "reqSigs": 1, + "type": "pubkeyhash", + "addresses": [ + "yikzsfaaQ2eZ1RpVUpf1EvedzgGdJD17dC" + ] + } + }, + { + "value": 0.67493180, + "valueSat": 67493180, + "n": 2, + "scriptPubKey": { + "asm": "OP_DUP OP_HASH160 badadfdebaa6d015a0299f23fbc1fcbdd72ba96f OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914badadfdebaa6d015a0299f23fbc1fcbdd72ba96f88ac", + "reqSigs": 1, + "type": "pubkeyhash", + "addresses": [ + "ydMSjYqwv4xTossPJ1xndTxwS1Hho9DmuM" + ] + } + }, + { + "value": 0.00000000, + "valueSat": 0, + "n": 3, + "scriptPubKey": { + "asm": "OP_RETURN 5fb560df18bc5145faa0860841df9daf30dc544c7b0cdb52ff28c06fa3b339240000000001000000", + "hex": "6a285fb560df18bc5145faa0860841df9daf30dc544c7b0cdb52ff28c06fa3b339240000000001000000", + "type": "nulldata" + } + } + ], + "instantlock": false + } + ], + "time": 1545066690, + "mediantime": 1545065992, + "nonce": 1705576192, + "bits": "1d4d7b41", + "difficulty": 0.01290611629979371, + "chainwork": "00000000000000000000000000000000000000000000000000000647104aa574", + "previousblockhash": "00000004896602ea8ca4f6f942e833289cf5e62de6a8ea2dd56b56885179fbd2" +} {% endhighlight %} *See also* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md index 4e90fc8b..1d4e1f12 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md @@ -165,6 +165,31 @@ The `getblockchaininfo` RPC {{summary_getBlockChainInfo}} p: "Optional
(0 or 1)" d: "The bit (0-28) in the block version field used to signal this softfork. Field is only shown when status is `started`" +- n: "→ → →
`period`" + t: "numeric
(int)" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.13.0*

The window size/period for this softfork. Field is only shown when status is `started`" + +- n: "→ → →
`threshold`" + t: "numeric
(int)" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.13.0*

The threshold for this softfork. Field is only shown when status is `started`" + +- n: "→ → →
`windowStart`" + t: "numeric
(int)" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.13.0*

The starting block height of the current window. Field is only shown when status is `started`" + +- n: "→ → →
`windowBlocks`" + t: "numeric
(int)" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.13.0*

The number of blocks in the current window that had the version bit set for this softfork. Field is only shown when status is `started`" + +- n: "→ → →
`windowProgress`" + t: "numeric
(int)" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.13.0*

The progress (between 0 and 1) for activation of this softfork. Field is only shown when status is `started`" + - n: "→ → →
`startTime`" t: "numeric
(int)" p: "Required
(exactly 1)" diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md index 19850f2e..b9cfe57b 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md @@ -116,6 +116,37 @@ The `gobject prepare` RPC prepares a governance object by signing and creating a {% enditemplate %} +*Parameter #5---use-IS* + +{% itemplate ntpd1 %} +- n: "`use-IS`" + t: "boolean" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.13.0*

InstantSend lock the collateral, only requiring one chain confirmation" + +{% enditemplate %} + +*Parameter #6---outputHash* + +{% itemplate ntpd1 %} +- n: "`outputHash`" + t: "string (hex)" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.13.0*

The single output to submit the proposal fee from" + +{% enditemplate %} + +*Parameter #7---outputIndex* + +{% itemplate ntpd1 %} +- n: "`outputIndex`" + t: "numeric" + p: "Optional
(0 or 1)" + d: "*Added in Dash Core 0.13.0*

The output index (required if the `outputHash` parameter is provided)" + +{% enditemplate %} + + *Result---collateral transaction ID* {% itemplate ntpd1 %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md index d51aa6ac..e31b0d28 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md @@ -40,7 +40,7 @@ Mode | Description `lastseen` | Print timestamp of when a masternode was last seen on the network `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) -`pubkey` | Print the masternode (not collateral) public key +`keyid` | Print the masternode (not collateral) key id `rank` | Print rank of a masternode based on current block `sentinel` | Print sentinel version of a masternode (can be additionally filtered, exact match) `status` | Print masternode status: PRE_ENABLED / ENABLED / EXPIRED / SENTINEL_PING_EXPIRED / NEW_START_REQUIRED / UPDATE_REQUIRED / POSE_BAN / OUTPOINT_SPENT (can be additionally filtered, partial match) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md index 71168134..99d59caa 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md @@ -415,7 +415,7 @@ Result: The `protx list` RPC returns a list of provider transactions. Lists all ProTxs in your wallet or on-chain, depending on the given type. If -`type` is not specified, it defaults to `wallet`. All types have the optional +`type` is not specified, it defaults to `registered`. All types have the optional argument `detailed` which if set to `true` will result in a detailed list being returned. If set to `false`, only the hashes of the ProTx will be returned. @@ -428,29 +428,6 @@ returned. If set to `false`, only the hashes of the ProTx will be returned. d: "The type of ProTxs to list:
`registered` - all ProTxs registered at height
`valid` - all active/valid ProTxs at height
`wallet` - all ProTxs found in the current wallet

Height defaults to current chain-tip if one is not provided" {% enditemplate %} -**List Type - `registered` or `valid`** - -*Parameter #2---height* - -{% itemplate ntpd1 %} -- n: "`height`" - t: "bool" - p: "Optional
(0 or 1)" - d: "List ProTxs from this height." -{% enditemplate %} - -*Parameter #3---detailed* - -{% itemplate ntpd1 %} -- n: "`detailed`" - t: "bool" - p: "Optional
(0 or 1)" - d: "If set to `false` (default), only ProTx hashes are returned. If set to `true`, a detailed list of ProTx details is returned." -{% enditemplate %} - - -**List Type - `wallet`** - *Parameter #2---detailed* {% itemplate ntpd1 %} @@ -460,6 +437,14 @@ returned. If set to `false`, only the hashes of the ProTx will be returned. d: "If set to `false` (default), only ProTx hashes are returned. If set to `true`, a detailed list of ProTx details is returned." {% enditemplate %} +*Parameter #3---height* + +{% itemplate ntpd1 %} +- n: "`height`" + t: "bool" + p: "Optional
(0 or 1)" + d: "List ProTxs from this height (default: current chain tip)." +{% enditemplate %} *Result (if `detailed` was `false`)---provider registration transaction hash* @@ -505,7 +490,7 @@ Result: List of ProTxs which are active/valid at the given chain height. {% highlight bash %} -dash-cli -testnet protx list valid 700 +dash-cli -testnet protx list valid false 700 {% endhighlight %} Result: @@ -518,7 +503,7 @@ Result: Detailed list of ProTxs which are active/valid at the given chain height. {% highlight bash %} -dash-cli -testnet protx list valid 700 true +dash-cli -testnet protx list valid true 700 {% endhighlight %} Result: diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index f6c30972..0d02cb7f 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -154,7 +154,7 @@ integer value used in P2P messages, and the actual Dash value. | 3 | 8 | 00.0100001 | | 4 | 16 | 00.00100001 | -Protocol version 70212 added a 5th denomination (0.001 DASH). +Protocol version 70213 added a 5th denomination (0.001 DASH). The denominations are structured to allow converting between denominations directly without requiring additional inputs or creating change (for example, @@ -162,14 +162,14 @@ directly without requiring additional inputs or creating change (for example, {% endautocrossref %} -[Example Testnet denomination creation transaction](https://testnet-insight.dashevo.org/insight/tx/702e77d19dcb0fbfe7d7daa5543bcfeacec0f552c49e398b27fb8141ae52d3e2) +[Example Testnet denomination creation transaction](https://testnet-insight.dashevo.org/insight/tx/f0174fc87d68a18617c2990df4d9455c0459c601d2d6473934357a66f9b8b70a) {% autocrossref %} **Creating Collaterals** PrivateSend collaterals are used to pay mixing fees, but are kept separate from -the denominations to maximize privacy. Since protocol version 70212, the minimum +the denominations to maximize privacy. Since protocol version 70213, the minimum collateral fee is 1/10 of the smallest denomination for all mixing sessions regardless of denomination. In Dash Core, collaterals are created with enough value to pay 4 collateral fees @@ -182,9 +182,9 @@ input from 1x the minimum collateral amount to the maximum collateral amount. {% endautocrossref %} -[Example Testnet collateral creation transaction](https://testnet-insight.dashevo.org/insight/tx/c2fc4af6a9940bf33446f3dddf6892c3dac4351fd0add89157666ca1019454ca) +[Example Testnet collateral creation transaction](https://testnet-insight.dashevo.org/insight/tx/8f9b15973983876f7ce4eb2c32b09690dfb0432d2caf6c6df516196a8d17689f) -[Example Testnet collateral payment transaction](https://testnet-insight.dashevo.org/insight/tx/70404808f1871e600cc8d30ad1eaf2bab63906dd1f3ae4a799b7182e1689721b) +[Example Testnet collateral payment transaction](https://testnet-insight.dashevo.org/insight/tx/de51e6f7c5ef75aad0dbb0a808ef4873d7ef6d67b25f3a658d5a241db4f3eeeb) #### PrivateSend Mixing @@ -251,6 +251,13 @@ mixing pool. * Inputs/outputs are ordered deterministically as defined by [BIP-69](https://github.com/quantumexplorer/bips/blob/master/bip-0069.mediawiki#Abstract) to avoid leaking any data ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend-server.cpp#L321-#L322)) * Clients must sign their inputs to the Final Transaction within 15 seconds or risk forfeiting the collateral they provided in the `dsi` message (Step 4) ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend.h#L23)) + _**Step 10 - Final Transaction broadcast**_ + + * Prior to protocol version 70213, masternodes could only send a single + un-mined `dstx` message at a time. As of protocol version 70213, up to 5 + (`MASTERNODE_MAX_MIXING_TXES`) un-mined `dstx` messages per masternode are + allowed. + _**General**_ With the exception of the `dsq` message and the `dstx` message (which need @@ -295,6 +302,20 @@ value of only 0.00000546 DASH as shown by the calculation below. {% autocrossref %} +Since DIP3 (introduced in Dash Core 0.13.0), masternode reward payments are based +on the deterministic masternode list information found on-chain in each block. +This results in a transparent, deterministic process that operates using the +[algorithm described in DIP3](https://github.com/dashpay/dips/blob/master/dip-0003.md#masternode-rewards). + +On-chain masternode lists reduce the complexity of reward payments, make +payments much more predictable, and also allow masternode payments to be +enforced for all blocks (enforcement for superblocks was not possible in the +previous system). + +**Historical Note** + +Prior to DIP3, the masternode payment process operated as described below. + Masternode payment uses a verifiable process to determine which masternode is paid in each block. When a new block is processed, a quorum of `MNPAYMENTS_SIGNATURES_TOTAL` (10) masternodes vote on the next masternode diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index f9e9d810..5cb55896 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -66,7 +66,7 @@ with the most recent versions listed first. (If you know of a protocol version that implemented a major change but which is not listed here, please [open an issue][docs issue].) -As of Dash Core 0.13.0.0, the most recent protocol version is 70212. +As of Dash Core 0.13.0.0, the most recent protocol version is 70213. | Version | Initial Release | Major Changes |---------|------------------------------------|-------------- @@ -174,6 +174,7 @@ The currently-available type identifiers are: | 18 | [`MSG_GOVERNANCE_OBJECT_VOTE`][msg_governance_object_vote]{:#term-msg_governance_object_vote}{:.term} | The hash is a Governance Object Vote. | 19 | [`MSG_MASTERNODE_VERIFY`][msg_masternode_verify]{:#term-msg_masternode_verify}{:.term} | The hash is a Masternode Verify. | 20 | [`MSG_CMPCT_BLOCK`][msg_cmpct_block]{:#term-msg_cmpct_block}{:.term} | The hash is of a block header; identical to `MSG_BLOCK`. When used in a `getdata` message, this indicates the response should be a `cmpctblock` message. **Only for use in `getdata` messages.** +| 21 | [`MSG_QUORUM_FINAL_COMMITMENT`][msg_quorum_final_commitment]{:#term-msg_quorum_final_commitment}{:.term} | The hash is a long-living masternode quorum final commitment. Type identifier zero and type identifiers greater than twenty are reserved for future implementations. Dash Core ignores all inventories with @@ -547,10 +548,12 @@ to the `getheaders` message will include as many as 2,000 block headers. {% autocrossref %} -*Added in protocol version 70212* +*Added in protocol version 70213* -The `getmnlistd` message is sent to request a full masternode list or an -update to a previously requested masternode list. +The `getmnlistd` message requests a `mnlistdiff` message that provides either: + + 1. A full masternode list (if `baseBlockHash` is all-zero) + 2. An update to a previously requested masternode list | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | @@ -882,7 +885,7 @@ template near the beginning of this subsection. {% autocrossref %} -*Added in protocol version 70212* +*Added in protocol version 70213* The `mnlistdiff` message is a reply to a `getmnlistd` message which requested either a full masternode list or a diff for a range of blocks. @@ -898,7 +901,19 @@ requested either a full masternode list or a diff for a range of blocks. | variable | merkleFlags | vector | Required | Merkle flag bits, packed per 8 in a byte, least significant bit first | variable | cbTx | CTransaction | Required | The fully serialized coinbase transaction of `blockHash` | variable | deletedMNs | vector | Required | A list of ProRegTx hashes for masternode which were deleted after `baseBlockHash` -| variable | mnList | vector | Required | The list of SML entries which were added or updated since `baseBlockHash` +| variable | mnList | vector | Required | The list of Simplified Masternode List (SML) entries which were added or updated since `baseBlockHash` + +Simplified Masternode List (SML) Entry + +| Bytes | Name | Data type | Description | +| ---------- | ----------- | -------- | -------- | +| 32 | proRegTxHash | uint256 | The hash of the ProRegTx that identifies the masternode +| 32 | confirmedHash | uint256 | The hash of the block at which the masternode got confirmed +| 16 | ipAddress | byte[] | IPv6 address in network byte order. Only IPv4 mapped addresses are allowed (to be extended in the future) +| 2 | port | uint_16 | Port (network byte order) +| 48 | pubKeyOperator | BLSPubKey | The operators public key +| 20 |keyIDVoting | CKeyID | The public key hash used for voting. +| 1 | isValid | bool | True if a masternode is not PoSe-banned The following annotated hexdump shows a `mnlistdiff` message. (The message header has been omitted.) @@ -936,6 +951,10 @@ Masternode List | Masternode 1 | | 01040eb32f760490054543356cff4638 | | 65633439dd073cffa570305eb086f70e ....... ProRegTx hash +| | +| | 000001ee5108348a2c59396da29dc576 +| | 9b2a9bb303d7577aee9cd95136c49b9b ....... Confirmed block hash +| | | | 00000000000000000000000000000000 ....... IP Address: ::ffff:0.0.0.0 | | 0000 ................................... Port: 0 | | @@ -943,10 +962,16 @@ Masternode List | | 0000000000000000000000000000000000000000 | | 0000000000000000 ....................... Operator public key (BLS) | | c2ae01fb4084cbc3bc31e7f59b36be228a320404 Voting pubkey hash (ECDSA) +| | +| | 0 ...................................... Valid (0 - No) | | Masternode 2 | | f7737beb39779971e9bc59632243e13f | | c5fc9ada93b69bf48c2d4c463296cd5a ....... ProRegTx hash +| | +| | 0000030f51f12e7069a7aa5f1bc9085d +| | db3fe368976296fd3b6d73fdaf898cc0 ....... Confirmed block hash +| | | | 000000000000000000000000cf9af40d ....... IP Address: ::ffff:207.154.244.13 | | 4e1f ................................... Port: 19999 | | @@ -954,6 +979,8 @@ Masternode List | | de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8 | | c22f4a914a6c5566 ....................... Operator public key (BLS) | | 43ce12751c4ba45dcdfe2c16cefd61461e17a54d Voting pubkey hash (ECDSA) +| | +| | 1 ...................................... Valid (1 - Yes) {% endhighlight %} {% endautocrossref %} @@ -1742,6 +1769,7 @@ Sporks (per [`src/spork.h`][spork.h]) | 10013 | 14 | `REQUIRE_SENTINEL_FLAG` | Only masternode's running sentinel will be paid | 10014 | 15 | `DETERMINISTIC_MNS_ENABLED` | Deterministic masternode lists are enabled | 10015 | 16 | `INSTANTSEND_AUTOLOCKS` | Automatic InstantSend for transactions with <=4 inputs (also eliminates the special InstantSend fee requirement for these transactions) +| 10016 | 17 | `SPORK_17_QUORUM_DKG_ENABLED` | Enable long-living masternode quorum (LLMQ) distributed key generation (DKG). When enabled, simple PoSe scoring and banning is active as well. | | | | | | | **Removed Sporks** | | _10012_ | _13_ | _`OLD_SUPERBLOCK_FLAG`_ | _Removed in Dash Core 0.12.3. No network function since block 614820_ @@ -1904,32 +1932,41 @@ is sent by masternodes to indicate approval of a transaction lock request | 32 | txHash | uint256 | Required | TXID of the transaction to lock | 36 | outPoint | outpoint | Required | The unspent outpoint to lock in this transaction | 36 | outpointMasternode | outpoint | Required | The outpoint of the masternode which is signing the vote -| 66* | vchMasternodeSignature | char[] | Required | 66 bytes in most cases. Length (1 byte) + Signature (65 bytes) +| 32 | quorumModifierHash | uint256 | Required | *Added in protocol version 70213. Only present when Spork 15 is active.*

+| 32 | masternodeProTxHash | uint256 | Required | *Added in protocol version 70213. Only present when Spork 15 is active.*

The proTxHash of the DIP3 masternode which is signing the vote +| 96 | vchMasternodeSignature | char[] | Required | Masternode BLS signature The following annotated hexdump shows a `txlvote` message. (The message header has been omitted.) {% highlight text %} -3c121fb4a12b2f715e2f70a9fa282115 -be197dde14073959fb2a2b8e95a7418f ..... TXID +84a27bb879f316482598fe65b0b51544 +e85490d85fc36af1c293e186da373c02 ..... TXID Outpoint to lock -| bb607995757c6a6efd6429215dcb3688 -| b252d34d835c81fed310fd905f487020 ... Outpoint TXID -| 01000000 ........................... Outpoint index number: 1 - -Masternode Outpoint -| de9029c7e9b7eb7cd11f27ba670b2349 -| 0c3f0717b86ed949c316874589405cd2 ... Outpoint TXID +| 4c1e6318bab4f9284d3bc0e49ec7fe76 +| 1e9c914b8ea0bcac4563005daa451221 ... Outpoint TXID | 00000000 ........................... Outpoint index number: 0 -41 ................................... Signature length: 65 +Masternode Outpoint +| 5d02f07c7318411e41fdd4be9f1e5ece +| 16d680cfe318306087edc8fb205e507b ... Outpoint TXID +| 01000000 ........................... Outpoint index number: 1 -1ccc39ffb9c62111a8c82823d3ce61d2 -380db4e8f76ec238d568908f37558a90 -4e79566a53663de12ec2be1183c87d61 -250e8ebd57be171be1d4b5e89b69c263 -88 ................................... Masternode Signature +b62cb5007704d2db8595d5b31cfb7cb0 +8d7e530c16a7597e1db4430a00000000 ..... Quorum Modifier hash + +569abbea4ab45f36dd059c44f1dc0804 +f3f13071379c2f418d3637fb548c4159 ..... Masternode ProRegTx hash + +60 ................................... Signature length: 96 + +0b0b97ec14fbc1f12566c3a90ed113e4 +e9c5ee6cdcf2fe2171e4b5f387286146 +a0632a250d64ea507ce5e1d1f1983aae +0b70e568ad2856a0cc13008001c6d0f3 +5bdeb380f6aba0c54663a3b5e2d86d44 +305c2e5d855c72588ffb0e8e2a36482c ..... Masternode BLS Signature {% endhighlight %} {% endautocrossref %} @@ -2831,6 +2868,9 @@ ecd50100 ................................... Dashd Deamon Version (12.3.0) {% autocrossref %} +![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated +following activation of DIP3 which implements deterministic masternode lists. + The `mnv` message is used by masternodes to verify each other. Several `mnv` messages are exchanged in the process. This results in the IP address of masternode 1 being validated as of the provided block height. @@ -3031,8 +3071,8 @@ Sync Item IDs | ID | Description | Response To |------|--------------|--------------- -| 2 | MASTERNODE_SYNC_LIST | `dseg` message -| 3 | MASTERNODE_SYNC_MNW | `mnget` message +| 2 | MASTERNODE_SYNC_LIST | _Deprecated following activation of DIP3 in Dash Core 0.13.0_

`dseg` message +| 3 | MASTERNODE_SYNC_MNW | _Deprecated following activation of DIP3 in Dash Core 0.13.0_

`mnget` message | 10 | MASTERNODE_SYNC_GOVOBJ | `govsync` message | 11 | MASTERNODE_SYNC_GOVOBJ_VOTE | `govsync` message with non-zero hash @@ -3046,6 +3086,49 @@ bf110000 ................................... Count: 4543 {% endautocrossref %} +#### qfcommit +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +The `qfcommit` message is used to finalize a long-living masternode quorum setup +by aggregating the information necessary to mine the on-chain QcTx +special transaction. The message contains all the necessary information required +to validate the long-living masternode quorum's signing results. + +It is possible to receive multiple valide final commitments for the same DKG +session. These should only differ in the number of signers, which can be ignored +as long as there are at least `quorumThreshold` number of signers. The set of +valid members for these final commitments should always be the same, as each +member only creates a single premature commitment. This means that only one set +of valid members (and thus only one quorum verification vector and quorum public +key) can gain a majority. If the threshold is not reached, there will be no +valid final commitment. + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 2 | version | uint16_t | Version of the final commitment message +| 1 | llmqType | uint8_t | The type of LLMQ +| 32 | quorumHash | uint256 | The quorum identifier +| 1-9 | signersSize | compactSize uint | Bit size of the signers bitvector +| (bitSize + 7) / 8 | signers | byte[] | Bitset representing the aggregated signers of this final commitment +| 1-9 | validMembersSize | compactSize uint | Bit size of the `validMembers` bitvector +| (bitSize + 7) / 8 | validMembers | byte[] | Bitset of valid members in this commitment +| 48 | quorumPublicKey | BLSPubKey | The quorum public key +| 32 | quorumVvecHash | uint256 | The hash of the quorum verification vector +| 96 | quorumSig | BLSSig | Recovered threshold signature +| 96 | sig | BLSSig | Aggregated BLS signatures from all included commitments + + +{% endautocrossref %} ### Governance Messages {% include helpers/subhead-links.md %} diff --git a/_includes/devdoc/ref_transactions.md b/_includes/devdoc/ref_transactions.md index 3fb73c12..75d5be6d 100644 --- a/_includes/devdoc/ref_transactions.md +++ b/_includes/devdoc/ref_transactions.md @@ -414,7 +414,9 @@ flexibility to expand beyond the financial uses of classical transactions. DIP2 transactions modified classical transactions by: 1. Splitting the 32 bit `version` field into two 16 bit fields (`version` and `type`) -2. Adding support for a generic extra payload following the `lock_time` field +2. Adding support for a generic extra payload following the `lock_time` field. The + maximum allowed size for a transaction version 3 extra payload is 10000 bytes + (`MAX_TX_EXTRA_PAYLOAD`). Classical (financial) transactions have a `type` of 0 while special transactions have a `type` defined in the DIP describing them. A list of current special @@ -427,7 +429,7 @@ transaction types is maintained in the [DIP repository](https://github.com/dashp {% autocrossref %} -*Added in protocol version 70212 of Dash Core as described by DIP3* +*Added in protocol version 70213 of Dash Core as described by DIP3* The Masternode Registration (ProRegTx) special transaction is used to join the masternode list by proving ownership of the 1000 DASH necessary to create a @@ -585,7 +587,7 @@ ProRegTx Payload {% autocrossref %} -*Added in protocol version 70212 of Dash Core as described by DIP3* +*Added in protocol version 70213 of Dash Core as described by DIP3* The Masternode Provider Update Service (ProUpServTx) special transaction is used to update the IP Address and port of a masternode. If a non-zero operatorReward @@ -658,7 +660,7 @@ ProUpServTx Payload {% autocrossref %} -*Added in protocol version 70212 of Dash Core as described by DIP3* +*Added in protocol version 70213 of Dash Core as described by DIP3* The Masternode Provider Update Registrar (ProUpRegTx) special transaction is used by a masternode owner to update masternode metadata (e.g. operator/voting key @@ -739,7 +741,7 @@ ProRegTx Payload {% autocrossref %} -*Added in protocol version 70212 of Dash Core as described by DIP3* +*Added in protocol version 70213 of Dash Core as described by DIP3* The Masternode Operator Revocation (ProUpRevTx) special transaction allows an operator to revoke their key in case of compromise or if they wish to terminate @@ -801,7 +803,7 @@ ProUpRevTx Payload {% autocrossref %} -*Added in protocol version 70212 of Dash Core as described by DIP4* +*Added in protocol version 70213 of Dash Core as described by DIP4* The Coinbase (CbTx) special transaction adds information to the block’s coinbase transaction that enables verification of the deterministic masternode list without @@ -867,48 +869,95 @@ Coinbase Transaction Payload {% endautocrossref %} -#### Quorum Commitment +#### QcTx {% include helpers/subhead-links.md %} {% autocrossref %} -Quorum Commitment +*Added in protocol version 70213 of Dash Core as described by DIP6* -{% endautocrossref %} +The Quorum Commitment (QcTx) special transaction adds the best final commitment from a +Long-Living Masternode Quorum (LLMQ) Distributed Key Generation (DKG) session to +the chain. This special transaction has no inputs and no outputs and thus also +pays no fee. -#### SubTxRegister -{% include helpers/subhead-links.md %} +Since this special transaction pays no fees, it is mandatory by consensus rules +to ensure that miners include it. Exactly one quorum commitment transaction MUST +be included in every block while in the mining phase of the LLMQ process until a +valid commitment is present in a block. -{% autocrossref %} +If a DKG failed or a miner did not receive a final commitment in-time, a null +commitment has to be included in the special transaction payload. A null +commitment must have the `signers` and `validMembers` bitsets set to the +`quorumSize` and all bits set to zero. All other fields must be set to the null +representation of the field’s types. -Register Blockchain User +The special transaction type used for Quorum Commitment Transactions is 6 and +the extra payload consists of the following data: -{% endautocrossref %} +| Bytes | Name | Data type | Description | +| ---------- | ----------- | -------- | -------- | +| 2 | version | uint_16 | Quorum Commitment version number. Currently set to 1. +| 4 | height | uint32_t | Height of the block +| Variable | commitment | qfcommit | The payload of the `qfcommit` message -#### SubTxTopup -{% include helpers/subhead-links.md %} +The following annotated hexdump shows a QcTx transaction. -{% autocrossref %} + -Topup Blockchain User Credit +An itemized quorum commitment transaction: -{% endautocrossref %} +{% highlight text %} +0300 ....................................... Version (3) +0600 ....................................... Type (6 - Quorum Commitment) -#### SubTxResetKey -{% include helpers/subhead-links.md %} +00 ......................................... Number of inputs +00 ......................................... Number of outputs -{% autocrossref %} +00000000 ................................... Locktime -Change Blockchain User Public Key +fd4901 ..................................... Extra payload size (329) -{% endautocrossref %} - -#### SubTxCloseAccount -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -Close Blockchain User Account +Quorum Commitment Transaction Payload +| 0100 ..................................... Version (1) +| +| 921d0000 ................................. Block height: 7570 +| +| Payload from the qfcommit message +| | 01 ..................................... LLMQ Type (1) +| | +| | 8d80561839648b844ade10b6e81069fa +| | 6c4bde6166dd59242be3487a00000000 ....... Quorum hash +| | +| | 32 ..................................... Number of signers (50) +| | ff7effffbebe02 ......................... Aggregrated signers bitvector +| | +| | 32 ..................................... Number of valid members (50) +| | ff7effffbebe02 ......................... Valid members bitvector +| | +| | 81d0717b893b557f54daacbd060bcffa +| | 2dc341175d0b89c7974dc57ef482ae27 +| | e10fb273eda534596993999950817cd4 ....... Quorum public key (BLS) +| | +| | ed93bc215d15350bd7030be811cf1df2 +| | c114f6b34df9bd4095161af93608ed90 ....... Quorum verification vector hash +| | +| | Quorum threshold signature (BLS) +| | 8d2bbb0b9c5b8626eb852ea0ff4f2509 +| | 19becc2d24653910fb8e11cf5573062f +| | 9f64c03a5031f1d462163ce98e8bf78a +| | 1470f7074a8e6fe23ccb53d73635ecd5 +| | ad71b26a938fc21638bcae7d272af9fa +| | 919f296a17e77191e3d4c708bc6e1b9a ....... BLS Signatures (96 bytes) +| | +| | Aggregated signatures from all commitments (BLS) +| | 19e702ff84ff851312cceba1de528ee7 +| | ffe33647ae28ef895b35558512901394 +| | b430c804c7c42494a3312545606b5598 +| | 0480985494fa2c49f50c65d47570380f +| | 13c2851ce33d8584b64e8b659146d732 +| | 67d821c78d09ba7caea3d03641f78c7a ....... BLS Signature (96 bytes) +{% endhighlight %} {% endautocrossref %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 2537d83a..de5e9fcc 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -71,13 +71,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain GetBlock Y - + Updated in 0.13.0.0 Blockchain GetBlockChainInfo Y - Updated in 0.12.3.0 + Updated in 0.13.0.0 Blockchain @@ -245,7 +245,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash GObject Y - Updated in 0.12.3.0 + Updated in 0.13.0.0 Dash diff --git a/_includes/references.md b/_includes/references.md index fd28e792..c1484610 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -33,7 +33,7 @@ http://opensource.org/licenses/MIT. [msg_governance_object_vote]: /en/developer-reference#term-msg_governance_object_vote "Governance object vote data type identifier of an inventory on the P2P network" [msg_masternode_verify]: /en/developer-reference#term-msg_masternode_verify "Masternode Verify data type identifier of an inventory on the P2P network" [msg_cmpct_block]: /en/developer-reference#term-msg_cmpct_block "An alternative to the block header hash data type identifier of an inventory on the P2P network used to request a compact block" - +[msg_quorum_final_commitment]: /en/developer-reference#term-msg_quorum_final_commitment "The Long-Living Masternode Quorum Final Commitment data type identifier of an inventory on the P2P network" [network]: /en/developer-guide#term-network "The Dash P2P network which broadcasts transactions and blocks" [op_checkmultisig]: /en/developer-reference#term-op-checkmultisig "Opcode which returns true if one or more provided signatures (m) sign the correct parts of a transaction and match one or more provided public keys (n)" [op_checksig]: /en/developer-reference#term-op-checksig "Opcode which returns true if a signature signs the correct parts of a transaction and matches a provided public key" @@ -234,6 +234,7 @@ http://opensource.org/licenses/MIT. [getblocktxn message]: /en/developer-reference#getblocktxn "A P2P protocol message used to request transactions from a compact block" [getdata message]: /en/developer-reference#getdata "A P2P protocol message used to request one or more transactions, blocks, or merkle blocks" [getheaders message]: /en/developer-reference#getheaders "A P2P protocol message used to request a range of block headers" +[getmnlistd message]: /en/developer-reference#getmnlistd "A P2P protool message used to request a simplified masternode list" [getsporks message]: /en/developer-reference#getsporks "A P2P network message used to request the status of sporks" [govobj message]: /en/developer-reference#govobj "A P2P network message used to send governance objects (proposals, etc.)" [govobjvote message]: /en/developer-reference#govobjvote "A P2P network message used to send governance object votes" @@ -245,12 +246,14 @@ http://opensource.org/licenses/MIT. [merkleblock message]: /en/developer-reference#merkleblock "A P2P protocol message used to request a filtered block useful for SPV proofs" [mnb message]: /en/developer-reference#mnb "A P2P protocol message used to describe the masternode entry and how to validate messages from it" [mnget message]: /en/developer-reference#mnget "A P2P protocol message that requests masternode payment sync" +[mnlistdiff message]: /en/developer-reference#mnlistdiff "A P2P protocol message used to send a diff of simplified masternode list entries between two blocks" [mnp message]: /en/developer-reference#mnp "A P2P protocol message sent by masternodes every few minutes to ping the network with a message that propagates across the whole network" [mnv message]: /en/developer-reference#mnv "A P2P protocol message used by masternodes to verify other masternode's IP Addresses." [mnw message]: /en/developer-reference#mnw "A P2P protocol message used to pick the next winning masternode (payee)" [notfound message]: /en/developer-reference#notfound "A P2P protocol message sent to indicate that the requested data was not available" [ping message]: /en/developer-reference#ping "A P2P network message used to see if the remote host is still connected" [pong message]: /en/developer-reference#pong "A P2P network message used to reply to a P2P network ping message" +[qfcommit message]: /en/developer-reference#qfcommit "A P2P network message used to finalize the members of a long-living masternode quorum (LLMQ)" [reject message]: /en/developer-reference#reject "A P2P network message used to indicate a previously-received message was rejected for some reason" [sendcmpct message]: /en/developer-reference#sendcmpct "A P2P network message used to request new blocks be announced as compact blocks" [sendheaders message]: /en/developer-reference#sendheaders "A P2P network message used to request new blocks be announced through headers messages rather than inv messages" @@ -458,6 +461,7 @@ http://opensource.org/licenses/MIT. [proupservtx special tx]: /en/developer-reference#proupservtx [python-bitcoinlib]: https://github.com/petertodd/python-bitcoinlib [python-blkmaker]: https://gitorious.org/bitcoin/python-blkmaker +[quorum commitment special tx]: /en/developer-reference#qctx [Satoshi Nakamoto]: https://en.bitcoin.it/wiki/Satoshi_Nakamoto [setup tor]: https://www.torproject.org/ [SHA256]: https://en.wikipedia.org/wiki/SHA-2 From 8bde4abc2177d0ee6418a9d699b7642c9fb63a20 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 26 Dec 2018 11:42:00 -0500 Subject: [PATCH 040/117] Config - Travis deploy (#96) Remove temporary fix for dpl 1.9 issue (#44 - related to (travis-ci/travis-ci#9312)) --- .travis.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index d56d2386..7d8b7cc3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,10 +48,6 @@ deploy: # # DEPLOY_SOURCE_BRANCH: Branch to deploy from - # Temp. fix for DPL 1.9 issue (https://github.com/travis-ci/travis-ci/issues/9312) - edge: - branch: v1.8.47 - provider: pages skip-cleanup: true github-token: $GITHUB_TOKEN # Set in travis-ci.org dashboard, marked secure From c779eef1e694287ce744ebb503ee9a48981994a6 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 26 Dec 2018 14:06:24 -0500 Subject: [PATCH 041/117] [P2P] - Masternode BLS Sigs (#97) * P2P - Remove dsa and dsq input count Related to dashpay/dash#2075, dashpay/dash#2259, and dashpay/dash#2318 * P2P - Update dsq and dstx to include BLS signature Related to dashpay/dash#2352 * P2P - Update govobj and govobjvote to include BLS signature Related to dashpay/dash#2352 --- _includes/devdoc/ref_p2p_networking.md | 132 +++++++++++++------------ 1 file changed, 67 insertions(+), 65 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 5cb55896..ed57c136 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -2011,7 +2011,6 @@ queue the remainder of the time. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | | 4 | nDenom | int | Required | Denomination that will be exclusively used when submitting inputs into the pool -| 4 | nInputCount | int | Required | *Added in protocol version 70209. Only present when Spork 6 is active.*

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

Number of inputs required to participate in this mixing session | 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is hosting this session | 8 | nTime | int64_t | Required | Time this `dsq` message was created | 1 | fReady | bool | Required | Indicates if the mixing pool is ready to be executed -| 66* | vchSig | char[] | Required | Signature of this message by masternode verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes)) +| 97 | vchSig | char[] | Required | _ECDSA signature (65 bytes) prior to DIP3 activation_

BLS Signature of this message by masternode verifiable via pubKeyMasternode (Length (1 byte) + Signature (96 bytes)) Denominations (per [`src/privatesend.cpp`][privatesend denominations]) @@ -2358,32 +2354,32 @@ Denominations (per [`src/privatesend.cpp`][privatesend denominations]) | 2 | 1 Dash | 4 | 0.1 Dash | 8 | 0.01 Dash +| 16 | 0.001 Dash The following annotated hexdump shows a `dsq` message. (The message header has been omitted.) Note that the 'Required inputs' bytes will only be preset if Spork 6 is active and protocol version => 70209. {% highlight text %} -08000000 ............................. Denomination: 0.01 Dash (8) - -03000000 ............................. Required input(s): 3 +01000000 ............................. Denomination: 10 Dash (1) Masternode Outpoint -| aeed0e77c6db30a616507a37a129bc88 -| 1811f08afc51dd485d5322f36c1f04c5 ... Outpoint TXID -| 01000000 ........................... Outpoint index number: 1 +| a383a2489aedccfab4bb41368d1c8ee3 +| 10d9ee90cb3d181880ce4e0cdb36ecb7 +| 0f000000 ........................... Outpoint index number: 15 -1318a85900000000 ..................... Create Time: 2017-08-31 14:07:15 UTC +10b4235c00000000 ..................... Create Time: 2018-12-26 17:02:08 UTC 00 ................................... Ready: 0 -41 ................................... Signature length: 65 +60 ................................... Signature length: 96 -1bd74386ea4e111197f1b4b4660c1415 -13486745ca10ba0632426ed3a644d941 -047e43c988680904d4a4fcf551d8813c -ec12d47ae9b00e870db294cd66708ab7 -dc ................................... Masternode Signature +0409a1349869a02e90e6e1f6d92bf995 +27a72542fed987f6d2719596973d89e6 +74605a3585b1335650f1555f7576061d +110fb72b3308e378ac8e8fbebeeffdb4 +9b2a6562ad965bb3c3fd3f8e68483fdb +0d1401e2264071a74fc01d51e943ce9f ..... Masternode BLS Signature {% endhighlight %} {% endautocrossref %} @@ -2556,7 +2552,7 @@ fees (to provide security in mixing). | ---------- | ----------- | --------- | -------- | -------- | | # | tx | `tx` message | Required | The transaction | 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message -| 66 | vchSig | char[] | Required | Signature of this message by masternode verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes)) +| 97 | vchSig | char[] | Required | _ECDSA signature (65 bytes) prior to DIP3 activation_

BLS Signature of this message by masternode verifiable via pubKeyMasternode (Length (1 byte) + Signature (96 bytes)) | 8 | sigTime | int64_t | Require | Time this message was signed @@ -2565,9 +2561,10 @@ message header has been omitted.) {% highlight text %} Transaction Message -| 01000000 ................................. Version: 1 +| 0200 ....................................... Version: 2 +| 0000 ....................................... Type: 0 (Classical Tx) | -| 0b ......................................... Number of inputs: 11 +| 05 ......................................... Number of inputs: 5 | | Transaction input #1 | | @@ -2575,51 +2572,54 @@ Transaction Message | | 74ed8307a566731119b1782362af43ad ......... Outpoint TXID | | 05000000 ................................. Outpoint index number: 5 | | -| | 6a ....................................... Bytes in sig. script: 106 -| | 47304402204ed56f525ae6df707f9cbe -| | 55c78d82bbcc02daa1fb27b0bf54588a -| | 446dcc804102200c4e03c4a2b9a90aef -| | 9f01de7c28812a0e8b280e6c153b0bd8 -| | 26d2ff660102e18121028c96903b2709 -| | 7b331d55abd1f42d2ff6cc7c784ab839 -| | 7c232b73a34a149a348e ..................... Secp256k1 signature +| | 6b ....................................... Bytes in sig. script: 107 +| | 483045022100b1243fcba562a0f1d7c4 +| | cc3b320645dfa96c6412f368ccdbc1b7 +| | acb6b0aa1db502201606c81b0d79f52f +| | 47bcb071b64c37f72dd1378efa67a2de +| | dd86c44d393668fa812102d6ff581270 +| | 632f5e972b0418ee871867b5c04b6eae +| | 3458ad135ad8f1daaa4fc2 ................... Secp256k1 signature | | | | ffffffff ................................. Sequence number: UINT32_MAX | -| [...] ...................................... 10 more transaction inputs omitted +| [...] ...................................... 4 more transaction inputs omitted | | -| 0b ......................................... Number of outputs: 11 +| 05 ......................................... Number of outputs: 5 | | Transaction output #1 -| | e8e4f50500000000 ......................... Duffs (1.00001000 Dash) +| | 10f19a3b00000000 ......................... Duffs (10.0001000 Dash) | | | | 19 ....................................... Bytes in pubkey script: 25 | | | 76 ..................................... OP_DUP | | | a9 ..................................... OP_HASH160 | | | 14 ..................................... Push 20 bytes as data -| | | | 0febbeaa8818b2c2f80fb8c98f90bdae -| | | | 41fe5c26 ............................. PubKey hash +| | | | 3eb7ae776b096231de9eca42dd57a677 +| | | | d3b05452 ............................. PubKey hash | | | 88 ..................................... OP_EQUALVERIFY | | | ac ..................................... OP_CHECKSIG | -| [...] ...................................... 10 more transaction outputs omitted +| [...] ...................................... 4 more transaction outputs omitted | | | 00000000 ................................... locktime: 0 (a block height) Masternode Unspent Outpoint -| 387d522def2abfb9bdd15be899f074f3 -| 49b414cef078ec642e1d14b42996b9fc ......... Outpoint TXID -| 00000000 ................................. Outpoint index number: 0 +| ccfbe4e7c220264cb0a8bfa5e91c6957 +| 33c255384790e80e891a0d8f56a59d9e ......... Outpoint TXID +| 01000000 ................................. Outpoint index number: 1 -1b6fb8f90f0df6e502bc10aab9604e49 -2d14214e05331c9761c834d55c7536e3 -3369e5909479ea88116aad7ea64587d9 -59364326c97d7f249f7b9293e120a5b6 -1c ................................... Masternode Signature +60 ......................................... Signature length: 96 -ece5a95900000000 ..................... Signature Timestamp +94c8e427f448789f58cda17445e76c64 +d0efa7c089addcb378f9b8d04b72f499 +a4e8e616b5011886b9cffcce29e17fc1 +10ad8609c3ee1a3207b882e7ff58400f +42d6e6544108b349da2cc5e716a5f266 +4a2dc96b0f080effd5349f2ae06ac234 .......... Masternode Signature + +59b4235c00000000 .......................... Sig Time: 2018-12-26 17:03:21 UTC {% endhighlight %} {% endautocrossref %} @@ -3161,7 +3161,7 @@ contract, or setting. Masternodes ignore this request if they are not fully sync | 0-16384 | strData | string | Required | Data field - can be used for anything (leading varint indicates size of data) | 4 | nObjectType | int | Required | Type of governance object:
• `0` - Unknown
• `1` - Proposal
• `2` - Trigger
• `3` - Watchdog | 36 | masternodeOutPoint | outPoint | Required* | The unspent outpoint of the masternode (holding 1000 DASH) which is signing this object.

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

Not required for proposals - they will have a length of 0x00 and no Signature. +| 97 | vchSig | char[] | Required* | _ECDSA signature (65 bytes) prior to DIP3 activation_

BLS Signature of the masternode (Length (1 byte) + Signature (96 bytes))

Not required for proposals - they will have a length of 0x00 and no Signature. Governance Object Types (defined by src/governance-object.h) @@ -3224,13 +3224,14 @@ Masternode Unspent Outpoint | fa7b6e26e25896d8127332bba2419e97 ... Outpoint TXID | 00000000 ........................... Outpoint index number: 0 -41 ................................... Signature length: 65 +60 ................................... Signature length: 96 -1ce3b782f66be8ae9fc4158680128864 -341202b6006384083ab2d9cfa73795e2 -6000668e84af4ef6a284a52b53843524 -72037d51bd9079ffd5c087d9632865ee -75 ................................... Masternode Signature +06516fa3b38d29fca6194e5d2c929666 +d59d2d105bbbc30a1e5d144e708a610a +2e0ab3c759988b13ff098ab3dbd4e01d +129827ef1e1996c211d6d5ecd5199f60 +cf028b1cdb2f7240e33981b16d1270e9 +d289fca20905fd453620238a505582fa ..... Masternode BLS Signature {% endhighlight %} {% endautocrossref %} @@ -3271,7 +3272,7 @@ the node being banned. | 4 | nVoteOutcome | int | Required | None (0), Yes (1), No (2), Abstain (3) | 4 | nVoteSignal | int | Required | None (0), Funding (1), Valid (2), Delete (3), Endorsed (4) | 8 | nTime | int64_t | Required | Time the vote was created -| 66* | vchSig | char[] | Required | Signature of the masternode (66 bytes in most cases. Length (1 byte) + Signature (65 bytes)) +| 97 | vchSig | char[] | Required | _ECDSA signature (65 bytes) prior to DIP3 activation_

BLS Signature of the masternode (Length (1 byte) + Signature (96 bytes)) Governance Object Vote Signals (defined by src/governance-object.h) @@ -3287,22 +3288,23 @@ message header has been omitted.) {% highlight text %} Masternode Unspent Outpoint -| 57566a0ef85e6cac3415ced67b0b07e1 -| 781bafb853650d7c9d56d8bc132cc3b4 ... Outpoint TXID -| 00000000 ........................... Outpoint index number: 0 +| 9425afd65ccce1d655d4dd461b8523b8 +| 2577a8009c25604c65f3e78ea71d65df ... Outpoint TXID +| 01000000 ........................... Outpoint index number: 1 -ad9579d5c181eee904156df1c88b050f -b8b4d39e5fda71f015996dbf14a51bff...... Parent Hash (0 = root) +bc1bb26088161ff07dc09d873faa5573 +9a2fd53121d315b2942f3b9db36cb475...... Parent Hash (0 = root) 01000000 ............................. Vote Outcome: VOTE_OUTCOME_NONE (1) -02000000 ............................. Vote Signal: VOTE_SIGNAL_VALID (2) -b517a85900000000 ..................... Vote Create Timestamp: 2017-08-31 14:05:41 UTC +03000000 ............................. Vote Signal: VOTE_SIGNAL_DELETE (3) +ec3d235c00000000 ..................... Vote Create Time: 2018-12-26 08:38:04 UTC -41 ................................... Signature length: 65 -1b049113a81fe913f061ad295561d267 -00b8135a021ab0356a1e89b18d663d0b -dc45e9c09ee0427223e332b52e8d709e -6d64e86b6435d7bdf207d8f23b6ae0db -6f ................................... Masternode Signature +60 ................................... Signature length: 96 +06516fa3b38d29fca6194e5d2c929666 +d59d2d105bbbc30a1e5d144e708a610a +2e0ab3c759988b13ff098ab3dbd4e01d +129827ef1e1996c211d6d5ecd5199f60 +cf028b1cdb2f7240e33981b16d1270e9 +d289fca20905fd453620238a505582fa ..... Masternode BLS Signature {% endhighlight %} {% endautocrossref %} From 7ce4a78ca319b293edec5f6e96aa2ab0ed379da1 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 27 Dec 2018 13:00:03 -0500 Subject: [PATCH 042/117] V0.13.0 MN Sync updates (#98) * Guide - Update MN sync info for DIP3 * Guide - Add deprecation warning for ongoing MN sync * Guide - Update heading formatting * Guide - Update MN sync images Add DIP3 initial sync Show DIP3-deprecated parts of ongoing sync * Guide - Update MN sync status table --- _includes/devdoc/guide_dash_features.md | 57 +++- img/dev/en-masternode-sync-initial-dip3.png | Bin 0 -> 17838 bytes img/dev/en-masternode-sync-initial-dip3.svg | 139 +++++++++ img/dev/en-masternode-sync-ongoing.png | Bin 123682 -> 130682 bytes img/dev/en-masternode-sync-ongoing.svg | 317 ++++++++++---------- img/dev/en-masternode-sync.odg | Bin 17100 -> 17364 bytes 6 files changed, 354 insertions(+), 159 deletions(-) create mode 100644 img/dev/en-masternode-sync-initial-dip3.png create mode 100644 img/dev/en-masternode-sync-initial-dip3.svg diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 0d02cb7f..55d2eb2e 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -348,16 +348,23 @@ several conditions that initiate a start/restart the sync process: * A failure occurred during the last sync attempt (after a 1 minute cooldown before sync restarts) * Issuing a `mnsync reset` RPC command +{% endautocrossref %} + #### Initial Masternode Sync {% include helpers/subhead-links.md %} +##### Before DIP3 Activation + + +{% autocrossref %} + This diagram shows the order in which P2P messages are sent to perform masternode synchronization initially after startup. ![Masternode Sync (Initial)](/img/dev/en-masternode-sync-initial.svg) The following table details the data flow of P2P messages exchanged during -initial masternode synchronization. +initial masternode synchronization before the activation of DIP3 and Spork 15. | **Syncing Node Message** | **Direction** | **Masternode Response** | **Description** | | **1. Sporks** | | | | @@ -380,6 +387,31 @@ initial masternode synchronization. | | ← | `mnw` message(s) | (If requested) Masternode payment vote message | **4. Governance** | | | See [Governance sync](#governance) | +{% endautocrossref %} + +##### After DIP3 Activation + + +{% autocrossref %} + +The deterministic masternode lists introduced by DIP3 make the masternode +list and masternode payments steps of the sync process obsolete. Since the +information is available on-chain, the P2P messages related to those steps +are no longer required. + +This diagram shows the order in which P2P messages are sent to perform +masternode synchronization initially after startup. + +![Masternode Sync (Initial)](/img/dev/en-masternode-sync-initial-dip3.svg) + +The following table details the data flow of P2P messages exchanged during +initial masternode synchronization after the activation of DIP3 and Spork 15. + +| **Syncing Node Message** | **Direction** | **Masternode Response** | **Description** | +| **1. Sporks** | | | | +| `getsporks` message | → | | Syncing node requests sporks +| | ← | `spork` message(s) | +| **2. Governance** | | | See [Governance sync](#governance) | *Masternode Sync Status* @@ -390,8 +422,8 @@ are used in both `ssc` messages and the `mnsync` RPC. | -1 | `MASTERNODE_SYNC_FAILED` | Synchronization failed | | 0 | `MASTERNODE_SYNC_INITIAL` | Synchronization just started, was reset recently, or is still in IBD | | 1 | `MASTERNODE_SYNC_WAITING` | Synchronization pending - waiting after initial to check for more headers/blocks | -| 2 | `MASTERNODE_SYNC_LIST` | Synchronizing masternode list | -| 3 | `MASTERNODE_SYNC_MNW` | Synchronizing masternode payments | +| 2 | `MASTERNODE_SYNC_LIST` | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

Synchronizing masternode list | +| 3 | `MASTERNODE_SYNC_MNW` | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

Synchronizing masternode payments | | 4 | `MASTERNODE_SYNC_GOVERNANCE` | Synchronizing governance objects | | 999 | `MASTERNODE_SYNC_FINISHED` | Synchronization finished | @@ -408,6 +440,9 @@ payments, and governance objects synchronized between masternodes. **Recurring Ping** +![Warning icon](/img/icons/icon_warning.svg) NOTE: This will be deprecated +following activation of DIP3 which implements deterministic masternode lists. + Each masternode issues a ping (`mnp` message) periodically to notify the network that it is still online. Masternodes that do not issue a ping for 3 hours will be put into the `MASTERNODE_NEW_START_REQUIRED` state and will need to issue a @@ -415,6 +450,9 @@ masternode announce (`mnb` message). **Masternode List** +![Warning icon](/img/icons/icon_warning.svg) NOTE: This will be deprecated +following activation of DIP3 which implements deterministic masternode lists. + After the initial masternode list has been received, it is kept current by a combination of the periodic `mnp` messages received from other masternodes, the `mnb` messages sent by masternodes as they come online, and `mnv` messages @@ -429,6 +467,9 @@ Unsynchronized peers may send a `dseg` message to request the entire masternode **Masternode Payment** +![Warning icon](/img/icons/icon_warning.svg) NOTE: This will be deprecated +following activation of DIP3 which implements deterministic masternode lists. + After the initial masternode payment synchronization, payment information is kept current via the `mnw` messages relayed on the network. Unsynchronized peers may send a `mnget` message to request masternode payment sync. @@ -453,14 +494,14 @@ scheduler section of `AppInitMain` in `src/init.cpp`. The following actions only run when the masternode sync is past `MASTERNODE_SYNC_WAITING` status. | **Period (seconds)** | **Action** | **Description** | -| 1 | MN Check | Check the state of each masternode that is still funded and not banned. The action occurs once per second, but individual masternodes are only checked at most every 5 seconds (only a subset of masternodes are checked each time it runs) (masternodeman.cpp) | +| 1 | MN Check | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

Check the state of each masternode that is still funded and not banned. The action occurs once per second, but individual masternodes are only checked at most every 5 seconds (only a subset of masternodes are checked each time it runs) (masternodeman.cpp) | | 60 | Process MN Connections | Disconnects some masternodes (masternodeman.cpp) | -| 60 | MN Check/Remove | Remove spent masternodes and check the state of inactive ones (masternodeman.cpp) | -| 60 | MN Payment Check/Remove | Remove old masternode payment votes/blocks (masternode-payments.cpp) | +| 60 | MN Check/Remove | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

Remove spent masternodes and check the state of inactive ones (masternodeman.cpp) | +| 60 | MN Payment Check/Remove | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

Remove old masternode payment votes/blocks (masternode-payments.cpp) | | 60 | InstantSend Check/Remove | Remove expired/orphaned/invalid InstantSend candidates and votes (instantx.cpp) | -| 300 | Full verification | Verify masternodes via direct requests (`mnv` messages - note time constraints in the Developer Reference section) (masternodeman.cpp) | +| 300 | Full verification | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

Verify masternodes via direct requests (`mnv` messages - note time constraints in the Developer Reference section) (masternodeman.cpp) | | 300 | Maintenance | Check/remove/reprocess governance objects (governance.cpp) | -| 600 | Manage State | Sends masternode pings (`mnp` message). Also sends initial masternode broadcast (`mnb` message) for local masternodes. (activemasternode.cpp) | +| 600 | Manage State | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

Sends masternode pings (`mnp` message). Also sends initial masternode broadcast (`mnb` message) for local masternodes. (activemasternode.cpp) | {% endautocrossref %} diff --git a/img/dev/en-masternode-sync-initial-dip3.png b/img/dev/en-masternode-sync-initial-dip3.png new file mode 100644 index 0000000000000000000000000000000000000000..5a6f2bec97494d097b05340207a3cddf84f99280 GIT binary patch literal 17838 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 f3kzd{_!ayQjF`cQhc& + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sporks(getsporks) + + + + + + + + + + Governance Objects(govsync) + + + + + + + + + + + + + + + + + Governance Votes(govsync) + + + + + + + + + + + + + + Masternode Synchronization (Initial) + + + + + + + + \ No newline at end of file diff --git a/img/dev/en-masternode-sync-ongoing.png b/img/dev/en-masternode-sync-ongoing.png index 9a24933d2cf58ac96547768f5f824a8e13cd7785..948e64a00ba84995d3a3191666ea54bdfad687ce 100644 GIT binary patch literal 130682 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 QA45^Ow@OlF5+4Hp3$8wavj6}9 literal 123682 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
  • 33QrI0s}S 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 diff --git a/img/dev/en-masternode-sync-ongoing.svg b/img/dev/en-masternode-sync-ongoing.svg index 0d47c1b0..72e912e9 100644 --- a/img/dev/en-masternode-sync-ongoing.svg +++ b/img/dev/en-masternode-sync-ongoing.svg @@ -1,9 +1,9 @@ - + - + @@ -43,6 +43,7 @@ + @@ -53,7 +54,7 @@ - + @@ -324,20 +325,20 @@ - - - - MasternodePayments + + + + MasternodePayments - - - - MasternodeList + + + + MasternodeList @@ -353,251 +354,251 @@ - PaymentVotes + PaymentVotes - - - - - - - - - - - - - - - - - mnw + + + + + + + + + + + + + + + + + mnw - PaymentVotes + PaymentVotes - - - mnw + + + mnw - BroadcastsfromStarting MNs + BroadcastsfromStarting MNs - Recurring Ping(15 min) + Recurring Ping(15 min) - - - mnb + + + mnb - Relayed MNBroadcasts + Relayed MNBroadcasts - Relayed MNPings + Relayed MNPings - Relayed MNVerifications + Relayed MNVerifications - MN ListRequests + MN ListRequests - - - - dseg + + + + dseg - - - - - - - - - - - - - - - - - - - - - - - - - mnb + + + + + + + + + + + + + + + + + + + + + + + + + mnb - - - - - - - - - - - - - - mnp + + + + + + + + + + + + + + mnp - - - - - - - - - - - - - - - - - - - - - - - - mnp + + + + + + + + + + + + + + + + + + + + + + + + mnp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mnv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mnv - MN Pings + MN Pings - - - mnp + + + mnp - PaymentSync Request + PaymentSync Request - VerificationRequests + VerificationRequests - - - - mnv + + + + mnv - - - mnget + + + mnget @@ -757,6 +758,20 @@ + + + + + Deprecated by Deterministic Masternode Lists + + + + + + + + + diff --git a/img/dev/en-masternode-sync.odg b/img/dev/en-masternode-sync.odg index a3c285f0eabe554872381d22df49796a516caf00..9e65c5e9ffd32b6664c16a9c299a8435df100085 100644 GIT binary patch delta 13369 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 From 8df8364c818109b81bf9e253868f2760c57f5f91 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 27 Dec 2018 13:18:56 -0500 Subject: [PATCH 043/117] V0.13.0 misc fixes (#99) * Content - Update release note for 0.13.0 * RPC - Clarification note on gobject submit --- _includes/devdoc/dash-core/rpcs/rpcs/gobject.md | 6 +++++- _includes/devdoc/ref_p2p_networking.md | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md index b9cfe57b..c56b0b05 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md @@ -181,7 +181,11 @@ Result (Collateral Transaction ID): {% autocrossref %} -The `gobject submit` RPC submits a governance object to network (objects must first be prepared via `gobject prepare`). +The `gobject submit` RPC submits a governance object to network (objects must +first be prepared via `gobject prepare`). + +Note: Parameters 1-4 should be the same values as the ones used for `gobject +prepare`. *Parameter #1---parent hash* diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index ed57c136..11b0bcab 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -70,6 +70,7 @@ As of Dash Core 0.13.0.0, the most recent protocol version is 70213. | Version | Initial Release | Major Changes |---------|------------------------------------|-------------- +| 70213 | Dash Core 0.13.0.x
    (Jan 2019) | • Special Transactions
    • Deterministic Masternode List
    • Coinbase Special Transaction
    • Automatic InstantSend | 70210 | Dash Core 0.12.3.x
    (July 2018) | • Named Devnets
    • New signature format / Spork 6 addition
    • Bitcoin Core 0.13/0.14 backports
    • [BIP90][]: Buried deployments
    • [BIP147][]: NULLYDUMMY enforcement
    • [BIP152][] Compact Blocks
    • Transaction version increased to 2
    • Zero fee transactions removed
    • Pruning in Lite Mode | 70208 | Dash Core 0.12.2.x
    (Nov 2017) | • [DIP1][] (2MB blocks)
    • Fee reduction (10x)
    • InstantSend fix
    • PrivateSend improvements
    • _Experimental_ HD wallet
    • Local Masternode support removed | 70206 | Dash Core 0.12.1.x
    (Mar 2017) | • Switch to Bitcoin Core 0.12.1
    • BIP-0065 (CheckLockTimeVerify)
    • BIP-0112 (CheckSequenceVerify) From 2472271e3455f2993f0bf70fae85e3e731dd7470 Mon Sep 17 00:00:00 2001 From: thephez Date: Fri, 28 Dec 2018 11:59:53 -0500 Subject: [PATCH 044/117] V0.13.0 protx fundaddress (#100) * RPC - Add protx fee source/fund address parameter * RPC - Update to match current help text --- _includes/devdoc/dash-core/rpcs/rpcs/protx.md | 72 ++++++++++++++++--- 1 file changed, 63 insertions(+), 9 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md index 99d59caa..628e5ff9 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md @@ -93,9 +93,18 @@ The `protx register` RPC creates a ProRegTx referencing an existing {% itemplate ntpd1 %} - n: "`payoutAddress`" - t: "string (hex)" + t: "string" p: "Required
    (exactly 1)" - d: "The Dash address to use for masternode reward payments. Must match `collateralAddress`." + d: "The Dash address to use for masternode reward payments." +{% enditemplate %} + +*Parameter #9---fee source address* + +{% itemplate ntpd1 %} +- n: "`feeSourceAddress`" + t: "string" + p: "Optional
    (0 or 1)" + d: "If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet." {% enditemplate %} *Result---provider registration transaction hash* @@ -182,16 +191,25 @@ The `protx register_fund` RPC creates and funds a ProRegTx with the - n: "`operatorReward`" t: "number" p: "Required
    (exactly 1)" - d: "The fraction in % to share with the operator. If non-zero, `ipAndPort` must be zero as well.
    The value must be between '0.00' and '100.00'." + d: "The fraction in % to share with the operator.
    The value must be between '0.00' and '100.00'." {% enditemplate %} *Parameter #7---payout address* {% itemplate ntpd1 %} - n: "`payoutAddress`" - t: "string (hex)" + t: "string" p: "Required
    (exactly 1)" - d: "The Dash address to use for masternode reward payments. Must match `collateralAddress`." + d: "The Dash address to use for masternode reward payments." +{% enditemplate %} + +*Parameter #8---fund address* + +{% itemplate ntpd1 %} +- n: "`fundAddress`" + t: "string" + p: "Optional
    (0 or 1)" + d: "If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet." {% enditemplate %} *Result---provider registration transaction hash* @@ -289,7 +307,7 @@ and outputs to cover fees. - n: "`operatorReward`" t: "number" p: "Required
    (exactly 1)" - d: "The fraction in % to share with the operator. If non-zero, `ipAndPort` must be zero as well.
    The value must be between '0.00' and '100.00'." + d: "The fraction in % to share with the operator.
    The value must be between '0.00' and '100.00'." {% enditemplate %} *Parameter #8---payout address* @@ -298,7 +316,16 @@ and outputs to cover fees. - n: "`payoutAddress`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "The Dash address to use for masternode reward payments. Must match `collateralAddress`." + d: "The Dash address to use for masternode reward payments." +{% enditemplate %} + +*Parameter #9---fee source address* + +{% itemplate ntpd1 %} +- n: "`feeSourceAddress`" + t: "string" + p: "Optional
    (0 or 1)" + d: "If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet." {% enditemplate %} *Result---unsigned transaction and message to sign* @@ -645,6 +672,15 @@ The `protx update_service` RPC creates and sends a ProUpServTx to th d: "The Dash address used for operator reward payments. Only allowed when the ProRegTx had a non-zero `operatorReward` value." {% enditemplate %} +*Parameter #5---fee source address* + +{% itemplate ntpd1 %} +- n: "`feeSourceAddress`" + t: "string" + p: "Optional
    (0 or 1)" + d: "If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `operatorPayoutAddress` will be used. The private key belonging to this address must be known in your wallet." +{% enditemplate %} + *Result---provider update service transaction hash* {% itemplate ntpd1 %} @@ -707,10 +743,19 @@ The `protx update_registrar` RPC creates and sends a ProUpRegTx to t *Parameter #4---operator payout address* {% itemplate ntpd1 %} -- n: "`operatorPayoutAddress`" +- n: "`payoutAddress`" t: "string (hex)" p: "Optional
    (0 or 1)" - d: "The Dash address to use for masternode reward payments. Must match `collateralAddress` of initial ProRegTx. If set to '0' or an empty string, the last on-chain payout address of the masternode will be used." + d: "The Dash address to use for masternode reward payments. If set to '0' or an empty string, the last on-chain payout address of the masternode will be used." +{% enditemplate %} + +*Parameter #5---fee source address* + +{% itemplate ntpd1 %} +- n: "`feeSourceAddress`" + t: "string" + p: "Optional
    (0 or 1)" + d: "If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet." {% enditemplate %} *Result---provider update registrar transaction hash* @@ -772,6 +817,15 @@ The `protx revoke` RPC creates and sends a ProUpRevTx to the network d: "The reason for revocation." {% enditemplate %} +*Parameter #4---fee source address* + +{% itemplate ntpd1 %} +- n: "`feeSourceAddress`" + t: "string" + p: "Optional
    (0 or 1)" + d: "If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet." +{% enditemplate %} + *Result---provider update revoke transaction hash* {% itemplate ntpd1 %} From 5f02bd05a5ed7675a542c7719dc449d02f3f19fd Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 2 Jan 2019 08:40:03 -0500 Subject: [PATCH 045/117] RPC - Make result type consistent with other RPCs (#102) --- _includes/devdoc/dash-core/rpcs/rpcs/verifymessage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/verifymessage.md b/_includes/devdoc/dash-core/rpcs/rpcs/verifymessage.md index 23404410..697df6a8 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/verifymessage.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/verifymessage.md @@ -47,7 +47,7 @@ The `verifymessage` RPC {{summary_verifyMessage}} {% itemplate ntpd1 %} - n: "`result`" - t: "bool/null" + t: "boolean" p: "Required
    (exactly 1)" d: "Set to `true` if the message was signed by a key corresponding to the provided P2PKH address; set to `false` if it was not signed by that key; set to JSON `null` if an error occurred" From d0756f44701005b73e4309cde60b46da6863178e Mon Sep 17 00:00:00 2001 From: dashuser33 <39227178+dashuser33@users.noreply.github.com> Date: Wed, 2 Jan 2019 11:03:37 -0300 Subject: [PATCH 046/117] Fix returned type for dumpwallet rpc call (#103) Docs was stating that the result type was `null` when in fact it is an object. --- _includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md b/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md index 8e4161c2..a0ac537b 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md @@ -28,13 +28,13 @@ The `dumpwallet` RPC {{summary_dumpWallet}} {% enditemplate %} -*Result---`null` or error* +*Result---information about exported wallet* {% itemplate ntpd1 %} - n: "`result`" - t: "null" + t: "object" p: "Required
    (exactly 1)" - d: "Always `null` whether success or failure. The JSON-RPC error and message fields will be set if a failure occurred" + d: "An object describing dumped wallet file" - n: "→
    `dashcoreversion`" t: "string" From 9f9bc89b6a8339837bde482baf0e62856339fcdf Mon Sep 17 00:00:00 2001 From: thephez Date: Fri, 4 Jan 2019 12:59:39 -0500 Subject: [PATCH 047/117] V0.13.0 special tx update (#101) * Content - Fix CbTx cross reference * Content - Highlight QcTx's lack of inputs and outputs * Content - clarify DIP2 tx format * Content - Add table showing implemented special txs * Content - add JSON-RPC format info and example * RPC - Update getrawtransaction example Add special tx example also * RPC - Update decoderawtransaction example Add special tx example also --- _autocrossref.yaml | 1 + .../rpcs/rpcs/decoderawtransaction.md | 118 ++++++++++--- .../dash-core/rpcs/rpcs/getrawtransaction.md | 159 ++++++++++++++---- _includes/devdoc/ref_transactions.md | 109 +++++++++++- _includes/references.md | 1 + 5 files changed, 320 insertions(+), 68 deletions(-) diff --git a/_autocrossref.yaml b/_autocrossref.yaml index e7c0bce7..bed96020 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -22,6 +22,7 @@ bitcoinj: '`block` messages': block message '`blocktxn` message': blocktxn message '`blocktxn` messages': blocktxn message +'CbTx': coinbase special tx certificate chain: '`cmpctblock` message': cmpctblock message '`cmpctblock` messages': cmpctblock message diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md index d93094cb..11101227 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md @@ -39,65 +39,133 @@ The `decoderawtransaction` RPC {{summary_decodeRawTransaction}} Decode a signed one-input, two-output transaction: {% highlight bash %} -dash-cli decoderawtransaction 01000000016b490886c0198b028c6c5cb145c4eb3b10\ -55a224a7a105aadeff41b69ec91e060100000069463043022033a61c56fa0867ed67b76b02\ -3204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4\ -182a1de0b96fc22716e0845f561d542e012102eacba539d92eb88d4e73bb32749d79f53f6e\ -8d7947ac40a71bd4b26c13b6ec29ffffffff0200205fa0120000001976a914485485425fa9\ -9504ec1638ac4213f3cfc9f32ef388acc0a8f9be010000001976a914811eacc14db8ebb5b6\ -4486dc43400c0226b428a488ac00000000 +dash-cli decoderawtransaction 02000000015d0b26079696875e9fc3cb480420aae3c8\ +b1da628fbb14cc718066df7fe7c5fd010000006a47304402202cfa683981898ad9adb89534\ +23a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee\ +27f706baaed86dabb105979c3e6f6e1cb9012103d14eb001cf0908f3a2333d171f6236497a\ +82318a6a6f649b4d7fd8e5c8922e08feffffff021e3f4b4c000000001976a914b02ae52066\ +542b4aec5cf45c7cae3183d7bd322788ac00f90295000000001976a914252c9de3a0ebd5c9\ +5886187b24969d4ccdb5576e88ac943d0000 {% endhighlight %} Result: {% highlight json %} { - "txid": "2f124cb550d9967b81914b544dea3783de23e85d67a9816f9bada665ecfe1cd5", - "size": 224, - "version": 1, + "txid": "f4de3be04efa18e203c9d0b7ad11bb2517f5889338918ed300a374f5bd736ed7", + "size": 225, + "version": 2, "type": 0, - "locktime": 0, + "locktime": 15764, "vin": [ { - "txid": "061ec99eb641ffdeaa05a1a724a255103bebc445b15c6c8c028b19c08608496b", + "txid": "fdc5e77fdf668071cc14bb8f62dab1c8e3aa200448cbc39f5e87969607260b5d", "vout": 1, "scriptSig": { - "asm": "3043022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f561d542e[ALL] 02eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29", - "hex": "463043022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f561d542e012102eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29" + "asm": "304402202cfa683981898ad9adb8953423a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee27f706baaed86dabb105979c3e6f6e1cb9[ALL] 03d14eb001cf0908f3a2333d171f6236497a82318a6a6f649b4d7fd8e5c8922e08", + "hex": "47304402202cfa683981898ad9adb8953423a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee27f706baaed86dabb105979c3e6f6e1cb9012103d14eb001cf0908f3a2333d171f6236497a82318a6a6f649b4d7fd8e5c8922e08" }, - "sequence": 4294967295 + "sequence": 4294967294 } ], "vout": [ { - "value": 800.00000000, - "valueSat": 80000000000, + "value": 12.79999774, + "valueSat": 1279999774, "n": 0, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 485485425fa99504ec1638ac4213f3cfc9f32ef3 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914485485425fa99504ec1638ac4213f3cfc9f32ef388ac", + "asm": "OP_DUP OP_HASH160 b02ae52066542b4aec5cf45c7cae3183d7bd3227 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914b02ae52066542b4aec5cf45c7cae3183d7bd322788ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "ySutkc49Khpz1HQN8AfWNitVBLwqtyaxvv" + "ycNwAN4DQ7Xnw5XLKg84SR4U1GE22FfLNQ" ] } }, { - "value": 74.99000000, - "valueSat": 7499000000, + "value": 25.00000000, + "valueSat": 2500000000, "n": 1, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 811eacc14db8ebb5b64486dc43400c0226b428a4 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914811eacc14db8ebb5b64486dc43400c0226b428a488ac", + "asm": "OP_DUP OP_HASH160 252c9de3a0ebd5c95886187b24969d4ccdb5576e OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914252c9de3a0ebd5c95886187b24969d4ccdb5576e88ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "yY6AmGopsZS31wy1JLHR9P6AC6owFaXwuh" + "yPi1JKw5fn8bMFsCCtnkGagogW6GXwGktZ" ] } } ], + "instantlock": true +} +{% endhighlight %} + +Decode a coinbase special transaction (CbTx): + +{% highlight bash %} +dash-cli decoderawtransaction 03000500010000000000000000000000000000000000\ +000000000000000000000000000000ffffffff4b02953d045e572a5c08fabe6d6d66663734\ +36333636333230616162346432366264616530386339366263623534010000000000000010\ +00000eaf0000000d2f6e6f64655374726174756d2f0000000002b4e32237010000001976a9\ +14cb594917ad4e5849688ec63f29a0f7f3badb5da688acaae32237010000001976a914a3c5\ +284d3cd896815ac815f2dd76a3a71cb3d8e688ac00000000260100953d00007b8577a1c051\ +bcab40e08c72209f3eddc476d859c8054c57a7287700b2de2db4 +{% endhighlight %} + +Result: + +{% highlight json %} +{ + "txid": "414a3911a274053beb867c79ad9a19bf508041554f147a1a2c73f8f9bc029717", + "size": 233, + "version": 3, + "type": 5, + "locktime": 0, + "vin": [ + { + "coinbase": "02953d045e572a5c08fabe6d6d666637343633363633323061616234643236626461653038633936626362353401000000000000001000000eaf0000000d2f6e6f64655374726174756d2f", + "sequence": 0 + } + ], + "vout": [ + { + "value": 52.20000692, + "valueSat": 5220000692, + "n": 0, + "scriptPubKey": { + "asm": "OP_DUP OP_HASH160 cb594917ad4e5849688ec63f29a0f7f3badb5da6 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914cb594917ad4e5849688ec63f29a0f7f3badb5da688ac", + "reqSigs": 1, + "type": "pubkeyhash", + "addresses": [ + "yereyozxENB9jbhqpbg1coE5c39ExqLSaG" + ] + } + }, + { + "value": 52.20000682, + "valueSat": 5220000682, + "n": 1, + "scriptPubKey": { + "asm": "OP_DUP OP_HASH160 a3c5284d3cd896815ac815f2dd76a3a71cb3d8e6 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914a3c5284d3cd896815ac815f2dd76a3a71cb3d8e688ac", + "reqSigs": 1, + "type": "pubkeyhash", + "addresses": [ + "ybFPBD7hm9KVd2Dubj97K5mw2ymR8gWJre" + ] + } + } + ], + "extraPayloadSize": 38, + "extraPayload": "0100953d00007b8577a1c051bcab40e08c72209f3eddc476d859c8054c57a7287700b2de2db4", + "cbTx": { + "version": 1, + "height": 15765, + "merkleRootMNList": "b42ddeb2007728a7574c05c859d876c4dd3e9f20728ce040abbc51c0a177857b" + }, "instantlock": false } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md index dcae467d..36736207 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md @@ -104,30 +104,30 @@ deprecated. *Examples from Dash Core 0.13.0* -A transaction in serialized transaction format: +A classical transaction in serialized transaction format: {% highlight bash %} dash-cli getrawtransaction \ - 83f94090899fa63ea6ef913fe13cba851fd07c801bea7eedf73958c58936c19c + f4de3be04efa18e203c9d0b7ad11bb2517f5889338918ed300a374f5bd736ed7 {% endhighlight %} Result (wrapped): {% highlight text %} -01000000016b490886c0198b028c6c5cb145c4eb3b1055a224a7a105aadeff41\ -b69ec91e060100000069463043022033a61c56fa0867ed67b76b023204a9dc0e\ -e6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4\ -182a1de0b96fc22716e0845f561d542e012102eacba539d92eb88d4e73bb3274\ -9d79f53f6e8d7947ac40a71bd4b26c13b6ec29ffffffff0200205fa012000000\ -1976a914485485425fa99504ec1638ac4213f3cfc9f32ef388acc0a8f9be0100\ -00001976a914811eacc14db8ebb5b64486dc43400c0226b428a488ac00000000 +02000000015d0b26079696875e9fc3cb480420aae3c8b1da628fbb14cc718066\ +df7fe7c5fd010000006a47304402202cfa683981898ad9adb8953423a38f7185\ +ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee\ +27f706baaed86dabb105979c3e6f6e1cb9012103d14eb001cf0908f3a2333d17\ +1f6236497a82318a6a6f649b4d7fd8e5c8922e08feffffff021e3f4b4c000000\ +001976a914b02ae52066542b4aec5cf45c7cae3183d7bd322788ac00f9029500\ +0000001976a914252c9de3a0ebd5c95886187b24969d4ccdb5576e88ac943d0000 {% endhighlight %} Get the same transaction in JSON: {% highlight bash %} dash-cli getrawtransaction \ -2f124cb550d9967b81914b544dea3783de23e85d67a9816f9bada665ecfe1cd5 \ +f4de3be04efa18e203c9d0b7ad11bb2517f5889338918ed300a374f5bd736ed7 \ 1 {% endhighlight %} @@ -135,58 +135,149 @@ Result: {% highlight json %} { - "hex": "01000000016b490886c0198b028c6c5cb145c4eb3b1055a224a7a105aadeff41b69ec91e060100000069463043022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f561d542e012102eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29ffffffff0200205fa0120000001976a914485485425fa99504ec1638ac4213f3cfc9f32ef388acc0a8f9be010000001976a914811eacc14db8ebb5b64486dc43400c0226b428a488ac00000000", - "txid": "2f124cb550d9967b81914b544dea3783de23e85d67a9816f9bada665ecfe1cd5", - "size": 224, - "version": 1, + "hex": "02000000015d0b26079696875e9fc3cb480420aae3c8b1da628fbb14cc718066df7fe7c5fd010000006a47304402202cfa683981898ad9adb8953423a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee27f706baaed86dabb105979c3e6f6e1cb9012103d14eb001cf0908f3a2333d171f6236497a82318a6a6f649b4d7fd8e5c8922e08feffffff021e3f4b4c000000001976a914b02ae52066542b4aec5cf45c7cae3183d7bd322788ac00f90295000000001976a914252c9de3a0ebd5c95886187b24969d4ccdb5576e88ac943d0000", + "txid": "f4de3be04efa18e203c9d0b7ad11bb2517f5889338918ed300a374f5bd736ed7", + "size": 225, + "version": 2, "type": 0, - "locktime": 0, + "locktime": 15764, "vin": [ { - "txid": "061ec99eb641ffdeaa05a1a724a255103bebc445b15c6c8c028b19c08608496b", + "txid": "fdc5e77fdf668071cc14bb8f62dab1c8e3aa200448cbc39f5e87969607260b5d", "vout": 1, "scriptSig": { - "asm": "3043022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f561d542e[ALL] 02eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29", - "hex": "463043022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe94335445ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f561d542e012102eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29" + "asm": "304402202cfa683981898ad9adb8953423a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee27f706baaed86dabb105979c3e6f6e1cb9[ALL] 03d14eb001cf0908f3a2333d171f6236497a82318a6a6f649b4d7fd8e5c8922e08", + "hex": "47304402202cfa683981898ad9adb8953423a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee27f706baaed86dabb105979c3e6f6e1cb9012103d14eb001cf0908f3a2333d171f6236497a82318a6a6f649b4d7fd8e5c8922e08" }, - "sequence": 4294967295 + "sequence": 4294967294 } ], "vout": [ { - "value": 800.00000000, - "valueSat": 80000000000, + "value": 12.79999774, + "valueSat": 1279999774, "n": 0, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 485485425fa99504ec1638ac4213f3cfc9f32ef3 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914485485425fa99504ec1638ac4213f3cfc9f32ef388ac", + "asm": "OP_DUP OP_HASH160 b02ae52066542b4aec5cf45c7cae3183d7bd3227 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914b02ae52066542b4aec5cf45c7cae3183d7bd322788ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "ySutkc49Khpz1HQN8AfWNitVBLwqtyaxvv" + "ycNwAN4DQ7Xnw5XLKg84SR4U1GE22FfLNQ" ] } }, { - "value": 74.99000000, - "valueSat": 7499000000, + "value": 25.00000000, + "valueSat": 2500000000, "n": 1, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 811eacc14db8ebb5b64486dc43400c0226b428a4 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914811eacc14db8ebb5b64486dc43400c0226b428a488ac", + "asm": "OP_DUP OP_HASH160 252c9de3a0ebd5c95886187b24969d4ccdb5576e OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914252c9de3a0ebd5c95886187b24969d4ccdb5576e88ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "yY6AmGopsZS31wy1JLHR9P6AC6owFaXwuh" + "yPi1JKw5fn8bMFsCCtnkGagogW6GXwGktZ" ] } } ], - "blockhash": "00000000e679e76eabc913b15c7f202e7ea831b8fb07beb28ca2a047b03ff3cc", - "height": 19560, - "confirmations": 230837, - "time": 1509568811, - "blocktime": 1509568811, + "blockhash": "0000000005f395d62a40ef9f2a13000bd4076e2131c8671db8333a5b31e4403f", + "height": 15765, + "confirmations": 1, + "time": 1546278750, + "blocktime": 1546278750, + "instantlock": true +} +{% endhighlight %} + + +A special transaction (CbTx) in serialized transaction format: + +{% highlight bash %} +dash-cli getrawtransaction \ + 414a3911a274053beb867c79ad9a19bf508041554f147a1a2c73f8f9bc029717 +{% endhighlight %} + +Result (wrapped): + +{% highlight text %} +0300050001000000000000000000000000000000000000000000000000000000\ +0000000000ffffffff4b02953d045e572a5c08fabe6d6d666637343633363633\ +3230616162346432366264616530386339366263623534010000000000000010\ +00000eaf0000000d2f6e6f64655374726174756d2f0000000002b4e322370100\ +00001976a914cb594917ad4e5849688ec63f29a0f7f3badb5da688acaae32237\ +010000001976a914a3c5284d3cd896815ac815f2dd76a3a71cb3d8e688ac0000\ +0000260100953d00007b8577a1c051bcab40e08c72209f3eddc476d859c8054c\ +57a7287700b2de2db4 +{% endhighlight %} + +Get the same transaction in JSON: + +{% highlight bash %} +dash-cli getrawtransaction \ +414a3911a274053beb867c79ad9a19bf508041554f147a1a2c73f8f9bc029717 \ +1 +{% endhighlight %} + +Result: + +{% highlight json %} +{ + "hex": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff4b02953d045e572a5c08fabe6d6d666637343633363633323061616234643236626461653038633936626362353401000000000000001000000eaf0000000d2f6e6f64655374726174756d2f0000000002b4e32237010000001976a914cb594917ad4e5849688ec63f29a0f7f3badb5da688acaae32237010000001976a914a3c5284d3cd896815ac815f2dd76a3a71cb3d8e688ac00000000260100953d00007b8577a1c051bcab40e08c72209f3eddc476d859c8054c57a7287700b2de2db4", + "txid": "414a3911a274053beb867c79ad9a19bf508041554f147a1a2c73f8f9bc029717", + "size": 233, + "version": 3, + "type": 5, + "locktime": 0, + "vin": [ + { + "coinbase": "02953d045e572a5c08fabe6d6d666637343633363633323061616234643236626461653038633936626362353401000000000000001000000eaf0000000d2f6e6f64655374726174756d2f", + "sequence": 0 + } + ], + "vout": [ + { + "value": 52.20000692, + "valueSat": 5220000692, + "n": 0, + "scriptPubKey": { + "asm": "OP_DUP OP_HASH160 cb594917ad4e5849688ec63f29a0f7f3badb5da6 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914cb594917ad4e5849688ec63f29a0f7f3badb5da688ac", + "reqSigs": 1, + "type": "pubkeyhash", + "addresses": [ + "yereyozxENB9jbhqpbg1coE5c39ExqLSaG" + ] + } + }, + { + "value": 52.20000682, + "valueSat": 5220000682, + "n": 1, + "scriptPubKey": { + "asm": "OP_DUP OP_HASH160 a3c5284d3cd896815ac815f2dd76a3a71cb3d8e6 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914a3c5284d3cd896815ac815f2dd76a3a71cb3d8e688ac", + "reqSigs": 1, + "type": "pubkeyhash", + "addresses": [ + "ybFPBD7hm9KVd2Dubj97K5mw2ymR8gWJre" + ] + } + } + ], + "extraPayloadSize": 38, + "extraPayload": "0100953d00007b8577a1c051bcab40e08c72209f3eddc476d859c8054c57a7287700b2de2db4", + "cbTx": { + "version": 1, + "height": 15765, + "merkleRootMNList": "b42ddeb2007728a7574c05c859d876c4dd3e9f20728ce040abbc51c0a177857b" + }, + "blockhash": "0000000005f395d62a40ef9f2a13000bd4076e2131c8671db8333a5b31e4403f", + "height": 15765, + "confirmations": 5, + "time": 1546278750, + "blocktime": 1546278750, "instantlock": false } {% endhighlight %} diff --git a/_includes/devdoc/ref_transactions.md b/_includes/devdoc/ref_transactions.md index 75d5be6d..d2a95deb 100644 --- a/_includes/devdoc/ref_transactions.md +++ b/_includes/devdoc/ref_transactions.md @@ -213,32 +213,108 @@ Dash Core and many other tools print and accept raw transactions encoded as hex. Transactions prior to protocol version 70209 defaulted to version 1. Transaction -version 2 became the default in protocol version 70209. Version 2 transactions -have the same format, but the `lock_time` parameter was redefined by BIP68 -to enable relative lock-times. +version 2 was the default in protocol versions => 70209 and < 70213. Version 2 +transactions have the same format, but the `lock_time` parameter was redefined +by BIP68 to enable relative lock-times. (Note: transactions in the block chain are allowed to list a higher version number to permit soft forks, but they are treated as version 2 transactions by current software.) +Dash Core 0.13.0 (protocol version 70213) introduced transaction version 3 as +part of the [DIP2 - Special Transactions](https://github.com/dashpay/dips/blob/master/dip-0002.md) + implementation. Details of the changes introduced by +this feature and currently implemented special transactions can be found in the +[Special Transactions section](#special-transactions) below as well as in the +[DIP](https://github.com/dashpay/dips/blob/master/dip-0002.md). + A raw transaction has the following top-level format: | Bytes | Name | Data Type | Description |----------|--------------|---------------------|------------- -| 2 | version | uint16_t | Transaction version number; currently version 3. Programs creating transactions using newer consensus rules may use higher version numbers. -| 2 | type | uint16_t | Transaction type number; 0 for classical transactions; Non-zero for DIP2 special transactions. +| 2 | version | uint16_t | *Converted from 4 bytes to 2 bytes by DIP2 in v0.13.0*

    Transaction version number; currently version 3. Programs creating transactions using newer consensus rules may use higher version numbers. +| 2 | type | uint16_t | *Added by DIP2 in v0.13.0. Uses 2 bytes that were previously part of `version`*

    Transaction type number; 0 for classical transactions; Non-zero for DIP2 special transactions. | *Varies* | tx_in count | compactSize uint | Number of inputs in this transaction. | *Varies* | tx_in | txIn | Transaction inputs. See description of txIn below. | *Varies* | tx_out count | compactSize uint | Number of outputs in this transaction. | *Varies* | tx_out | txOut | Transaction outputs. See description of txOut below. | 4 | lock_time | uint32_t | A time (Unix epoch time) or block number. See the [locktime parsing rules][]. -| *Varies* | extra_payload size | compactSize uint | *Added by DIP2*

    Variable number of bytes of extra payload for DIP2-based special transactions -| *Varies* | extra_payload | blob | *Added by DIP2*

    Special transaction payload. +| *Varies* | extra_payload size | compactSize uint | *Added by DIP2 in v0.13.0*

    Variable number of bytes of extra payload for DIP2-based special transactions +| *Varies* | extra_payload | blob | *Added by DIP2 in v0.13.0*

    Special transaction payload. A transaction may have multiple inputs and outputs, so the txIn and txOut structures may recur within a transaction. CompactSize unsigned integers are a form of variable-length integers; they are described in the [CompactSize section][section CompactSize unsigned integer]. +##### JSON-RPC Responses +{% include helpers/subhead-links.md %} + +When retrieving transaction data via Dash Core RPCs (e.g. the `getrawtransaction` RPC), +the transaction data is returned in the following format. + +Version 1 and 2 Transaction Structure (prior to DIP2 activation in Dash Core v0.13.0): +{% highlight json %} +{ + "txid": , + "size": , + "version": 2, + "locktime": 0, + "vin": [ ], + "vout": [ ] +} +{% endhighlight %} + +Version 3 Transaction Structure (Dash Core v0.13.0+ and activated DIP2): +{% highlight json %} +{ + "txid": , + "size": , + "version": 3, + "type": , + "locktime": 0, + "vin": [ ], + "vout": [ ], + "extraPayloadSize": , + "extraPayload": … +} +{% endhighlight %} + +For special transactions (those using the extraPayload fields), JSON-RPC +responses contain a parsed JSON representation of the Transaction Payload. + +The sample transaction below shows the response for a quorum commitment special +transaction: + +{% highlight json %} +{ + "txid": "592a09d08348d970b4d9ba216246a23dac866717b460d3f369a86293b9839eea", + "size": 342, + "version": 3, + "type": 6, + "locktime": 0, + "vin": [ + ], + "vout": [ + ], + "extraPayloadSize": 329, + "extraPayload": "0100841b0000010001211cd3e4230b2bc47530e200447e998a38e960d4ed5f5251e26892130c000000320000000000000032000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "qcTx": { + "version": 1, + "height": 7044, + "commitment": { + "version": 1, + "llmqType": 1, + "quorumHash": "0000000c139268e251525fedd460e9388a997e4400e23075c42b0b23e4d31c21", + "signersCount": 0, + "validMembersCount": 0, + "quorumPublicKey": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + }, + "instantlock": false +} + +{% endhighlight %} + {% endautocrossref %} ##### TxIn: A Transaction Input (Non-Coinbase) {#txin} @@ -422,6 +498,19 @@ Classical (financial) transactions have a `type` of 0 while special transactions have a `type` defined in the DIP describing them. A list of current special transaction types is maintained in the [DIP repository](https://github.com/dashpay/dips/blob/master/dip-0002-special-transactions.md). +**Implemented Special Transactions** + +| Release | Tx Version | Tx Type | Payload Size | Payload | Payload JSON | Tx Purpose +| - | - | - | - | - | - | +| v0.12.3 | 2 | - | n/a | n/a | n/a | +| v0.13.0 | 3 | 0 | n/a | n/a | n/a | Standard (Classical) Transaction +| v0.13.0 | 3 | 1 | compactSize uint | hex | ProRegTx | Masternode Registration +| v0.13.0 | 3 | 2 | compactSize uint | hex | ProUpServTx | Update Masternode Service +| v0.13.0 | 3 | 3 | compactSize uint | hex | ProUpRegTx| Update Masternode Operator +| v0.13.0 | 3 | 4 | compactSize uint | hex | ProUpRevTx| Masternode Operator Revocation +| v0.13.0 | 3 | 5 | compactSize uint | hex | CbTx| Masternode List Merkle Proof +| v0.13.0 | 3 | 6 | compactSize uint | hex | QcTx| Long-Living Masternode Quorum Commitment + {% endautocrossref %} #### ProRegTx @@ -876,10 +965,12 @@ Coinbase Transaction Payload *Added in protocol version 70213 of Dash Core as described by DIP6* +**NOTE: This special transaction has no inputs and no outputs and thus also +pays no fee.** + The Quorum Commitment (QcTx) special transaction adds the best final commitment from a Long-Living Masternode Quorum (LLMQ) Distributed Key Generation (DKG) session to -the chain. This special transaction has no inputs and no outputs and thus also -pays no fee. +the chain. Since this special transaction pays no fees, it is mandatory by consensus rules to ensure that miners include it. Exactly one quorum commitment transaction MUST diff --git a/_includes/references.md b/_includes/references.md index c1484610..4763e12a 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -397,6 +397,7 @@ http://opensource.org/licenses/MIT. [bitcoinj micropayment tutorial]: https://bitcoinj.github.io/working-with-micropayments [block170]: https://www.biteasy.com/block/00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee [casascius address utility]: https://github.com/casascius/Bitcoin-Address-Utility +[coinbase special tx]: /en/developer-reference#cbtx [core alert.cpp]: https://github.com/dashpay/dash/blob/master/src/alert.cpp [core base58.h]: https://github.com/dashpay/dash/blob/master/src/base58.h [core chainparams.cpp]: https://github.com/dashpay/dash/blob/master/src/chainparams.cpp From 65d536a6c5c21a84d8298aea44f168e0d9aa5636 Mon Sep 17 00:00:00 2001 From: Cofresi Date: Wed, 23 Jan 2019 10:54:17 -0400 Subject: [PATCH 048/117] explicit per input fee for non-simple tx (#104) --- _includes/devdoc/guide_dash_features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 55d2eb2e..56bd08dd 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -79,7 +79,7 @@ There are a number of limitations on InstantSend transactions: * The lock request will timeout 15 seconds after the first vote is seen (`INSTANTSEND_LOCK_TIMEOUT_SECONDS`) * The lock request will fail if it has not been locked after 60 seconds (`INSTANTSEND_FAILED_TIMEOUT_SECONDS`) -* A minimum fee (0.0001 Dash) is required for non-simple transactions since they place a higher load on the masternodes. This fee was most +* A “per-input” fee of 0.0001 DASH per input is required for non-simple transactions (inputs >=5) since they place a higher load on the masternodes. This fee was most recently decreased by [DIP-0001](https://github.com/dashpay/dips/blob/master/dip-0001.md). * To be used in an InstantSend transaction, an input must have at least the number confirmations (block depth) indicated by the table below From b604f67496d8519a44b4b4d01a97e2f6c676076e Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 4 Feb 2019 10:25:43 -0500 Subject: [PATCH 049/117] Convert atlassian links to point at docs.dash.org (#106) --- _data/glossary/en/darkgravitywave.yaml | 2 +- _data/glossary/en/dgbb.yaml | 2 +- _data/glossary/en/evolution.yaml | 2 +- _data/glossary/en/instantsend.yaml | 2 +- _data/glossary/en/masternode.yaml | 2 +- _data/glossary/en/privatesend.yaml | 2 +- _data/glossary/en/sentinel.yaml | 2 +- _data/glossary/en/spork.yaml | 4 ++-- _data/glossary/en/x11.yaml | 2 +- _includes/devdoc/guide_block_chain.md | 2 +- _includes/devdoc/guide_dash_features.md | 4 ++-- _includes/devdoc/ref_p2p_networking.md | 2 +- _includes/templates/index.html | 5 ++--- 13 files changed, 16 insertions(+), 17 deletions(-) diff --git a/_data/glossary/en/darkgravitywave.yaml b/_data/glossary/en/darkgravitywave.yaml index 3da7df6a..d5c19840 100644 --- a/_data/glossary/en/darkgravitywave.yaml +++ b/_data/glossary/en/darkgravitywave.yaml @@ -22,7 +22,7 @@ optional: not_to_be_confused_with_capitalize_first_letter: links_html_or_markdown_style_capitalize_first_letter: - - "[Dark Gravity Wave](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/1146926/Dark+Gravity+Wave) --- Dash Wiki" + - "[Dark Gravity Wave](https://docs.dash.org/en/stable/introduction/features.html#dark-gravity-wave) --- Dash Documentation" --- diff --git a/_data/glossary/en/dgbb.yaml b/_data/glossary/en/dgbb.yaml index 1e479874..4dbcd17a 100644 --- a/_data/glossary/en/dgbb.yaml +++ b/_data/glossary/en/dgbb.yaml @@ -20,6 +20,6 @@ optional: not_to_be_confused_with_capitalize_first_letter: links_html_or_markdown_style_capitalize_first_letter: - - "[Governance and Budget System](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/8585246/Governance+and+Budget+System) --- Dash Wiki" + - "[Governance and Budget System](https://docs.dash.org/en/stable/introduction/features.html#decentralized-governance) --- Dash Documentation" --- diff --git a/_data/glossary/en/evolution.yaml b/_data/glossary/en/evolution.yaml index f1d0833a..efbc7301 100644 --- a/_data/glossary/en/evolution.yaml +++ b/_data/glossary/en/evolution.yaml @@ -21,7 +21,7 @@ optional: not_to_be_confused_with_capitalize_first_letter: links_html_or_markdown_style_capitalize_first_letter: - - "[Evolution](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/39583757/Evolution) --- Dash Wiki" + - "[Evolution](https://docs.dash.org/en/stable/introduction/features.html#evolution) --- Dash Documentation" --- diff --git a/_data/glossary/en/instantsend.yaml b/_data/glossary/en/instantsend.yaml index e300f246..ec2744c4 100644 --- a/_data/glossary/en/instantsend.yaml +++ b/_data/glossary/en/instantsend.yaml @@ -24,6 +24,6 @@ optional: links_html_or_markdown_style_capitalize_first_letter: - "[InstantSend](/en/developer-guide#instantsend) --- Developer Guide" - "[InstantSend messages](/en/developer-reference#instantsend-messages) --- Developer Reference" - - "[InstantSend](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/1146928/InstantSend) --- Dash Wiki" + - "[InstantSend](https://docs.dash.org/en/stable/introduction/features.html#instantsend) --- Dash Documentation" --- diff --git a/_data/glossary/en/masternode.yaml b/_data/glossary/en/masternode.yaml index 4d8fd327..607eb0f7 100644 --- a/_data/glossary/en/masternode.yaml +++ b/_data/glossary/en/masternode.yaml @@ -27,6 +27,6 @@ optional: - "[Masternode Sync](/en/developer-guide#masternode-sync) --- Developer Guide" - "[Governance](/en/developer-guide#governance) --- Developer Guide" - "[Masternode messages](/en/developer-reference#masternode-messages) --- Developer Reference" - - "[Masternode](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/1146920/Masternode+Network) --- Dash Wiki" + - "[Masternode](https://docs.dash.org/en/stable/introduction/features.html#masternodes) --- Dash Documentation" --- diff --git a/_data/glossary/en/privatesend.yaml b/_data/glossary/en/privatesend.yaml index e91eb4e5..4e1b724d 100644 --- a/_data/glossary/en/privatesend.yaml +++ b/_data/glossary/en/privatesend.yaml @@ -24,6 +24,6 @@ optional: links_html_or_markdown_style_capitalize_first_letter: - "[PrivateSend](/en/developer-guide#privatesend) --- Developer Guide" - "[PrivateSend messages](/en/developer-reference#privatesend-messages) --- Developer Reference" - - "[PrivateSend](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/1146924/PrivateSend) --- Official Wiki" + - "[PrivateSend](https://docs.dash.org/en/stable/introduction/features.html#privatesend) --- Dash Documentation" --- diff --git a/_data/glossary/en/sentinel.yaml b/_data/glossary/en/sentinel.yaml index cd5e48d8..5716da05 100644 --- a/_data/glossary/en/sentinel.yaml +++ b/_data/glossary/en/sentinel.yaml @@ -21,7 +21,7 @@ optional: links_html_or_markdown_style_capitalize_first_letter: - "[Sentinel](/en/developer-guide#sentinel) --- Developer Guide" - - "[Sentinel](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/103922706/Sentinel) --- Dash Wiki" + - "[Sentinel](https://docs.dash.org/en/stable/introduction/features.html#sentinel) --- Dash Documentation" --- diff --git a/_data/glossary/en/spork.yaml b/_data/glossary/en/spork.yaml index 7803381b..9fabc3bc 100644 --- a/_data/glossary/en/spork.yaml +++ b/_data/glossary/en/spork.yaml @@ -28,7 +28,7 @@ optional: links_html_or_markdown_style_capitalize_first_letter: - "[Spork message](/en/developer-reference#spork) --- Developer Reference" - - "[Multi-Phased Fork (Spork)](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/19169298/Multi-Phased+Fork+Spork) --- Dash Wiki" - - "[Understanding Sporks](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/128319489/Understanding+Sporks) --- Dash Wiki" + - "[Multi-Phased Fork (Spork)](https://docs.dash.org/en/stable/introduction/features.html#sporks) --- Dash Documentation" + - "[Understanding Sporks](https://docs.dash.org/en/latest/developers/index.html#sporks) --- Dash Documentation" --- diff --git a/_data/glossary/en/x11.yaml b/_data/glossary/en/x11.yaml index 1d17b87b..0b281cdd 100644 --- a/_data/glossary/en/x11.yaml +++ b/_data/glossary/en/x11.yaml @@ -21,6 +21,6 @@ optional: - The open source GUI server that provides a graphical interface to Unix/Linux users. links_html_or_markdown_style_capitalize_first_letter: - - "[X11 Hash](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/1146918/X11) --- Dash Wiki" + - "[X11 Hash](https://docs.dash.org/en/latest/introduction/features.html#x11-hash-algorithm) --- Dash Documentation" --- diff --git a/_includes/devdoc/guide_block_chain.md b/_includes/devdoc/guide_block_chain.md index fde62437..9ce0640f 100644 --- a/_includes/devdoc/guide_block_chain.md +++ b/_includes/devdoc/guide_block_chain.md @@ -130,7 +130,7 @@ The ideal value is 3600 (one hour). This method of calculating difficulty (Dark Gravity Wave) was authored by Dash creator Evan Duffield to fix exploits possible with the previously used Kimoto Gravity Well difficulty readjustment algorithm. For additional detail, -reference this [Official Documentation Dark Gravity Wave page](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/1146926/Dark+Gravity+Wave). +reference this [Official Documentation Dark Gravity Wave page](https://docs.dash.org/en/latest/introduction/features.html#dark-gravity-wave). Because each block header must hash to a value below the target threshold, and because each block is linked to the block that diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 56bd08dd..17d9ab87 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -118,7 +118,7 @@ had already been confirmed to a block depth of 5 in the blockchain. Dash Core's PrivateSend feature provides a way to improve privacy by performing coin-mixing without relinquishing custodial access. For additional details, -reference this [Official Documentation PrivateSend page](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/1146924/PrivateSend). +reference this [Official Documentation PrivateSend page](https://docs.dash.org/en/latest/introduction/features.html#privatesend). The following video provides an overview with a good introduction to the details: @@ -327,7 +327,7 @@ network. The payee is selected from a subset of masternodes made up of 10% of eligible nodes that have been waiting the longest since their last payment. The winner is then determined based on a number of parameters including the distance between the its hash and the block's proof of work. For additional -detail, reference this [Official Documentation Payment Logic page](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/8880184/Payment+Logic). +detail, reference this [Official Documentation Payment Logic page](https://docs.dash.org/en/latest/masternodes/understanding.html#payment-logic). Nodes receiving a `mnw` message verify the validity of the message before relaying it to their peers. If the message is invalid, the sending node may be diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 11b0bcab..1d729466 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -3137,7 +3137,7 @@ message header has been omitted.) {% autocrossref %} The following network messages enable the Governance features built in to Dash. -For additional details on the governance system, see this [Budget System page](https://dashpay.atlassian.net/wiki/spaces/DOC/pages/8585246/Budget+System+Funding+Voting+DGBB). +For additional details on the governance system, see this [Budget System page](https://docs.dash.org/en/latest/governance/index.html). ![Overview Of P2P Protocol Governance Request And Reply Messages](/img/dev/en-p2p-governance-messages.svg) diff --git a/_includes/templates/index.html b/_includes/templates/index.html index 7076c7a1..d674ebb9 100644 --- a/_includes/templates/index.html +++ b/_includes/templates/index.html @@ -64,7 +64,6 @@ http://opensource.org/licenses/MIT.

    Payment Protocol - BIP70

    @@ -78,9 +77,9 @@ http://opensource.org/licenses/MIT.

    Additional resources

    -

    Dash Whitepaper - Official Wiki

    +

    Dash Whitepaper - Official Wiki

    Dash Improvement Proposals - GitHub

    -

    Dash Documentation - Official Wiki

    +

    Bitcoin: A Peer-to-Peer Electronic Cash System - Satoshi Nakamoto

    Bitcoin Improvement Proposals (with Dash updates) - GitHub

    From c2e6fae3cf5500cad716b8aa8f4cbdff3a075b06 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 14 Feb 2019 10:06:40 -0500 Subject: [PATCH 050/117] Update Doxygen project number to current Dash Core version (#107) --- doxygen/Doxyfile-dashdocs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen/Doxyfile-dashdocs b/doxygen/Doxyfile-dashdocs index d7441961..20cb5fe0 100644 --- a/doxygen/Doxyfile-dashdocs +++ b/doxygen/Doxyfile-dashdocs @@ -41,7 +41,7 @@ PROJECT_NAME = "Dash Core" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.12.3.3 +PROJECT_NUMBER = 0.13.1.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a From 5387d8ec44358dc9957edef585ee46a721e43806 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 6 Mar 2019 10:24:50 -0500 Subject: [PATCH 051/117] RPC - Add getspecialtxes RPC (#108) * RPC - Add getspecialtxes RPC Related to dashpay/dash#2688 * RPC - Add getspecialtxes to RPC summary table --- _autocrossref.yaml | 2 + _config.yml | 1 + .../devdoc/dash-core/rpcs/quick-reference.md | 7 +- .../dash-core/rpcs/rpcs/getrawtransaction.md | 1 + .../dash-core/rpcs/rpcs/getspecialtxes.md | 222 ++++++++++++++++++ _includes/helpers/summaries.md | 1 + _includes/layout/base/rpc-table.html | 6 + _includes/references.md | 1 + en/developer-reference.md | 2 + 9 files changed, 242 insertions(+), 1 deletion(-) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/getspecialtxes.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index bed96020..f94d6606 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -398,6 +398,8 @@ DIP1: '`getreceivedbyaccount` RPC': rpc getreceivedbyaccount '`getreceivedbyaddress`': rpc getreceivedbyaddress '`getreceivedbyaddress` RPC': rpc getreceivedbyaddress +'`getspecialtxes`': rpc getspecialtxes +'`getspecialtxes` RPC': rpc getspecialtxes '`getspentinfo`': rpc getspentinfo '`getspentinfo` RPC': rpc getspentinfo '`getsuperblockbudget`': rpc getsuperblockbudget diff --git a/_config.yml b/_config.yml index 940789f0..2e4e538a 100644 --- a/_config.yml +++ b/_config.yml @@ -250,6 +250,7 @@ devsearches: - 'GetRawTransaction': "/en/developer-reference#getrawtransaction" - 'GetReceivedByAccount': "/en/developer-reference#getreceivedbyaccount" - 'GetReceivedByAddress': "/en/developer-reference#getreceivedbyaddress" + - 'GetSpecialTxes': "/en/developer-reference#getspecialtxes" - 'GetSpentInfo': "/en/developer-reference#getspentinfo" - 'GetSuperblockBudget': "/en/developer-reference#getsuperblockbudget" - 'GetTransaction': "/en/developer-reference#gettransaction" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index deab1b83..b207abe4 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -19,7 +19,11 @@ Use v0.n.n in abbreviation title to prevent autocrossrefing. {% assign DASH_NOT_IMPLEMENTED='**Not Implemented**' %} - + +{% assign DASH_NEW0_13_1='**New in Dash Core 0.13.1**' %} +{% assign DASH_UPDATED0_13_1='**Updated in Dash Core 0.13.1**' %} + + {% assign DASH_NEW0_13_0='**New in Dash Core 0.13.0**' %} {% assign DASH_UPDATED0_13_0='**Updated in Dash Core 0.13.0**' %} @@ -115,6 +119,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetMemPoolEntry][rpc getmempoolentry]: {{summary_getMemPoolEntry}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [GetMemPoolInfo][rpc getmempoolinfo]: {{summary_getMemPoolInfo}} {{UPDATED0_12_0}} * [GetRawMemPool][rpc getrawmempool]: {{summary_getRawMemPool}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} +* [GetSpecialTxes][rpc getspecialtxes]: {{summary_getSpecialTxes}} {{DASH_NEW0_13_1}} * [GetSpentInfo][rpc getspentinfo]: {{summary_getSpentInfo}} {{DASH_NEW0_12_1}} * [GetTxOut][rpc gettxout]: {{summary_getTxOut}} * [GetTxOutProof][rpc gettxoutproof]: {{summary_getTxOutProof}} {{NEW0_11_0}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md index 36736207..d7a89f26 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md @@ -284,6 +284,7 @@ Result: *See also* +* [GetSpecialTxes][rpc getspecialtxes]: {{summary_getSpecialTxes}} * [GetTransaction][rpc gettransaction]: {{summary_getTransaction}} {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getspecialtxes.md b/_includes/devdoc/dash-core/rpcs/rpcs/getspecialtxes.md new file mode 100644 index 00000000..7935a66e --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getspecialtxes.md @@ -0,0 +1,222 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/getspecialtxes.md" %} + +##### GetSpecialTxes +{% include helpers/subhead-links.md %} + +{% assign summary_getSpecialTxes="returns an array of special transactions found in the specified block" %} + +{% autocrossref %} + +*Added in Dash Core 0.13.1* + +The `getspecialtxes` RPC {{summary_getSpecialTxes}} + +*Parameter #1---Block hash* + +{% itemplate ntpd1 %} +- n: "`blockhash`" + t: "string" + p: "Required
    (exactly 1)" + d: "The block hash." +{% enditemplate %} + +*Parameter #2---Special transaction type* + +{% itemplate ntpd1 %} +- n: "type" + t: "int" + p: "Optional
    (0 or 1)" + d: "Filter special txes by type, -1 means all types (default: -1)" + +{% enditemplate %} + +*Parameter #3---Result limit* + +{% itemplate ntpd1 %} +- n: "count" + t: "int" + p: "Optional
    (0 or 1)" + d: "The number of transactions to return (default: 10)" + +{% enditemplate %} + +*Parameter #4---Results to skip* + +{% itemplate ntpd1 %} +- n: "skip" + t: "int" + p: "Optional
    (0 or 1)" + d: "The number of transactions to skip (default: 0)" + +{% enditemplate %} + +*Parameter #5---Verbosity* + +{% itemplate ntpd1 %} +- n: "verbosity" + t: "int" + p: "Optional
    (0 or 1)" + d: "0 for hashes, 1 for hex-encoded data, and 2 for JSON object + (default: 0)" + +{% enditemplate %} + +*Result (if `verbosity` was `0`)---An array of transaction IDs* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string (hex): array" + p: "Required
    (exactly 1)" + d: "Array of special transaction hashes" +{% enditemplate %} + + +*Result (if `verbosity` was `1`)---An array of serialized transactions* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string (hex): array" + p: "Required
    (exactly 1)" + d: "Array of serialized, hex-encoded data for the special transaction(s)" +{% enditemplate %} + +*Result (if `verbosity` was `2`)---An array of JSON objects* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string (hex): array of ojbects" + p: "Required
    (exactly 1)" + d: "Array of special transaction objects in the format of the `getrawtransaction` RPC" +{% enditemplate %} + +*Example from Dash Core 0.13.1* + +List of Special Transactions hashes. + +{% highlight bash %} +dash-cli -testnet getspecialtxes \ +0000003db0006ecaccdf5ae2cfa9d94406ef40ff65b9ec34668b87fca3da9226 +{% endhighlight %} + +Result: +{% highlight json %} +[ + "1572a15f56307e413afe3cb7ea0017a1a3fd6d89c6c5f258cc17b2888a8e7fff", + "89a6dc42063e4a792ec225db64dd9426742a5d1738e8821625d2ab920a6187b2", + "fa3b3b0d3522becb02ddd15dd075f3d6ecc6a5a50b43c6c9f6d4703a9a8509d5" +] +{% endhighlight %} + +List of Provider Registration Special Transactions (type: 1) in serialized, hex-encoded format. + +{% highlight bash %} +dash-cli -testnet getspecialtxes \ +0000003db0006ecaccdf5ae2cfa9d94406ef40ff65b9ec34668b87fca3da9226 1 10 0 1 +{% endhighlight %} + +Result: +{% highlight json %} +[ + "0300010001ea721d7420a9b58025894d08f9fecc73b7b87ed09277fa99dad5aa028ea357e1000000006b48304502210093c409672eed335f80630d7108c108d0b85ebe4d8be0758f8a3745f617c4b57302203175063605552c89f6de7f3dadc1773d5ef773b7cc0ccf98e6c5555ea75ba307012102b21d19fec95d9863c5b12fafeb60530e1cfc51d83f49ea9bca7192abb8b83e46feffffff01c4bb609a010000001976a9142efe9f9d3b36b133364d3cccbd27db75a0fbdcb788ac00000000fd120101000000000031567fbaf591ae9d2d0e9050bebce6a311cfd900616f851a3a630aa65e53f6940000000000000000000000000000ffffad3d1ee74a43c1ad3af209f75deaeb9216fc8339fd48d376f9b007ffa44583c9908f4aaca8dd97990c56043e475723f90940ef5fd7d493152540f25f58fb8c965ee5e1be4f850a661476c1ad3af209f75deaeb9216fc8339fd48d376f9b0e8031976a91454bbd7bd7c21553612d60ab16579e51efbcb135288acc281e8bf5a0dd22dfc9f1edeef9ef248f965a79210d997da37fb3e1dec76d1a4412096809bc005c860a0215cb008e3044b972688443b0b7a31ac5a04b728e63b1b5c5489e33dd666435f93c646523ad8a1d935a58957026749cbd0a9bf7e09a77388", + "03000100012354b77c0f261f3d5b8424cbe67c2f27130f01c531732a08b8ae3f28aaa1b1fb000000006a473044022058323d3d9114492a7a7d350d5e3127d2dc550563968319987079c98f19ed519202204160cfe81adf1f41301136a3cbe03697baa1b14c3103b66bd839ace503dbf2630121026f83a8dad6b4695b136c399405b31d4031fd6631c469673d71eda479157ef9dcfeffffff0106b8609a010000001976a9142a855dc127bfdd5cc0ab73b71ff126e49aa409c488ac00000000fd1201010000000000b60dcb8bab5aba47435942c36ca4ee74ea5b662f4d7c7b528ce341915b2d5aec0100000000000000000000000000ffffad3d1ee74a428d3433cb6b9a1a29fdf07613172bbfdab744889689e308c9d2d8a3cb35f9d7bb7220b1eca82c952b82111119670dacae18a509628c775287e4e796128cd6379b80dffd7d8d3433cb6b9a1a29fdf07613172bbfdab744889610271976a91454bbd7bd7c21553612d60ab16579e51efbcb135288ac512010a2b992d7d5c1e1f999852855cc55162800025cfdf3b56c74e4734a2d97411f858532607cbd8848452dab1f216650def1d11a5abf3fa464c9ffcc7fec894a012a4b70ee5d3b983b5fe640f04a7f3e4fe67fbb5b7cccb71afa37888ad6cca48e" +] +{% endhighlight %} + +List of Coinbase Special Transactions (type: 5) in JSON format. + +{% highlight bash %} +dash-cli -testnet getspecialtxes \ +0000003db0006ecaccdf5ae2cfa9d94406ef40ff65b9ec34668b87fca3da9226 5 10 0 2 +{% endhighlight %} + +Result: +{% highlight json %} +[ + { + "txid": "1572a15f56307e413afe3cb7ea0017a1a3fd6d89c6c5f258cc17b2888a8e7fff", + "size": 303, + "version": 3, + "type": 5, + "locktime": 0, + "vin": [ + { + "coinbase": "02051c0e2f5032506f6f6c2d74444153482f", + "sequence": 4294967295 + } + ], + "vout": [ + { + "value": 68.17463792, + "valueSat": 6817463792, + "n": 0, + "scriptPubKey": { + "asm": "OP_DUP OP_HASH160 4f79c383bc5d3e9d4d81b98f87337cedfa789536 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a9144f79c383bc5d3e9d4d81b98f87337cedfa78953688ac", + "reqSigs": 1, + "type": "pubkeyhash", + "addresses": [ + "yTZg6eePKxbJZyoaC93bVrTUq5vjhFrbst" + ] + } + }, + { + "value": 68.85000588, + "valueSat": 6885000588, + "n": 1, + "scriptPubKey": { + "asm": "OP_DUP OP_HASH160 a472d798c41ccb2890b1b932a2b8786c150cf440 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914a472d798c41ccb2890b1b932a2b8786c150cf44088ac", + "reqSigs": 1, + "type": "pubkeyhash", + "addresses": [ + "ybJyF38BxTqKKL7C6VeHqbFRgViRgAfsvC" + ] + } + }, + { + "value": 0.67536809, + "valueSat": 67536809, + "n": 2, + "scriptPubKey": { + "asm": "047559d13c3f81b1fadbd8dd03e4b5a1c73b05e2b980e00d467aa9440b29c7de23664dde6428d75cafed22ae4f0d302e26c5c5a5dd4d3e1b796d7281bdc9430f35 OP_CHECKSIG", + "hex": "41047559d13c3f81b1fadbd8dd03e4b5a1c73b05e2b980e00d467aa9440b29c7de23664dde6428d75cafed22ae4f0d302e26c5c5a5dd4d3e1b796d7281bdc9430f35ac", + "reqSigs": 1, + "type": "pubkey", + "addresses": [ + "yb21342iADyqAotjwcn4imqjvAcdYhnzeH" + ] + } + }, + { + "value": 0.00000000, + "valueSat": 0, + "n": 3, + "scriptPubKey": { + "asm": "OP_RETURN 81b990d34ff599e8f472241357f565e6662ee8694b6ecc2fdbba384a5a08bc1e000000001e000000", + "hex": "6a2881b990d34ff599e8f472241357f565e6662ee8694b6ecc2fdbba384a5a08bc1e000000001e000000", + "type": "nulldata" + } + } + ], + "extraPayloadSize": 38, + "extraPayload": "0100051c0000f258bbb41563f0badab6c2dd47b0d8e73f1b1d88036855223ab0455a750b3ceb", + "cbTx": { + "version": 1, + "height": 7173, + "merkleRootMNList": "eb3c0b755a45b03a22556803881d1b3fe7d8b047ddc2b6dabaf06315b4bb58f2" + }, + "instantlock": false, + "chainlock": false + } +] +{% endhighlight %} + +*See also:* + +* [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} + +{% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index 08045563..b6ddf943 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -69,6 +69,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_getRawTransaction="gets a hex-encoded serialized transaction or a JSON object describing the transaction. By default, Dash Core only stores complete transaction data for UTXOs and your own transactions, so the RPC may fail on historic transactions unless you use the non-default `txindex=1` in your Dash Core startup settings." %} {% assign summary_getReceivedByAccount="returns the total amount received by addresses in a particular account from transactions with the specified number of confirmations. It does not count coinbase transactions." %} {% assign summary_getReceivedByAddress="returns the total amount received by the specified address in transactions with the specified number of confirmations. It does not count coinbase transactions." %} +{% assign summary_getSpecialTxes="returns an array of special transactions found in the specified block" %} {% assign summary_getSpentInfo="returns the txid and index where an output is spent (requires `spentindex` to be enabled)." %} {% assign summary_getSuperblockBudget="returns the absolute maximum sum of superblock payments allowed." %} {% assign summary_getTransaction="gets detailed information about an in-wallet transaction." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index de5e9fcc..1a7dfbed 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -151,6 +151,12 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y Updated in 0.12.3.0 + + Blockchain + GetSpecialTxes + Y + 0.13.1+ + Blockchain GetSpentInfo diff --git a/_includes/references.md b/_includes/references.md index 4763e12a..1f522510 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -128,6 +128,7 @@ http://opensource.org/licenses/MIT. [rpc getrawtransaction]: /en/developer-reference#getrawtransaction [rpc getreceivedbyaccount]: /en/developer-reference#getreceivedbyaccount [rpc getreceivedbyaddress]: /en/developer-reference#getreceivedbyaddress +[rpc getspecialtxes]: /en/developer-reference#getspecialtxes [rpc getspentinfo]: /en/developer-reference#getspentinfo [rpc getsuperblockbudget]: /en/developer-reference#getsuperblockbudget [rpc gettransaction]: /en/developer-reference#gettransaction diff --git a/en/developer-reference.md b/en/developer-reference.md index 4c4d963e..4ed0585e 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -206,6 +206,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md %} +{% include devdoc/dash-core/rpcs/rpcs/getspecialtxes.md %} + {% include devdoc/dash-core/rpcs/rpcs/getspentinfo.md %} {% include devdoc/dash-core/rpcs/rpcs/getsuperblockbudget.md %} From d208dac3625417a1f661a77c6c9d836613393467 Mon Sep 17 00:00:00 2001 From: Aiden McClelland Date: Thu, 14 Mar 2019 11:52:02 -0600 Subject: [PATCH 052/117] removed p2pkh constraint on protx register_fund (#109) I have tested this, and it works for P2SH addresses. --- _includes/devdoc/dash-core/rpcs/rpcs/protx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md index 628e5ff9..13adde26 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md @@ -146,7 +146,7 @@ The `protx register_fund` RPC creates and funds a ProRegTx with the - n: "`collateralAddress`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "The Dash address to send the collateral to (must be a P2PKH address)" + d: "The Dash address to send the collateral to" {% enditemplate %} *Parameter #2---IP Address and port* From 097903ca2d8dc0def0c881afececb9ebd3334169 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 20 Mar 2019 10:42:17 -0400 Subject: [PATCH 053/117] V0.13.2 RPC Masternode lists (#110) * RPC - Update protx list - Add missing fields - Re-order to match actual output * RPC - Update masternodelist --- .../devdoc/dash-core/rpcs/quick-reference.md | 8 +- .../dash-core/rpcs/rpcs/masternodelist.md | 153 ++++++------------ _includes/devdoc/dash-core/rpcs/rpcs/protx.md | 35 ++-- _includes/helpers/vars.md | 38 +++-- _includes/layout/base/rpc-table.html | 4 +- 5 files changed, 100 insertions(+), 138 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index b207abe4..87c72b36 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -19,7 +19,11 @@ Use v0.n.n in abbreviation title to prevent autocrossrefing. {% assign DASH_NOT_IMPLEMENTED='**Not Implemented**' %} - + +{% assign DASH_NEW0_13_2='**New in Dash Core 0.13.2**' %} +{% assign DASH_UPDATED0_13_2='**Updated in Dash Core 0.13.2**' %} + + {% assign DASH_NEW0_13_1='**New in Dash Core 0.13.1**' %} {% assign DASH_UPDATED0_13_1='**Updated in Dash Core 0.13.1**' %} @@ -173,7 +177,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} * [BLS][rpc bls]: {{summary_bls}} {{DASH_NEW0_13_0}} -* [ProTx][rpc protx]: {{summary_proTx}} {{DASH_NEW0_13_0}} +* [ProTx][rpc protx]: {{summary_proTx}} {{DASH_UPDATED0_13_2}} {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md index e31b0d28..b0b3be92 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md @@ -70,7 +70,7 @@ Mode | Description {% enditemplate %} -*Example from Dash Core 0.12.3* +*Example from Dash Core 0.13.2* Get unfiltered Masternode list in default mode @@ -81,122 +81,69 @@ dash-cli -testnet masternodelist Result: {% highlight json %} { - "83ab0eaeffc212fab5aea4a3057fba51dafdfa6da8b29c3f0de62ed9319fea03-0": { - "address": "203.0.113.1:19999", - "payee": "yiz8WZ9VY9F7SyGuc8mXj6wrDERs6T47B1", + "c568e386687bb317e52f4dcb402e83a93a13a43df6da029c95834ed2603c1f01-0": { + "address": "173.61.30.231:19003", + "payee": "yWc9sVgvRi6mB81KZLwchwUjjCNmF6ktaJ", "status": "ENABLED", - "protocol": 70208, - "daemonversion": "Unknown", - "sentinelversion": "1.0.2", - "sentinelstate": "current", - "lastseen": 1520876844, - "activeseconds": 3389581, - "lastpaidtime": 1520868832, - "lastpaidblock": 89879 - }, - "33a833559acc50b63e0909a550d10af26f41043382a9eed30e5218df5adf5304-1": { - "address": "203.0.113.2:39999", - "payee": "yfY21tLcuKtohnkKtwBQXzEKFapwuhb9FE", - "status": "ENABLED", - "protocol": 70208, - "daemonversion": "Unknown", - "sentinelversion": "1.1.0", - "sentinelstate": "current", - "lastseen": 1520876480, - "activeseconds": 2110895, - "lastpaidtime": 1520866020, - "lastpaidblock": 89862 - }, - "54754314335419cc04ef09295ff7765c8062a6123486aed55fd7e9b04f300b13-0": { - "address": "203.0.113.3:20019", - "payee": "ycn5RWc4Ruo35FTS8bJwugVyCEkfVcrw9a", - "status": "NEW_START_REQUIRED", - "protocol": 70208, + "protocol": 70213, "daemonversion": "Unknown", "sentinelversion": "Unknown", "sentinelstate": "expired", - "lastseen": 1517843286, - "activeseconds": 0, - "lastpaidtime": 1520873295, - "lastpaidblock": 89898 + "lastseen": 0, + "activeseconds": -1553091168, + "lastpaidtime": 1553077123, + "lastpaidblock": 64693, + "owneraddress": "yjW7bQrKBsMV8Wh19LgT8Z1uLkWY8P2EBd", + "votingaddress": "yjW7bQrKBsMV8Wh19LgT8Z1uLkWY8P2EBd", + "collateraladdress": "yVZjfAYphQeyFj3XKGJ7FE7n4A9Lok1X7y" }, - "a4676419793d232359dfd7240bf1b0635b56f2a16aac4cb57f7e9ba459d50116-1": { - "address": "203.0.113.4:19999", - "payee": "ydZHEVgMX67xsi97BhN8KoacN6SCMz6Xho", - "status": "SENTINEL_PING_EXPIRED", - "protocol": 70208, + "bc3b58904a9f09b4641ffece61af28744826fffa00aabe45ef40af959a78690c-1": { + "address": "52.42.213.147:19999", + "payee": "yXsKagNKcHkE2eUKQe8Sf2Z32SKrmQ6XEJ", + "status": "ENABLED", + "protocol": 70213, "daemonversion": "Unknown", - "sentinelversion": "1.0.2", + "sentinelversion": "Unknown", "sentinelstate": "expired", - "lastseen": 1520876776, - "activeseconds": 7694877, - "lastpaidtime": 0, - "lastpaidblock": 0 + "lastseen": 0, + "activeseconds": -1553091168, + "lastpaidtime": 1553078267, + "lastpaidblock": 64747, + "owneraddress": "yeARCinqiurM9oni3VQ2Grm3Z6tXYxfKAR", + "votingaddress": "yeARCinqiurM9oni3VQ2Grm3Z6tXYxfKAR", + "collateraladdress": "yUq2J9YhZXSTQ76ifm9BHFvTtDMhWR8v6k" }, - "3d64bd65cb84b935278420de3673cba33470a1e1996c4debfccb5d722254404c-1": { - "address": "203.0.113.5:19999", - "payee": "ySkDc9dHns1AFcjJzGqNmkNnErjakcB2Bp", + "8b4a475fec02166c0d4a1dc6ede23e236a4cd07bb31d959fe5ed155fdc902b18-0": { + "address": "95.183.53.17:10003", + "payee": "yYdXDDtfzSkRKUBDLH8qW2AfvehD1M9gM8", "status": "ENABLED", - "protocol": 70208, + "protocol": 70213, "daemonversion": "Unknown", - "sentinelversion": "1.0.2", - "sentinelstate": "current", - "lastseen": 1520876576, - "activeseconds": 10796968, - "lastpaidtime": 1520876143, - "lastpaidblock": 89922 - }, - "54355b4b4d26b84821dab6e0e1c0bded7d8fefc72414f22f45515d1732f1c8e6-1": { - "address": "203.0.113.6:29999", - "payee": "yPk4NCyqvWjeJbE3tW1wmJ9LV2wgVLiYRT", - "status": "ENABLED", - "protocol": 70208, - "daemonversion": "Unknown", - "sentinelversion": "1.1.0", - "sentinelstate": "current", - "lastseen": 1520876323, - "activeseconds": 2110746, - "lastpaidtime": 1520875985, - "lastpaidblock": 89920 - }, - "c6585f4ba88875eb2edc376b9ae24b74fd8c0ef89288923cf16a8fe2787b7ce8-1": { - "address": "203.0.113.7:19999", - "payee": "yP1UHNx26ShYLej56SbHiTiPAUv2QppbUv", - "status": "SENTINEL_PING_EXPIRED", - "protocol": 70208, - "daemonversion": "Unknown", - "sentinelversion": "1.0.2", + "sentinelversion": "Unknown", "sentinelstate": "expired", - "lastseen": 1520876884, - "activeseconds": 7694986, - "lastpaidtime": 0, - "lastpaidblock": 0 + "lastseen": 0, + "activeseconds": -1553091168, + "lastpaidtime": 1553078177, + "lastpaidblock": 64743, + "owneraddress": "yW9zeJrPv5yJf71qvNfyPrJg8Me9UdaDP3", + "votingaddress": "yW9zeJrPv5yJf71qvNfyPrJg8Me9UdaDP3", + "collateraladdress": "yX91ss7HuAH85TAv7tq5dVdMXJ68d4vJHT" }, - "b7d45ac3d8c5ddea9ff90d81d92d362e09713a06b2a0089f49c7deb9b2521fef-0": { - "address": "203.0.113.8:19999", - "payee": "yN4iFe7a2G6YYoBtUXcoyixCTV3vDzWSrS", - "status": "NEW_START_REQUIRED", - "protocol": 70208, - "daemonversion": "Unknown", - "sentinelversion": "1.0.2", - "sentinelstate": "current", - "lastseen": 1508842770, - "activeseconds": 416775, - "lastpaidtime": 0, - "lastpaidblock": 0 - }, - "5ef4e5c9d09f6fb927b7b815ea2736ddfce468021d49704acfc3bb7939b425ff-1": { - "address": "203.0.113.9:19999", - "payee": "yPwTQgY8JDFaDjAgUdHmapG4SmzY6SDbE9", + "d0a5d2bb6316a78e1e82569f625b56f68d7578eb2e22949f2a652bb1915f881b-1": { + "address": "140.82.59.51:19999", + "payee": "yYRfiUCoTjYAontZHqd7wAw7PhR2zru55V", "status": "ENABLED", - "protocol": 70208, + "protocol": 70213, "daemonversion": "Unknown", - "sentinelversion": "1.1.0", - "sentinelstate": "current", - "lastseen": 1520876862, - "activeseconds": 2111317, - "lastpaidtime": 1520872118, - "lastpaidblock": 89892 + "sentinelversion": "Unknown", + "sentinelstate": "expired", + "lastseen": 0, + "activeseconds": -1553091168, + "lastpaidtime": 1553077735, + "lastpaidblock": 64724, + "owneraddress": "yX2VYLpM9ybXZHTbTEmND581QZSNRHucWm", + "votingaddress": "yX2VYLpM9ybXZHTbTEmND581QZSNRHucWm", + "collateraladdress": "ygkUtF9AbUwmGVjq2vfCUp4Znd3X9QiEqv" } } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md index 13adde26..5e8e158d 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md @@ -497,7 +497,7 @@ returned. If set to `false`, only the hashes of the ProTx will be returned. {% enditemplate %} -*Example from Dash Core 0.13.0* +*Example from Dash Core 0.13.2* {% highlight bash %} dash-cli -testnet protx list @@ -537,30 +537,31 @@ Result: {% highlight json %} [ { - "proTxHash": "2b4a07a9b04dc42a0c19b85edb60954a27acaadfe3ee21d0171385778f34e1c2", - "collateralHash": "8d23d08ee6e2e0577550c90afde9bc63745f734605724ba9908e0220c48dec04", - "collateralIndex": 1, - "operatorReward": 5, + "proTxHash": "c48a44a9493eae641bea36992bc8c27eaaa33adb1884960f55cd259608d26d2f", + "collateralHash": "e3270ff48c4b802d56ee58d3d53777f7f9c289964e4df0842518075fc81345b1", + "collateralIndex": 3, + "collateralAddress": "yYpzTXjVx7A5uohsmW8sRy7TJp4tihVuZg", + "operatorReward": 0, "state": { - "registeredHeight": 683, - "lastPaidHeight": 700, + "service": "1.2.3.4:1234", + "registeredHeight": 7090, + "lastPaidHeight": 0, "PoSePenalty": 0, "PoSeRevivedHeight": -1, "PoSeBanHeight": -1, "revocationReason": 0, - "keyIDOwner": "29705bab955f252f876cbe47958b20feaa2b3e99", - "pubKeyOperator": "0bfd3d519f16de1669e977c316bd53fc902f83a75b6008dff3a7037ab4d3edaa39eadb13f5d6d1f192673f9ab86f17a2", - "keyIDVoting": "29705bab955f252f876cbe47958b20feaa2b3e99", - "addr": "1.2.3.4:1234", - "payoutAddress": "ybeK49S8ineDqNV698GZdMpdiHaYsZUJ2g" + "ownerAddress": "yTMDce5yEpiPqmgPrPmTj7yAmQPJERUSVy", + "votingAddress": "yTMDce5yEpiPqmgPrPmTj7yAmQPJERUSVy", + "payoutAddress": "yU3UdrmS6KpWwBDLQTkp1KjXePwWsMbYdj", + "pubKeyOperator": "8700add55a28ef22ec042a2f28e25fb4ef04b3024a7c56ad7eed4aebc736f312d18f355370dfb6a5fec9258f464b227e" }, - "confirmations": -1, + "confirmations": 1, "wallet": { - "hasOwnerKey": true, + "hasOwnerKey": false, "hasOperatorKey": false, - "hasVotingKey": true, - "ownsCollateral": true, - "ownsPayeeScript": true, + "hasVotingKey": false, + "ownsCollateral": false, + "ownsPayeeScript": false, "ownsOperatorRewardScript": false } } diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index 1a81ad22..21d50154 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -459,6 +459,11 @@ NOT IN DASH p: "Required
    (exactly 1)" d: "The collateral index" +- n: "{{DEPTH}} → →
    `collateralAddress`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The collateral address" + - n: "{{DEPTH}} →
    `operatorReward`" t: "number (int)" p: "Required
    (exactly 1)" @@ -469,6 +474,11 @@ NOT IN DASH p: "Required
    (exactly 1)" d: "An object containing a provider transaction state" +- n: "{{DEPTH}} → →
    `service`" + t: "string" + p: "Required
    (exactly 1)" + d: "The masternode's IP:Port" + - n: "{{DEPTH}} → →
    `registeredHeight`" t: "number (int)" p: "Required
    (exactly 1)" @@ -499,30 +509,30 @@ NOT IN DASH p: "Required
    (exactly 1)" d: "The reason for a ProUpRegTx revocation" -- n: "{{DEPTH}} → →
    `keyIDOwner`" +- n: "{{DEPTH}} → →
    `ownerAddress`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "The owner key" + d: "The owner address" + +- n: "{{DEPTH}} → →
    `votingAddress`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The voting address" + +- n: "{{DEPTH}} → →
    `payoutAddress`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The owner's payout address" - n: "{{DEPTH}} → →
    `pubKeyOperator`" t: "string (hex)" p: "Required
    (exactly 1)" d: "The operator public key" -- n: "{{DEPTH}} → →
    `keyIDVoting`" +- n: "{{DEPTH}} → →
    `operatorPayoutAddress`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "The voting key" - -- n: "{{DEPTH}} → →
    `addr`" - t: "string" - p: "Required
    (exactly 1)" - d: "The masternode's IP:Port" - -- n: "{{DEPTH}} → →
    `payoutAddress`" - t: "string (hex)" - p: "Required
    (exactly 1)" - d: "The payout address" + d: "The operator's payout address" - n: "{{DEPTH}} →
    `confirmations`" t: "number (int)" diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 1a7dfbed..83a7b493 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -269,7 +269,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash MasternodeList Y - Updated in 0.12.3.0 + Updated in 0.13.2.0 Dash @@ -311,7 +311,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Evolution ProTx Y - Added in 0.13.0 + Updated in 0.13.2 Generating From 500e2561a89e654492b823afdfb0ddb5ab7e69ab Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 21 Mar 2019 11:32:33 -0400 Subject: [PATCH 054/117] 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 --- .../devdoc/dash-core/rpcs/quick-reference.md | 16 +- .../dash-core/rpcs/rpcs/getgovernanceinfo.md | 16 +- .../devdoc/dash-core/rpcs/rpcs/masternode.md | 570 +++--------- .../rpcs/rpcs/masternodebroadcast.md | 4 +- .../dash-core/rpcs/rpcs/masternodelist.md | 125 ++- .../devdoc/dash-core/rpcs/rpcs/mnsync.md | 21 +- .../dash-core/rpcs/rpcs/sentinelping.md | 4 +- _includes/devdoc/dash-core/rpcs/rpcs/spork.md | 26 +- _includes/devdoc/ref_p2p_networking.md | 857 +++++++++--------- _includes/helpers/summaries.md | 4 +- _includes/layout/base/rpc-table.html | 12 +- _includes/references.md | 2 +- 12 files changed, 662 insertions(+), 995 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 87c72b36..b9d3281c 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -19,6 +19,10 @@ Use v0.n.n in abbreviation title to prevent autocrossrefing. {% assign DASH_NOT_IMPLEMENTED='**Not Implemented**' %} + +{% assign DASH_NEW0_14_0='**New in Dash Core 0.14.0**' %} +{% assign DASH_UPDATED0_14_0='**Updated in Dash Core 0.14.0**' %} + {% assign DASH_NEW0_13_2='**New in Dash Core 0.13.2**' %} {% assign DASH_UPDATED0_13_2='**Updated in Dash Core 0.13.2**' %} @@ -155,16 +159,14 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} -* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_13_0}} +* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_14_0}} * [GetPoolInfo][rpc getpoolinfo]: {{summary_getPoolInfo}} * [GetSuperblockBudget][rpc getsuperblockbudget]: {{summary_getSuperblockBudget}} * [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_13_0}} -* [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_13_0}} -* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}} -* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_12_3}} -* [MnSync][rpc mnsync]: {{summary_mnSync}} +* [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_14_0}} +* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_14_0}} +* [MnSync][rpc mnsync]: {{summary_mnSync}} {{DASH_UPDATED0_14_0}} * [PrivateSend][rpc privatesend]: {{summary_privateSend}} {{DASH_UPDATED0_12_3}} -* [SentinelPing][rpc sentinelping]: {{summary_sentinelPing}} * [Spork][rpc spork]: {{summary_spork-rpc}} * [VoteRaw][rpc voteraw]: {{summary_voteRaw}} @@ -337,5 +339,7 @@ default. * [GetHashesPerSec][rpc gethashespersec]: {{summary_getHashesPerSec}} * [GetWork][rpc getwork]: {{summary_getWork}} * [GetGenerate][rpc getgenerate]: {{summary_getGenerate}} +* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}} +* [SentinelPing][rpc sentinelping]: {{summary_sentinelPing}} * [SetGenerate][rpc setgenerate]: {{summary_setGenerate}} {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md index fb92d8d9..0b151dfc 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md @@ -30,16 +30,6 @@ The `getgovernanceinfo` RPC {{summary_getGovernanceInfo}} p: "Required
    (exactly 1)" d: "The absolute minimum number of votes needed to trigger a governance action" -- n: "→
    `masternodewatchdogmaxseconds`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "*DEPRECATED in Dash Core 0.12.3*

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

    Sentinel ping expiration time in seconds" - - n: "→
    `proposalfee`" t: "number (int)" p: "Required
    (exactly 1)" @@ -62,7 +52,7 @@ The `getgovernanceinfo` RPC {{summary_getGovernanceInfo}} {% enditemplate %} -*Example from Dash Core 0.13.0.0* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet getgovernanceinfo @@ -70,10 +60,8 @@ dash-cli -testnet getgovernanceinfo Result: {% highlight json %} - +{ "governanceminquorum": 1, - "masternodewatchdogmaxseconds": 3600, - "sentinelpingmaxseconds": 3600, "proposalfee": 5.00000000, "superblockcycle": 24, "lastsuperblock": 250824, diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md index 83cb1f06..555ad474 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md @@ -17,62 +17,6 @@ The `masternode` RPC {{summary_masternode}} {% endautocrossref %} -###### Masternode Check - - -{% autocrossref %} - -The `masternode 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
    (exactly 1)" - d: "Masternode check results" - -- n: "→
    `removedTotalCount`" - t: "int" - p: "Required
    (exactly 1)" - d: "Count of all masternodes that were removed" - -- n: "→
    `removedEnabledCount`" - t: "int" - p: "Required
    (exactly 1)" - d: "Count of enabled masternodes that were removed" - -- n: "→
    `totalCount`" - t: "int" - p: "Required
    (exactly 1)" - d: "Count of all masternodes" - -- n: "→
    `enabledCount`" - t: "int" - p: "Required
    (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 Count @@ -85,7 +29,7 @@ The `masternode count` RPC prints the number of all known masternode {% itemplate ntpd1 %} - n: "Mode" t: "string (hex)" - p: "Optional
    (exactly 1)" + p: "Deprecated" d: "Which masternodes to count:
    `total` - Pre-0.12.3 default result,
    `ps` - PrivateSend capable,
    `enabled` - Enabled,
    `all` - All,
    `qualify` - Eligible for payment" {% enditemplate %} @@ -103,24 +47,14 @@ The `masternode count` RPC prints the number of all known masternode p: "Required
    (exactly 1)" d: "Count of all masternodes" -- n: "→
    `ps_compatible`" - t: "int" - p: "Required
    (exactly 1)" - d: "Count of PrivateSend compatible masternodes" - - n: "→
    `enabled`" t: "int" p: "Required
    (exactly 1)" d: "Count of enabled masternodes" -- n: "→
    `qualify`" - t: "int" - p: "Required
    (exactly 1)" - d: "Count of masternodes qualified to receive payment" - {% enditemplate %} -*Example from Dash Core 0.12.3* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet masternode count @@ -129,10 +63,8 @@ dash-cli -testnet masternode count Result: {% highlight bash %} { - "total": 142, - "ps_compatible": 13, - "enabled": 13, - "qualify": 6 + "total": 185, + "enabled": 130 } {% endhighlight %} @@ -149,7 +81,7 @@ Result: {% enditemplate %} -*Example from Dash Core 0.12.3* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet masternode count all @@ -157,7 +89,7 @@ dash-cli -testnet masternode count all Result: {% highlight bash %} -Total: 129 (PS Compatible: 97 / Enabled: 97 / Qualify: 90) +Total: 185 (Enabled: 130) {% endhighlight %} **Get total count of all masternodes (default output of `masternode count` pre-0.12.3)** @@ -258,92 +190,6 @@ Result: } {% endhighlight %} -{% endautocrossref %} - -###### Masternode Debug - - -{% autocrossref %} - -The `masternode debug` RPC prints masternode status. - -{{WARNING}} `masternode debug` was removed in Dash Core 0.12.2.2. - -*Parameters: none* - -*Result---masternode status* - -{% itemplate ntpd1 %} -- n: "Result" - t: "string" - p: "Required
    (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 Genkey - - -{% autocrossref %} - -The `masternode genkey` RPC generates a new masternodeprivkey. - -*Parameter #1---generate compressed key* - -{% itemplate ntpd1 %} -- n: "Compressed" - t: "bool" - p: "Optional
    (0 or 1)" - d: "*Added in Dash Core 0.13.0*

    If set to `true`, generates a compressed private key (default: false)" - -{% enditemplate %} - -*Result---masternode private key* - -{% itemplate ntpd1 %} -- n: "Result" - t: "string" - p: "Required
    (exactly 1)" - d: "Masternode private key" - -{% enditemplate %} - -*Example from Dash Core 0.13.0* - -{% highlight bash %} -dash-cli -testnet masternode genkey -{% endhighlight %} - -Result: -{% highlight bash %} -92Mn5DQpnBHjFPbS3ZXcX3EdhuET18u3eXTTtVsdDzdcAMaXqtG -{% endhighlight %} - -*Example from Dash Core 0.13.0 (compressed key)* - -{% highlight bash %} -dash-cli -testnet masternode genkey true -{% endhighlight %} - -Result: -{% highlight bash %} -cUHWQZQQNtrnvyYS3hERYyuzttvFAdw6JkrwS6T2gTZreH3oY6NJ -{% endhighlight %} - - {% endautocrossref %} ###### Masternode Outputs @@ -385,189 +231,6 @@ Result: {% endautocrossref %} -###### Masternode Start - - -{% autocrossref %} - -The `masternode start` RPC starts a local hot masternode configure in dash.conf. - -{{WARNING}} `masternode 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
    (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 Start-alias - - -{% autocrossref %} - -The `masternode start-alias` starts a single remote masternode by assigned alias configured in masternode.conf. - -*Parameter #1---masternode alias* - -{% itemplate ntpd1 %} -- n: "Alias" - t: "string" - p: "Required
    (exactly 1)" - d: "Alias of the masternode to start" - -{% enditemplate %} - -*Result---masternode status* - -{% itemplate ntpd1 %} -- n: "Result" - t: "string" - p: "Required
    (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 Start-mode - - -{% autocrossref %} - -The `masternode start-` RPC starts remote masternodes configured in -masternode.conf. Valid modes are: `all`, `missing`, or `disabled`. - -*Parameters: none* - -*Result---masternode status* - -{% itemplate ntpd1 %} -- n: "Result" - t: "string" - p: "Required
    (exactly 1)" - d: "Masternode status" - -- n: "→
    `overall`" - t: "string" - p: "Required
    (1 or more)" - d: "Reports masternode start successes/failures" - -- n: "→
    `detail`" - t: "object" - p: "Required
    (exactly 1)" - d: "Start details" - -- n: "→ →
    `status`" - t: "object" - p: "Required
    (1 or more)" - d: "Name of the masternode alias" - -- n: "→ → →
    `alias`" - t: "string" - p: "Required
    (exactly 1)" - d: "Masternode alias" - -- n: "→ → →
    `result`" - t: "string" - p: "Required
    (exactly 1)" - d: "Start result" - -{% enditemplate %} - - -*Example from Dash Core 0.12.2* - -Start all masternodes in masternodes.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.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.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 Status @@ -587,7 +250,7 @@ The `masternode status` RPC prints masternode status information. - n: "→
    `outpoint`" t: "string" - p: "Required
    (1 or more)" + p: "Required
    (exactly 1)" d: "The masternode's outpoint" - n: "→
    `service`" @@ -595,10 +258,85 @@ The `masternode status` RPC prints masternode status information. p: "Required
    (exactly 1)" d: "The IP address/port of the masternode" -- n: "→
    `payee`" +- n: "→
    `proTxHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The masternode's ProRegTx hash" + +- n: "→
    `collateralHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The masternode's collateral hash" + +- n: "→
    `collateralIndex`" + t: "int" + p: "Required
    (exactly 1)" + d: "Index of the collateral" + +- n: "→
    `dmnState`" + t: "object" + p: "Required
    (exactly 1)" + d: "Deterministic Masternode State" + +- n: "→
    `service`" t: "string" p: "Required
    (exactly 1)" - d: "Payee address" + d: "The IP address/port of the masternode" + +- n: "→ →
    `registeredHeight`" + t: "int" + p: "Required
    (exactly 1)" + d: "Block height at which the masternode was registered" + +- n: "→ →
    `lastPaidHeight`" + t: "int" + p: "Required
    (exactly 1)" + d: "Block height at which the masternode was last paid" + +- n: "→ →
    `PoSePenalty`" + t: "int" + p: "Required
    (exactly 1)" + d: "Current proof-of-service penalty" + +- n: "→ →
    `PoSeRevivedHeight`" + t: "int" + p: "Required
    (exactly 1)" + d: "Block height at which the masternode was last revived from a PoSe ban" + +- n: "→ →
    `PoSeBanHeight`" + t: "int" + p: "Required
    (exactly 1)" + d: "Block height at which the masternode was last PoSe banned" + +- n: "→ →
    `revocationReason`" + t: "int" + p: "Required
    (exactly 1)" + d: "Reason code for of masternode operator key revocation" + +- n: "→ →
    `ownerAddress`" + t: "string" + p: "Required
    (exactly 1)" + d: "The owner address" + +- n: "→ →
    `votingAddress`" + t: "string" + p: "Required
    (exactly 1)" + d: "The voting address" + +- n: "→ →
    `payoutAddress`" + t: "string" + p: "Required
    (exactly 1)" + d: "The payout address" + +- n: "→ →
    `pubKeyOperator`" + t: "string" + p: "Required
    (exactly 1)" + d: "The operator public key" + +- n: "→ →
    `operatorPayoutAddress`" + t: "string" + p: "Optional
    (0 or 1)" + d: "The operator payout address" - n: "→
    `status`" t: "string" @@ -607,7 +345,7 @@ The `masternode status` RPC prints masternode status information. {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.13.2* {% highlight bash %} dash-cli -testnet masternode status @@ -616,10 +354,26 @@ dash-cli -testnet masternode status Result: {% highlight json %} { - "outpoint": "f6c83fd96bfaa47887c4587cceadeb9af6238a2c86fe36b883c4d7a6867eab0f-1", - "service": "45.32.237.77:19999", - "payee": "yY6AmGopsZS31wy1JLHR9P6AC6owFaXwuh", - "status": "Masternode successfully started" + "outpoint": "d1be3a1aa0b9516d06ed180607c168724c21d8ccf6c5a3f5983769830724c357-0", + "service": "45.32.237.76:19999", + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", + "collateralHash": "d1be3a1aa0b9516d06ed180607c168724c21d8ccf6c5a3f5983769830724c357", + "collateralIndex": 0, + "dmnState": { + "service": "45.32.237.76:19999", + "registeredHeight": 7402, + "lastPaidHeight": 59721, + "PoSePenalty": 0, + "PoSeRevivedHeight": 61915, + "PoSeBanHeight": -1, + "revocationReason": 0, + "ownerAddress": "yT8DDY5NkX4ZtBkUVz7y1RgzbakCnMPogh", + "votingAddress": "yMLrhooXyJtpV3R2ncsxvkrh6wRennNPoG", + "payoutAddress": "yTsGq4wV8WF5GKLaYV2C43zrkr2sfTtysT", + "pubKeyOperator": "02a2e2673109a5e204f8a82baf628bb5f09a8dfc671859e84d2661cae03e6c6e198a037e968253e94cd099d07b98e94e" + }, + "state": "READY", + "status": "Ready" } {% endhighlight %} @@ -651,90 +405,6 @@ Result: {% endautocrossref %} -###### Masternode List-conf - - -{% autocrossref %} - -The `masternode list-conf` RPC prints masternode.conf in JSON format. - -*Parameters: none* - -*Result---masternode info* - -{% itemplate ntpd1 %} -- n: "Result" - t: "object" - p: "Required
    (exactly 1)" - d: "Masternode status info" - -- n: "→
    `masternode`" - t: "object" - p: "Required
    (1 or more)" - d: "Object containing masternode info" - -- n: "→ →
    `alias`" - t: "string" - p: "Required
    (exactly 1)" - d: "Masternode alias" - -- n: "→ →
    `address`" - t: "string" - p: "Required
    (exactly 1)" - d: "The IP address/port of the masternode" - -- n: "→ →
    `privateKey`" - t: "string" - p: "Required
    (exactly 1)" - d: "Masternode private key" - -- n: "→ →
    `txHash`" - t: "string (hex)" - p: "Required
    (exactly 1)" - d: "Masternode collateral transaction hash" - -- n: "→ →
    `outputIndex`" - t: "int" - p: "Required
    (exactly 1)" - d: "Masternode collateral transaction index" - -- n: "→ →
    `status`" - t: "string" - p: "Required
    (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 Winner @@ -914,6 +584,36 @@ Result: } {% endhighlight %} + +**Deprecated RPCs** + +![Warning icon](/img/icons/icon_warning.svg) The following RPCs were deprecated by Dash Core 0.14.0 + +**Masternode Check** + +Forces a check of all masternodes and removes invalid ones. + + +**Masternode Genkey** + +Generates a new masternodeprivkey. + + +**Masternode Start-alias** + +Starts a single remote masternode by assigned alias configured in masternode.conf. + + +**Masternode Start-mode** + +Starts remote masternodes configured in masternode.conf. Valid modes are: `all`, `missing`, or `disabled`. + + +**Masternode List-conf** + +Prints masternode.conf in JSON format. + + *See also:* * [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternodebroadcast.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternodebroadcast.md index 0642214f..defafbb3 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternodebroadcast.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternodebroadcast.md @@ -7,10 +7,12 @@ http://opensource.org/licenses/MIT. ##### MasternodeBroadcast {% include helpers/subhead-links.md %} -{% assign summary_masternodeBroadcast="provides a set of commands to create and relay masternode broadcast messages." %} +{% assign summary_masternodeBroadcast="was removed in Dash Core 0.14.0." %} {% autocrossref %} +**_Removed in Dash Core 0.14.0._** + The `masternodebroadcast` RPC {{summary_masternodeBroadcast}} *Parameter #1---masternode broadcast command* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md index b0b3be92..ab37fe02 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md @@ -29,21 +29,17 @@ The `masternodelist` RPC {{summary_masternodeList}} Mode | Description --- | --- | --- | -`activeseconds` | Print number of seconds masternode recognized by the network as enabled (since latest issued \"masternodestart/start-many/start-alias\") -`addr` | Print ip address associated with a masternode (can be additionally filtered, partial match) -`daemon` | Print daemon version of a masternode (can be additionally filtered, exact match) -`full` | Print info in format 'status protocol payee lastseen activeseconds lastpaidtime lastpaidblock IP' (can be additionally filtered, partial match) -`info` | Print info in format 'status protocol payee lastseen activeseconds sentinelversion sentinelstate IP' (can be additionally filtered, partial match) +`addr` | Print IP address associated with a masternode (can be additionally filtered, partial match) +`full` | Print info in format 'status payee lastpaidtime lastpaidblock IP' (can be additionally filtered, partial match) +`info` | Print info in format 'status payee IP' (can be additionally filtered, partial match) `json` (Default) | Print info in JSON format (can be additionally filtered, partial match) `lastpaidblock` | Print the last block height a node was paid on the network `lastpaidtime` | Print the last time a node was paid on the network -`lastseen` | Print timestamp of when a masternode was last seen on the network +`owneraddress` | Print the masternode owner Dash address `payee` | Print Dash address associated with a masternode (can be additionally filtered, partial match) -`protocol` | Print protocol of a masternode (can be additionally filtered, exact match) -`keyid` | Print the masternode (not collateral) key id -`rank` | Print rank of a masternode based on current block -`sentinel` | Print sentinel version of a masternode (can be additionally filtered, exact match) -`status` | Print masternode status: PRE_ENABLED / ENABLED / EXPIRED / SENTINEL_PING_EXPIRED / NEW_START_REQUIRED / UPDATE_REQUIRED / POSE_BAN / OUTPOINT_SPENT (can be additionally filtered, partial match) +`pubKeyOperator` | Print the masternode operator public key +`status` | Print masternode status: ENABLED / POSE_BANNED (can be additionally filtered, partial match) +`votingaddress` | Print the masternode voting Dash address *Parameter #2---List filter* @@ -81,69 +77,49 @@ dash-cli -testnet masternodelist Result: {% highlight json %} { - "c568e386687bb317e52f4dcb402e83a93a13a43df6da029c95834ed2603c1f01-0": { - "address": "173.61.30.231:19003", - "payee": "yWc9sVgvRi6mB81KZLwchwUjjCNmF6ktaJ", + "64fbf05880cdbd35a0278ba01a5edf0c20a9c756d15f883d496f5df35b31b542-1": { + "address": "167.99.164.60:19999", + "payee": "ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX", "status": "ENABLED", - "protocol": 70213, - "daemonversion": "Unknown", - "sentinelversion": "Unknown", - "sentinelstate": "expired", - "lastseen": 0, - "activeseconds": -1553091168, - "lastpaidtime": 1553077123, - "lastpaidblock": 64693, - "owneraddress": "yjW7bQrKBsMV8Wh19LgT8Z1uLkWY8P2EBd", - "votingaddress": "yjW7bQrKBsMV8Wh19LgT8Z1uLkWY8P2EBd", - "collateraladdress": "yVZjfAYphQeyFj3XKGJ7FE7n4A9Lok1X7y" + "lastpaidtime": 1553155206, + "lastpaidblock": 65121, + "owneraddress": "yisedvAxYga44V9bTABzoQ7KoQMugyfU1E", + "votingaddress": "yVpKfQgjkRkezFS5SpZvAEVFsbv9zJedf4", + "collateraladdress": "yeXE94admJeH3oKiaB7UpwWnPZD6Q8srhT", + "pubkeyoperator": "8072ac9a55d1cf5bf9c4262d49e2ef1ffcd716b8983ffdc62b940fec6cb4179d6275f8b68316f29c6c2ad540db329258" }, - "bc3b58904a9f09b4641ffece61af28744826fffa00aabe45ef40af959a78690c-1": { - "address": "52.42.213.147:19999", - "payee": "yXsKagNKcHkE2eUKQe8Sf2Z32SKrmQ6XEJ", + "6ed4aa5fa90565c2331bcd22275f684ecdca5da8dd7f83ca943aadc6f44e6746-0": { + "address": "3.209.222.37:19999", + "payee": "yiVDR2HothEwH2Ss17GntqNp1rBUthnyje", "status": "ENABLED", - "protocol": 70213, - "daemonversion": "Unknown", - "sentinelversion": "Unknown", - "sentinelstate": "expired", - "lastseen": 0, - "activeseconds": -1553091168, - "lastpaidtime": 1553078267, - "lastpaidblock": 64747, - "owneraddress": "yeARCinqiurM9oni3VQ2Grm3Z6tXYxfKAR", - "votingaddress": "yeARCinqiurM9oni3VQ2Grm3Z6tXYxfKAR", - "collateraladdress": "yUq2J9YhZXSTQ76ifm9BHFvTtDMhWR8v6k" + "lastpaidtime": 1553156846, + "lastpaidblock": 65140, + "owneraddress": "ycAZ9adjpGfZ2WLEpyfyUWAjkF6sXdD5df", + "votingaddress": "ycAZ9adjpGfZ2WLEpyfyUWAjkF6sXdD5df", + "collateraladdress": "ya82BzRBhuFZAPhgXvhkzZgqiVsMdnfan7", + "pubkeyoperator": "0a7fd01cfd502296cfd523d58ee9f4cff34243abb0dcc543ec237ff4d73938e69d187f0b6838bbaf9d54b89adc0d4c8e" }, - "8b4a475fec02166c0d4a1dc6ede23e236a4cd07bb31d959fe5ed155fdc902b18-0": { - "address": "95.183.53.17:10003", - "payee": "yYdXDDtfzSkRKUBDLH8qW2AfvehD1M9gM8", + "4ee8c581255b643d805502e2997acb3c38deb57dc9483659d77332fd5a17de9d-6": { + "address": "52.50.208.53:20005", + "payee": "ybFPBD7hm9KVd2Dubj97K5mw2ymR8gWJre", "status": "ENABLED", - "protocol": 70213, - "daemonversion": "Unknown", - "sentinelversion": "Unknown", - "sentinelstate": "expired", - "lastseen": 0, - "activeseconds": -1553091168, - "lastpaidtime": 1553078177, - "lastpaidblock": 64743, - "owneraddress": "yW9zeJrPv5yJf71qvNfyPrJg8Me9UdaDP3", - "votingaddress": "yW9zeJrPv5yJf71qvNfyPrJg8Me9UdaDP3", - "collateraladdress": "yX91ss7HuAH85TAv7tq5dVdMXJ68d4vJHT" + "lastpaidtime": 1553168003, + "lastpaidblock": 65194, + "owneraddress": "yV97rchAqU7UGyXPZe392TNARfR93VKuU2", + "votingaddress": "ygtDvoyioQ8Dc87A3moFgBrd97QxuiMiAR", + "collateraladdress": "ySQwPov5nLCJ4qWAB31tPTyY8kDZVNZrXM", + "pubkeyoperator": "8dfa69a96f23bd77e72c1a00984bb0df5ce93a76ca1d20694e8ad20b1dfea530cb6ee0b964b78ebb2bc8bfac22f61647" }, - "d0a5d2bb6316a78e1e82569f625b56f68d7578eb2e22949f2a652bb1915f881b-1": { - "address": "140.82.59.51:19999", - "payee": "yYRfiUCoTjYAontZHqd7wAw7PhR2zru55V", + "4758b97bbd20024e171767b8baf4290bec1475b254180869cdfe0db75d7faefb-0": { + "address": "68.183.167.16:19999", + "payee": "ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX", "status": "ENABLED", - "protocol": 70213, - "daemonversion": "Unknown", - "sentinelversion": "Unknown", - "sentinelstate": "expired", - "lastseen": 0, - "activeseconds": -1553091168, - "lastpaidtime": 1553077735, - "lastpaidblock": 64724, - "owneraddress": "yX2VYLpM9ybXZHTbTEmND581QZSNRHucWm", - "votingaddress": "yX2VYLpM9ybXZHTbTEmND581QZSNRHucWm", - "collateraladdress": "ygkUtF9AbUwmGVjq2vfCUp4Znd3X9QiEqv" + "lastpaidtime": 1553157194, + "lastpaidblock": 65147, + "owneraddress": "yPmESxMJhZYuKDLJ1oYdH6kpE8oADVAPUQ", + "votingaddress": "yLvTNLDLHa3pDMbFDRBX5mVMjCshzrDD1X", + "collateraladdress": "ydGCjUEVRHkQZK3ajCsGJGDE9sjrbbS56v", + "pubkeyoperator": "18af4d035eed23d30eb02808af0c133d9879c0fb82c72329ab2ed208ebc1631641ca42bbf462239d151f4e84d8dcde7b" } } {% endhighlight %} @@ -157,19 +133,20 @@ dash-cli -testnet masternodelist full "NEW" Result: {% highlight json %} { - "6125fc1da46cd2fdd013b1fbb02144367a95feffd379c08064f38de0e3deb80c-1": "NEW_START_REQUIRED 70208 yh7RGWjZN8yDAAzPpYFUJZAj41jG7G43c8 1507401630 0 1507409411 5874 1.1.1.1:19999", - "866d66b88afed15ed1a936b680ace1a99e0ca14d0242bc2983c5fdd2c16c1637-1": "NEW_START_REQUIRED 70208 yQHJ4muL7FyhUj1x8iBr2Ws9E4cJ68DKin 1507626190 138962 1507620650 7215 178.62.203.249:19999", - "7c17695bdccc617410164882bd8b5fb7bf4f5a3dceb0a7476800e161cba1c57f-1": "NEW_START_REQUIRED 70208 yjWGCrz6iJnDsrog5FX6ag3iQUNor9UFj5 1507636178 0 0 0 83.1.99.1:19999", - "0512f77ebceaf288386e9a050e3c80652c7bfb6e993659ded2dff43eae6904ac-1": "NEW_START_REQUIRED 70208 ydahSbZKWUjBi6jHeWjLgr7navPoZVCgwH 1507646277 32460 1507649163 7397 172.104.45.115:19999", - "4222505288507e0f1abc32f0323cce1d6c4d22c8e785adb0cf8075b70ae92ddf-1": "NEW_START_REQUIRED 70208 yUznkRL396PewekhtCpUJkfJcxt8fhDyoX 1507646174 9996 1507642757 7355 83.1.99.2:19999", - "b454dd0efc19657f8d56a750385b90ebfb53dce5182a21238b225d6cbb3307f0-1": "NEW_START_REQUIRED 70208 yYR5dcULfpnbPSixorzMkQ9SGwzPPsXcuC 1507401632 0 1507408648 5868 2.2.2.2:19999" + "64fbf05880cdbd35a0278ba01a5edf0c20a9c756d15f883d496f5df35b31b542-1": " ENABLED ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX 1553155206 65121 167.99.164.60:19999", + "809818107c1104bbba6d386567aa231a294219387e591542df599b7ae7d23339-1": " POSE_BANNED yLriZkwBhftk8VBUqrSykhFhAi4PowZ2Rs 1547488185 24447 45.48.177.222:19999", + "d9fd715b7d896f5426e90bd3383a67fd3e311e00c021750560c6e5c5f9cdac85-1": " ENABLED yRbiW3dguCym4fzUGZCf2kWzKUgw97zEqE 1553155396 65122 109.235.71.56:19999", + "0950cce784fadcc2df4febb19d3a21eab4836ba22ea996ce7e2dde32b6c31431-0": " ENABLED ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX 1553154969 65119 165.227.63.223:19999", + "08b493929f61a3205f09af9290af9034bec6a8355040a82ce4413f294c703e9a-0": " ENABLED ybCE7m9oPjvCjm8MzPdbMBGgkF7p9wXsFq 1553153959 65110 34.207.45.58:19999", + "b4f9de65ae676b63f84f2865317b8b512a12516c4459f2f59ca2626c71f7dda3-1": " POSE_BANNED yYmromZERpc15GTDvgvjmjChPmgHbhWf1r 0 0 1.1.1.1:19999", + "b7ec36db0c4ece8018183dcb90eed910e38e1c8d3641bbb4facced9a48a283a3-5": " ENABLED ybFPBD7hm9KVd2Dubj97K5mw2ymR8gWJre 1553164088 65172 18.202.52.170:20028", + "71fa05269adf3efc9ffa9a9ce33d27320de61c230cdf4a3835ba7f707bd7807a-1": " POSE_BANNED yVxBZ8JeM5qRbLnUnswZ2APV3rgeZ7C9n9 1552466625 61158 167.99.110.59:19999" } {% endhighlight %} *See also:* * [Masternode][rpc masternode]: {{summary_masternode}} -* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}} * [MnSync][rpc mnsync]: {{summary_mnSync}} {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/mnsync.md b/_includes/devdoc/dash-core/rpcs/rpcs/mnsync.md index 3b164241..0ecbe0fa 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/mnsync.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/mnsync.md @@ -58,16 +58,6 @@ The `mnsync` RPC {{summary_mnSync}} p: "Required
    (exactly 1)" d: "Blockchain sync status" -- n: "→
    `IsMasternodeListSynced`" - t: "boolean" - p: "Required
    (exactly 1)" - d: "Masternode list sync status" - -- n: "→
    `IsWinnersListSynced`" - t: "boolean" - p: "Required
    (exactly 1)" - d: "Masternode winners list sync status" - - n: "→
    `IsSynced`" t: "boolean" p: "Required
    (exactly 1)" @@ -86,13 +76,13 @@ AssetID | AssetName --- | --- | --- | 0 | MASTERNODE_SYNC_INITIAL 1 | MASTERNODE_SYNC_WAITING -2 | MASTERNODE_SYNC_LIST -3 | MASTERNODE_SYNC_MNW +_2_ | **Deprecated since 0.14.0**
    _MASTERNODE_SYNC_LIST_ +_3_ | **Deprecated since 0.14.0**
    _MASTERNODE_SYNC_MNW_ 4 | MASTERNODE_SYNC_GOVERNANCE -1 | MASTERNODE_SYNC_FAILED 999 | MASTERNODE_SYNC_FINISHED -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* Get Masternode sync status @@ -108,8 +98,6 @@ Result: "AssetStartTime": 1507662300, "Attempt": 0, "IsBlockchainSynced": true, - "IsMasternodeListSynced": true, - "IsWinnersListSynced": true, "IsSynced": true, "IsFailed": false } @@ -136,7 +124,7 @@ dash-cli -testnet mnsync next Result: {% highlight text %} -sync updated to MASTERNODE_SYNC_LIST +sync updated to MASTERNODE_SYNC_GOVERNANCE {% endhighlight %} @@ -166,7 +154,6 @@ success *See also:* * [Masternode][rpc masternode]: {{summary_masternode}} -* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}} * [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/sentinelping.md b/_includes/devdoc/dash-core/rpcs/rpcs/sentinelping.md index e38400ed..52aad928 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/sentinelping.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/sentinelping.md @@ -7,10 +7,12 @@ http://opensource.org/licenses/MIT. ##### SentinelPing {% include helpers/subhead-links.md %} -{% assign summary_sentinelPing="sends a Sentinel Ping to the network." %} +{% assign summary_sentinelPing="was removed in Dash Core 0.14.0." %} {% autocrossref %} +**_Removed in Dash Core 0.14.0._** + The `sentinelping` RPC {{summary_sentinelPing}} *Parameter #1---sentinel version* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/spork.md b/_includes/devdoc/dash-core/rpcs/rpcs/spork.md index 385f6e96..afd5c1f8 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/spork.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/spork.md @@ -44,7 +44,7 @@ To display the status of sporks, use the `show` or `active` syntax. {% enditemplate %} -*Example from Dash Core 0.12.3* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet spork show @@ -56,12 +56,15 @@ Result: "SPORK_2_INSTANTSEND_ENABLED": 0, "SPORK_3_INSTANTSEND_BLOCK_FILTERING": 0, "SPORK_5_INSTANTSEND_MAX_VALUE": 3000, - "SPORK_6_NEW_SIGS": 4000000000, - "SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT": 0, + "SPORK_6_NEW_SIGS": 0, "SPORK_9_SUPERBLOCKS_ENABLED": 0, - "SPORK_10_MASTERNODE_PAY_UPDATED_NODES": 0, "SPORK_12_RECONSIDER_BLOCKS": 0, - "SPORK_14_REQUIRE_SENTINEL_FLAG": 0 + "SPORK_15_DETERMINISTIC_MNS_ENABLED": 7300, + "SPORK_16_INSTANTSEND_AUTOLOCKS": 0, + "SPORK_17_QUORUM_DKG_ENABLED": 0, + "SPORK_18_QUORUM_DEBUG_ENABLED": 4070908800, + "SPORK_19_CHAINLOCKS_ENABLED": 4070908800, + "SPORK_20_INSTANTSEND_LLMQ_BASED": 4070908800 } {% endhighlight %} @@ -82,7 +85,7 @@ Result: {% enditemplate %} -*Example from Dash Core 0.12.3* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet spork active @@ -94,12 +97,15 @@ Result: "SPORK_2_INSTANTSEND_ENABLED": true, "SPORK_3_INSTANTSEND_BLOCK_FILTERING": true, "SPORK_5_INSTANTSEND_MAX_VALUE": true, - "SPORK_6_NEW_SIGS": false, - "SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT": true, + "SPORK_6_NEW_SIGS": true, "SPORK_9_SUPERBLOCKS_ENABLED": true, - "SPORK_10_MASTERNODE_PAY_UPDATED_NODES": true, "SPORK_12_RECONSIDER_BLOCKS": true, - "SPORK_14_REQUIRE_SENTINEL_FLAG": true + "SPORK_15_DETERMINISTIC_MNS_ENABLED": true, + "SPORK_16_INSTANTSEND_AUTOLOCKS": true, + "SPORK_17_QUORUM_DKG_ENABLED": true, + "SPORK_18_QUORUM_DEBUG_ENABLED": false, + "SPORK_19_CHAINLOCKS_ENABLED": false, + "SPORK_20_INSTANTSEND_LLMQ_BASED": false } {% endhighlight %} diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 1d729466..a14d5e76 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -160,23 +160,28 @@ The currently-available type identifiers are: | 4 | [`MSG_TXLOCK_REQUEST`][msg_txlock_request]{:#term-msg_txlock_request}{:.term} | The hash is an Instant Send transaction lock request. | 5 | [`MSG_TXLOCK_VOTE`][msg_txlock_vote]{:#term-msg_txlock_vote}{:.term} | The hash is an Instant Send transaction vote. | 6 | [`MSG_SPORK`][msg_spork]{:#term-msg_spork}{:.term} | The hash is Spork ID. -| 7 | [`MSG_MASTERNODE_PAYMENT_VOTE`][msg_masternode_payment_vote]{:#term-msg_masternode_payment_vote}{:.term} | The hash is a Masternode Payment Vote. -| 8 | [`MSG_MASTERNODE_PAYMENT_BLOCK`][msg_masternode_payment_block]{:#term-msg_masternode_payment_block}{:.term} | The hash is a Masternode Payment Block. -| _8_ | _`MSG_MASTERNODE_SCANNING_ERROR`_ | Replaced by `MSG_MASTERNODE_PAYMENT_BLOCK` -| _9_ | _[`MSG_BUDGET_VOTE`][msg_budget_vote]{:#term-msg_budget_vote}{:.term}_ | Deprecated -| _10_ | _[`MSG_BUDGET_PROPOSAL`][msg_budget_proposal]{:#term-msg_budget_proposal}{:.term}_ | Deprecated -| _11_ | _[`MSG_BUDGET_FINALIZED`][msg_budget_finalized]{:#term-msg_budget_finalized}{:.term}_ | Deprecated -| _12_ | _[`MSG_BUDGET_FINALIZED_VOTE`][msg_budget_finalized_vote]{:#term-msg_budget_finalized_vote}{:.term}_ | Deprecated -| _13_ | _[`MSG_MASTERNODE_QUORUM`][msg_masternode_quorum]{:#term-msg_masternode_quorum}{:.term}_ | Not Implemented -| 14 | [`MSG_MASTERNODE_ANNOUNCE`][msg_masternode_announce]{:#term-msg_masternode_announce}{:.term} | The hash is a Masternode Broadcast. -| 15 | [`MSG_MASTERNODE_PING`][msg_masternode_ping]{:#term-msg_masternode_ping}{:.term} | The hash is a Masternode Ping. | 16 | [`MSG_DSTX`][msg_dstx]{:#term-msg_dstx}{:.term} | The hash is Private Send (Dark Send) Broadcast TX. | 17 | [`MSG_GOVERNANCE_OBJECT`][msg_governance_object]{:#term-msg_governance_object}{:.term} | The hash is a Governance Object. | 18 | [`MSG_GOVERNANCE_OBJECT_VOTE`][msg_governance_object_vote]{:#term-msg_governance_object_vote}{:.term} | The hash is a Governance Object Vote. -| 19 | [`MSG_MASTERNODE_VERIFY`][msg_masternode_verify]{:#term-msg_masternode_verify}{:.term} | The hash is a Masternode Verify. | 20 | [`MSG_CMPCT_BLOCK`][msg_cmpct_block]{:#term-msg_cmpct_block}{:.term} | The hash is of a block header; identical to `MSG_BLOCK`. When used in a `getdata` message, this indicates the response should be a `cmpctblock` message. **Only for use in `getdata` messages.** | 21 | [`MSG_QUORUM_FINAL_COMMITMENT`][msg_quorum_final_commitment]{:#term-msg_quorum_final_commitment}{:.term} | The hash is a long-living masternode quorum final commitment. +The deprecated type identifiers are: + +| Type Identifier | Name | Description +|-----------------|-------------------------------------------------------------------------------|--------------- +| 7 | [`MSG_MASTERNODE_PAYMENT_VOTE`][msg_masternode_payment_vote]{:#term-msg_masternode_payment_vote}{:.term} | **Deprecated in 0.14.0**

    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**

    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**

    The hash is a Masternode Broadcast. +| 15 | [`MSG_MASTERNODE_PING`][msg_masternode_ping]{:#term-msg_masternode_ping}{:.term} | **Deprecated in 0.14.0**

    The hash is a Masternode Ping. +| 19 | [`MSG_MASTERNODE_VERIFY`][msg_masternode_verify]{:#term-msg_masternode_verify}{:.term} | **Deprecated in 0.14.0**

    The hash is a Masternode Verify. + Type identifier zero and type identifiers greater than twenty are reserved for future implementations. Dash Core ignores all inventories with one of these unknown types. @@ -1763,17 +1768,20 @@ Sporks (per [`src/spork.h`][spork.h]) | 10002 | 3 | `INSTANTSEND_BLOCK_FILTERING` | Turns on and off InstantSend block filtering | 10004 | 5 | `INSTANTSEND_MAX_VALUE` | Controls the max value for an InstantSend transaction (currently 2000 dash) | 10005 | 6 | `NEW_SIGS` | Turns on and off new signature format for Dash-specific messages -| 10007 | 8 | `MASTERNODE_PAYMENT_ENFORCEMENT` | Requires masternodes to be paid by miners when blocks are processed | 10008 | 9 | `SUPERBLOCKS_ENABLED` | Superblocks are enabled (10% of the block reward allocated to fund the dash treasury for funding approved proposals) -| 10009 | 10 | `MASTERNODE_PAY_UPDATED_NODES` | Only current protocol version masternode's will be paid (not older nodes) | 10011 | 12 | `RECONSIDER_BLOCKS` | Forces reindex of a specified number of blocks to recover from unintentional network forks -| 10013 | 14 | `REQUIRE_SENTINEL_FLAG` | Only masternode's running sentinel will be paid | 10014 | 15 | `DETERMINISTIC_MNS_ENABLED` | Deterministic masternode lists are enabled | 10015 | 16 | `INSTANTSEND_AUTOLOCKS` | Automatic InstantSend for transactions with <=4 inputs (also eliminates the special InstantSend fee requirement for these transactions) | 10016 | 17 | `SPORK_17_QUORUM_DKG_ENABLED` | Enable long-living masternode quorum (LLMQ) distributed key generation (DKG). When enabled, simple PoSe scoring and banning is active as well. +| 10017 | 18 | `SPORK_18_QUORUM_DEBUG_ENABLED` | Enable long-living masternode quorum (LLMQ) debugging. +| 10018 | 19 | `SPORK_19_CHAINLOCKS_ENABLED` | Enable LLMQ-based ChainLocks. +| 10019 | 20 | `SPORK_20_INSTANTSEND_LLMQ_BASED` | Enable LLMQ-based InstantSend. | | | | | | | **Removed Sporks** | -| _10012_ | _13_ | _`OLD_SUPERBLOCK_FLAG`_ | _Removed in Dash Core 0.12.3. No network function since block 614820_ +| _10007_ | _8_ | _`MASTERNODE_PAYMENT_ENFORCEMENT`_ | _Removed in Dash Core 0.14.0.
    Requires masternodes to be paid by miners when blocks are processed_ +| _10009_ | _10_ | _`MASTERNODE_PAY_UPDATED_NODES`_ | _Removed in Dash Core 0.14.0.
    Only current protocol version masternode's will be paid (not older nodes)_ +| _10012_ | _13_ | _`OLD_SUPERBLOCK_FLAG`_ | _Removed in Dash Core 0.12.3.
    No network function since block 614820_ +| _10013_ | _14_ | _`REQUIRE_SENTINEL_FLAG`_ | _Removed in Dash Core 0.14.0.
    Only masternode's running sentinel will be paid_ To verify `vchSig`, compare the hard-coded spork public key (`strSporkPubKey` from [`src/chainparams.cpp`][spork pubkey]) with the public key recovered from @@ -2640,419 +2648,6 @@ and [Masternode Payment](developer-guide#masternode-payment) section {% endautocrossref %} -#### dseg -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated -following activation of DIP3 which implements deterministic masternode lists. - -The `dseg` message requests either the entire masternode list or a specific -entry. To request the list of all masternodes, use an empty txIn (TXID of all -zeros and an index of 0xFFFFFFFF). To request information about a specific -masternode, use the unspent outpoint associated with that masternode. - -The response to a `dseg` message is an `mnb` message inventory and an -`mnp` message inventory for each requested masternode. Masternodes ignore this -request if they are not fully synced. - -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint | outPoint | Required | Request options:
    `All Entries` - empty txIn
    `Single Entry` - Masternode's unspent outpoint which is holding 1000 DASH - - -{% highlight text %} -Note: Dash Core only allows nodes to request the entire list every 3 hours. -Additional requests sent prior to then may result in the node being banned. -{% endhighlight %} - -The following annotated hexdump shows a `dseg` message requesting **all** -masternodes. (The message header has been omitted.) - -{% highlight text %} -Masternode Unspent Outpoint -| 00000000000000000000000000000000 -| 00000000000000000000000000000000 ......... Outpoint TXID -| ffffffff ................................. Outpoint index number: 0 -{% endhighlight %} - -The following annotated hexdump shows a `dseg` message requesting a specific -masternode. (The message header has been omitted.) - -{% highlight text %} -Masternode Unspent Outpoint -| 7fe33a2901aa654598ae0af572d4fbec -| ee97af2d0276f189d177dee5848ef3da ......... Outpoint TXID -| 00000000 ................................. Outpoint index number: 0 -{% endhighlight %} - -{% endautocrossref %} - -#### mnb -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated -following activation of DIP3 which implements deterministic masternode lists. - -The `mnb` message is sent whenever a masternode comes online or a client is -syncing. The masternode will send this message which describes the masternode -entry and how to validate messages from it. - -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 36 | outPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message -| # | addr | CService | Required | IPv4 address of the masternode -| 33-65 | pubKeyCollateralAddress | CPubKey | Required | CPubKey of the main 1000 DASH unspent outpoint. Length determined by if it is a compressed public key or not. -| 33-65 | pubKeyMasternode | CPubKey | Required | CPubKey of the secondary signing key (For all messaging other than the announce message). Length determined by if it is a compressed public key or not. -| 66 | sig | char[] | Required | Signature of this message verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes)) -| 8 | sigTime | int64_t | Required | Time which the signature was created -| 4 | nProtocolVersion | int | Required | The protocol version of the masternode -| # | lastPing | `mnp` message | Required | The last known ping of the masternode -| 8 | nLastDsq | int64_t | Deprecated | **Removed in Dash Core 0.12.3.0**

    The last time the masternode sent a `dsq` message (for mixing) (DEPRECATED) - -The following annotated hexdump shows a `mnb` message. (The -message header has been omitted and the actual IP address has been replaced -with a RFC5737 reserved IP address.) - -{% highlight text %} -Masternode Unspent Outpoint -| 3fbc7d4a8f68ba6ecb02a8db34d1f5b6 -| 2dc105f0b5c3505243435cf815d02394 ......... Outpoint TXID -| 01000000 ................................. Outpoint index number: 1 - -Masternode Address -| 00000000000000000000ffffc0000233 ......... IP Address: ::ffff:192.0.2.51 -| 270f ..................................... Port: 9999 - -Collateral Public Key -| 21 ....................................... Key Size: 33 -| 02 ....................................... Key Type: 2 - Compressed (even) -| 02a47a6845936a4199e126d35399dd09 -| 97c1aaf89a3fe70d474c53f29624a43a5b ....... Public Key - -Masternode Public Key -| 41 ....................................... Key Size: 65 -| 04 ....................................... Key Type: 4 - Uncompressed -| 04da252243305d604cab90480880af4a -| b5cea3a934c91393452e9b7b4c97a87e -| 198bc809916ac2c27436a1db9c28d0aa -| bfefec4dc3c2193835fd9a56c31150c633 ....... Public Key - -Message Signature -| 41 ....................................... Bytes in signature: 65 -| 1fb80f9ba8c110835e4a7dd4c8deccd7 -| 89027663d00084d9a99ef579a9b5601f -| 40727b27e91aab2897a078f63976ae25 -| 3ff8f01e56862e953278f432530f6ee080 ....... Signature - -4728ef5800000000 ........................... Sig. Timestamp: 2017-04-13 07:27:03 UTC - -3e120100 ................................... Protocol Version: 70206 - -Masternode Ping Message -| Masternode Unspent Outpoint -| | 3fbc7d4a8f68ba6ecb02a8db34d1f5b6 -| | 2dc105f0b5c3505243435cf815d02394 ........ Outpoint TXID -| | 01000000 ................................ Outpoint index number: 1 -| -| 94fc0fad18b166c2fedf1a5dc0511372 -| 26c353d57e086737ff05000000000000 ......... Chaintip block hash -| -| 66c1a95900000000 ......................... Sig. Timestamp: 2017-10-01 21:21:58 UTC -| -| Masternode Signature -| | 41 ..................................... Bytes in signature: 65 -| | 1b3017c49a03e2d77083f3c92a8c2e4c -| | d815d068b6256498a719e3cb6a34f774 -| | ec6434cfcbb7a5a51704350a05903287 -| | eecc82e6b40ac2fcfa2df29ddaa6c4fc -| | b8 ..................................... Masternode Signature -{% endhighlight %} - -{% endautocrossref %} - -#### mnget -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated -following activation of DIP3 which implements deterministic masternode lists. - -The `mnget` message requests masternode payment sync. The response to an -`mnget` message is `mnw` message inventories. Masternodes ignore this request if -they are not fully synced. - -{% highlight text %} -Note: Dash Core limits how frequently a masternode payment sync can be -requested. Frequent requests will result in the node being banned. -{% endhighlight %} - -There is no payload in a `mnget` message. See the [message header -section][section message header] for an example of a message without a payload. - -![Warning icon](/img/icons/icon_warning.svg) **The following information is provided for historical reference only.** - -In protocol versions <=70208, the `mnget` message has a payload consisting of an -integer value requesting a specific number of payment votes. In protocol versions ->70208, the `mnget` message has no payload. - -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 4 | nMnCount | int | Deprecated | _Deprecated in Dash Core 0.12.3_

    Number of masternode payment votes to request - -The following annotated hexdump shows a pre-0.12.3 `mnget` message. (The -message header has been omitted.) - -{% highlight text %} -a8170000 ................................... Count: 6056 -{% endhighlight %} - -{% endautocrossref %} - -#### mnp -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated -following activation of DIP3 which implements deterministic masternode lists. - -The `mnp` message is sent by masternodes every few minutes to ping the network -with a message that propagates across the whole network. Dash Core currently -uses a minimum masternode ping time of 10 minutes. - -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message -| 32 | blockHash | uint256 | Required | Block hash from 12 blocks ago (current chaintip minus 12). This offset allows nodes to be slightly out of sync. -| 8 | sigTime | int64_t | Required | Time which the signature was created -| 66* | vchSig | char[] | Required | Signature of this message by masternode - verifiable via pubKeyMasternode (66 bytes in most cases. Length (1 byte) + Signature (65 bytes)) -| 1 | fSentinelIsCurrent | bool | Required | True if last sentinel ping was current -| 4 | nSentinelVersion | uint32_t | Required | The version of Sentinel running on the masternode which is signing the message -| 4 | nDaemonVersion | uint32_t | Required | The version of dashd on the masternode which is signing the message (i.e. CLIENT_VERSION) - -The following annotated hexdump shows a `mnp` message. (The -message header has been omitted.) - -{% highlight text %} -Masternode Unspent Outpoint -| ce12d7f32945c9544c5aeb0dcf131174 -| a6269b64b40f9461595e26689b573c58 ......... Outpoint TXID -| 00000000 ................................. Outpoint index number: 0 - -6c7da9d9eae78644a3406eac8ed0be3b -f15eb4bc369acc95b106f37400000000 ........... Chaintip block hash - -3c84025a00000000 ........................... Sig. Timestamp: 2017-11-08 04:12:44 UTC - -Masternode Signature -| 41 ....................................... Bytes in signature: 65 -| 1c7572842058a2075b8a996c3905e306 -| 27a581a0b0702842ac4088e6c1a61b22 -| 8e79a4d8aed0f413150f976045f256ef -| 2727e68a36622efcabfd60a554533b8c -| 6f ....................................... Masternode Signature - -01 ......................................... Sentinel Current: true -02000100 ................................... Sentinel Version (1.0.2) -ecd50100 ................................... Dashd Deamon Version (12.3.0) -{% endhighlight %} - -{% endautocrossref %} - -#### mnv -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated -following activation of DIP3 which implements deterministic masternode lists. - -The `mnv` message is used by masternodes to verify each other. Several `mnv` -messages are exchanged in the process. This results in the IP address of -masternode 1 being validated as of the provided block height. - -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint1 | outPoint | Required | The unspent outpoint which is holding 1000 DASH for masternode 1 -| 36 | masternodeOutPoint2 | outPoint | Required | The unspent outpoint which is holding 1000 DASH for masternode 2 -| # | addr | CService | Required | IPv4 address and port of masternode 1 -| 4 | nonce | int | Required | Random nonce -| 4 | nBlockHeight | int | Required | Block height -| 66 | vchSig1 | char[] | Required*

    Added in Step 2 | Signature of this message by masternode 1 - verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes))

    -| 66 | vchSig2 | char[] | Required*

    Added in Step 3 | Signature of this message by masternode 2 - verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes))

    - -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`.
    Sent by _SendVerifyRequest()_. -| 2 | | ← | `mnv` message | Add `vchSig1` (signature of the IP address + nonce + hash of the requested block).
    Sent by _SendVerifyReply()_. -| 3 | `mnv` message | → | | Verify `vchSig1`

    Add `masternodeOutPoint1`, `masternodeOutPoint2`, and `vchSig2` (signature of the IP address + nonce + hash of the requested block + `masternodeOutPoint1` + `masternodeOutPoint2`) and relay message to peers if valid.
    Sent by _ProcessVerifyReply()_. - -Nodes receiving a relayed `mnv` message (one in which `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 %} - - -The following annotated hexdump shows a `mnv` message. This is an example of the -initial request (Step 1) so it does not contain any signatures. (The message -header has been omitted.) - -{% highlight text %} -Masternode 1 Unspent Outpoint (empty) -| 00000000000000000000000000000000 -| 00000000000000000000000000000000 ......... Outpoint TXID -| ffffffff ................................. Outpoint index number: 0 - -Masternode 2 Unspent Outpoint (empty) -| 00000000000000000000000000000000 -| 00000000000000000000000000000000 ......... Outpoint TXID -| ffffffff ................................. Outpoint index number: 0 - -00000000000000000000ffff2d20ed4c ........... IP Address: ::ffff:45.32.237.76 -4e1f ....................................... Port: 19999 -9d090000 ................................... Nonce: 2641 -ed5c0000 ................................... Block height: 23789 - -Masternode 1 Signature -| 00 ....................................... Bytes in signature: 0 -| .......................................... Signature: Empty - -Masternode 2 Signature -| 00 ....................................... Bytes in signature: 0 -| .......................................... Signature: Empty -{% endhighlight %} - - -The following annotated hexdump shows a `mnv` message. This is an example of the -initial response (Step 2) so it only contains the signature of masternode 1 (the -masternode being verified). (The message header has been omitted.) - -{% highlight text %} -Masternode 1 Unspent Outpoint (empty) -| 00000000000000000000000000000000 -| 00000000000000000000000000000000 ......... Outpoint TXID -| ffffffff ................................. Outpoint index number: 0 - -Masternode 2 Unspent Outpoint (empty) -| 00000000000000000000000000000000 -| 00000000000000000000000000000000 ......... Outpoint TXID -| ffffffff ................................. Outpoint index number: 0 - -00000000000000000000ffff2d20ed4c ........... IP Address: ::ffff:45.32.237.76 -4e1f ....................................... Port: 19999 -9d090000 ................................... Nonce: 2641 -ed5c0000 ................................... Block height: 23789 - -Masternode 1 Signature -| 41 ....................................... Bytes in signature: 65 -| 1bf5bd6e6eda0cd32aafb826c4066fa5 -| 4a53baa6f4211528e51716054b4df981 -| d97a77e633947bbbfafd6882324b76a0 -| 90c6e65c16ca1222db48f8558537c062 -| f6 ....................................... Signature - -Masternode 2 Signature -| 00 ....................................... Bytes in signature: 0 -| .......................................... Signature: Empty -{% endhighlight %} -{% endautocrossref %} - -#### mnw -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated -following activation of DIP3 which implements deterministic masternode lists. - -The `mnw` message is used to pick the next winning masternode. When a new block -is found on the network, a masternode quorum will be determined and those 10 -selected masternodes will issue the masternode payment vote message. - -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message -| 4 | nBlockHeight | int | Required | The blockheight which the payee should be paid -| ? | payeeAddress | CScript | Required | The address receiving payment -| 66* | vchSig | char[] | Required | Signature of the masternode which is signing the message (66 bytes in most cases. Length (1 byte) + Signature (65 bytes)) - -The following annotated hexdump shows a `mnw` message. (The -message header has been omitted.) - -{% highlight text %} -Masternode Unspent Outpoint -| 0c1b5c5846792b25b05eeea9586d8c34 -| ecb996c566bedb4ecf6a68fe8ffa9582 ......... Outpoint TXID -| 00000000 ................................. Outpoint index number: 0 - -fb4f0a00 ................................... Block pay height: 675835 - -Payee Address -| 19 ....................................... Address Length: 25 -| | 76 ..................................... OP_DUP -| | a9 ..................................... OP_HASH160 -| | 14 ..................................... Push 20 bytes as data -| | | 1767c363646be7d8e4475c0aa85ea454 -| | | 9fd102c4 ............................. Pubkey hash -| | 88 ..................................... OP_EQUALVERIFY -| | ac ..................................... OP_CHECKSIG - -Masternode Signature -| 41 ....................................... Bytes in signature: 65 -| 1c25da47190a83937fb5ef607235703a -| 7cdda155bf5a1ae6139929024750f899 -| a90a4f57cdf9d54c9d9603c1f31009f8 -| e257355b49c0484fb4c31bc412c73dd9 -| 20 ....................................... Signature -{% endhighlight %} - -{% endautocrossref %} - -#### mnwb -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated -following activation of DIP3 which implements deterministic masternode lists. - -There is no message for `mnwb` (`inv` message only). - -The following annotated hexdump shows an `inv` message with a `mnwb` -inventory entry. (The message header has been omitted.) - -{% highlight text %} -01 ................................. Count: 1 - -08000000 ........................... Type: MSG_MASTERNODE_PAYMENT_BLOCK (8) -dd6cc6c11211793b239c2e311f1496e2 -2281b200b35233eaae465d2aa3c9d537 ... Hash: mnwb -{% endhighlight %} - -{% endautocrossref %} - #### ssc {% include helpers/subhead-links.md %} @@ -3363,6 +2958,412 @@ The following network messages have been deprecated and should no longer be used {% endautocrossref %} +#### dseg +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 + +The `dseg` message requests either the entire masternode list or a specific +entry. To request the list of all masternodes, use an empty txIn (TXID of all +zeros and an index of 0xFFFFFFFF). To request information about a specific +masternode, use the unspent outpoint associated with that masternode. + +The response to a `dseg` message is an `mnb` message inventory and an +`mnp` message inventory for each requested masternode. Masternodes ignore this +request if they are not fully synced. + +| Bytes | Name | Data type | Required | Description | +| ---------- | ----------- | --------- | -------- | -------- | +| 36 | masternodeOutPoint | outPoint | Required | Request options:
    `All Entries` - empty txIn
    `Single Entry` - Masternode's unspent outpoint which is holding 1000 DASH + + +{% highlight text %} +Note: Dash Core only allows nodes to request the entire list every 3 hours. +Additional requests sent prior to then may result in the node being banned. +{% endhighlight %} + +The following annotated hexdump shows a `dseg` message requesting **all** +masternodes. (The message header has been omitted.) + +{% highlight text %} +Masternode Unspent Outpoint +| 00000000000000000000000000000000 +| 00000000000000000000000000000000 ......... Outpoint TXID +| ffffffff ................................. Outpoint index number: 0 +{% endhighlight %} + +The following annotated hexdump shows a `dseg` message requesting a specific +masternode. (The message header has been omitted.) + +{% highlight text %} +Masternode Unspent Outpoint +| 7fe33a2901aa654598ae0af572d4fbec +| ee97af2d0276f189d177dee5848ef3da ......... Outpoint TXID +| 00000000 ................................. Outpoint index number: 0 +{% endhighlight %} + +{% endautocrossref %} + +#### mnb +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 + +The `mnb` message is sent whenever a masternode comes online or a client is +syncing. The masternode will send this message which describes the masternode +entry and how to validate messages from it. + +| Bytes | Name | Data type | Required | Description | +| ---------- | ----------- | --------- | -------- | -------- | +| 36 | outPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message +| # | addr | CService | Required | IPv4 address of the masternode +| 33-65 | pubKeyCollateralAddress | CPubKey | Required | CPubKey of the main 1000 DASH unspent outpoint. Length determined by if it is a compressed public key or not. +| 33-65 | pubKeyMasternode | CPubKey | Required | CPubKey of the secondary signing key (For all messaging other than the announce message). Length determined by if it is a compressed public key or not. +| 66 | sig | char[] | Required | Signature of this message verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes)) +| 8 | sigTime | int64_t | Required | Time which the signature was created +| 4 | nProtocolVersion | int | Required | The protocol version of the masternode +| # | lastPing | `mnp` message | Required | The last known ping of the masternode +| 8 | nLastDsq | int64_t | Deprecated | **Removed in Dash Core 0.12.3.0**

    The last time the masternode sent a `dsq` message (for mixing) (DEPRECATED) + +The following annotated hexdump shows a `mnb` message. (The +message header has been omitted and the actual IP address has been replaced +with a RFC5737 reserved IP address.) + +{% highlight text %} +Masternode Unspent Outpoint +| 3fbc7d4a8f68ba6ecb02a8db34d1f5b6 +| 2dc105f0b5c3505243435cf815d02394 ......... Outpoint TXID +| 01000000 ................................. Outpoint index number: 1 + +Masternode Address +| 00000000000000000000ffffc0000233 ......... IP Address: ::ffff:192.0.2.51 +| 270f ..................................... Port: 9999 + +Collateral Public Key +| 21 ....................................... Key Size: 33 +| 02 ....................................... Key Type: 2 - Compressed (even) +| 02a47a6845936a4199e126d35399dd09 +| 97c1aaf89a3fe70d474c53f29624a43a5b ....... Public Key + +Masternode Public Key +| 41 ....................................... Key Size: 65 +| 04 ....................................... Key Type: 4 - Uncompressed +| 04da252243305d604cab90480880af4a +| b5cea3a934c91393452e9b7b4c97a87e +| 198bc809916ac2c27436a1db9c28d0aa +| bfefec4dc3c2193835fd9a56c31150c633 ....... Public Key + +Message Signature +| 41 ....................................... Bytes in signature: 65 +| 1fb80f9ba8c110835e4a7dd4c8deccd7 +| 89027663d00084d9a99ef579a9b5601f +| 40727b27e91aab2897a078f63976ae25 +| 3ff8f01e56862e953278f432530f6ee080 ....... Signature + +4728ef5800000000 ........................... Sig. Timestamp: 2017-04-13 07:27:03 UTC + +3e120100 ................................... Protocol Version: 70206 + +Masternode Ping Message +| Masternode Unspent Outpoint +| | 3fbc7d4a8f68ba6ecb02a8db34d1f5b6 +| | 2dc105f0b5c3505243435cf815d02394 ........ Outpoint TXID +| | 01000000 ................................ Outpoint index number: 1 +| +| 94fc0fad18b166c2fedf1a5dc0511372 +| 26c353d57e086737ff05000000000000 ......... Chaintip block hash +| +| 66c1a95900000000 ......................... Sig. Timestamp: 2017-10-01 21:21:58 UTC +| +| Masternode Signature +| | 41 ..................................... Bytes in signature: 65 +| | 1b3017c49a03e2d77083f3c92a8c2e4c +| | d815d068b6256498a719e3cb6a34f774 +| | ec6434cfcbb7a5a51704350a05903287 +| | eecc82e6b40ac2fcfa2df29ddaa6c4fc +| | b8 ..................................... Masternode Signature +{% endhighlight %} + +{% endautocrossref %} + +#### mnget +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 + +The `mnget` message requests masternode payment sync. The response to an +`mnget` message is `mnw` message inventories. Masternodes ignore this request if +they are not fully synced. + +{% highlight text %} +Note: Dash Core limits how frequently a masternode payment sync can be +requested. Frequent requests will result in the node being banned. +{% endhighlight %} + +There is no payload in a `mnget` message. See the [message header +section][section message header] for an example of a message without a payload. + +![Warning icon](/img/icons/icon_warning.svg) **The following information is provided for historical reference only.** + +In protocol versions <=70208, the `mnget` message has a payload consisting of an +integer value requesting a specific number of payment votes. In protocol versions +>70208, the `mnget` message has no payload. + +| Bytes | Name | Data type | Required | Description | +| ---------- | ----------- | --------- | -------- | -------- | +| 4 | nMnCount | int | Deprecated | _Deprecated in Dash Core 0.12.3_

    Number of masternode payment votes to request + +The following annotated hexdump shows a pre-0.12.3 `mnget` message. (The +message header has been omitted.) + +{% highlight text %} +a8170000 ................................... Count: 6056 +{% endhighlight %} + +{% endautocrossref %} + +#### mnp +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 + +The `mnp` message is sent by masternodes every few minutes to ping the network +with a message that propagates across the whole network. Dash Core currently +uses a minimum masternode ping time of 10 minutes. + +| Bytes | Name | Data type | Required | Description | +| ---------- | ----------- | --------- | -------- | -------- | +| 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message +| 32 | blockHash | uint256 | Required | Block hash from 12 blocks ago (current chaintip minus 12). This offset allows nodes to be slightly out of sync. +| 8 | sigTime | int64_t | Required | Time which the signature was created +| 66* | vchSig | char[] | Required | Signature of this message by masternode - verifiable via pubKeyMasternode (66 bytes in most cases. Length (1 byte) + Signature (65 bytes)) +| 1 | fSentinelIsCurrent | bool | Required | True if last sentinel ping was current +| 4 | nSentinelVersion | uint32_t | Required | The version of Sentinel running on the masternode which is signing the message +| 4 | nDaemonVersion | uint32_t | Required | The version of dashd on the masternode which is signing the message (i.e. CLIENT_VERSION) + +The following annotated hexdump shows a `mnp` message. (The +message header has been omitted.) + +{% highlight text %} +Masternode Unspent Outpoint +| ce12d7f32945c9544c5aeb0dcf131174 +| a6269b64b40f9461595e26689b573c58 ......... Outpoint TXID +| 00000000 ................................. Outpoint index number: 0 + +6c7da9d9eae78644a3406eac8ed0be3b +f15eb4bc369acc95b106f37400000000 ........... Chaintip block hash + +3c84025a00000000 ........................... Sig. Timestamp: 2017-11-08 04:12:44 UTC + +Masternode Signature +| 41 ....................................... Bytes in signature: 65 +| 1c7572842058a2075b8a996c3905e306 +| 27a581a0b0702842ac4088e6c1a61b22 +| 8e79a4d8aed0f413150f976045f256ef +| 2727e68a36622efcabfd60a554533b8c +| 6f ....................................... Masternode Signature + +01 ......................................... Sentinel Current: true +02000100 ................................... Sentinel Version (1.0.2) +ecd50100 ................................... Dashd Deamon Version (12.3.0) +{% endhighlight %} + +{% endautocrossref %} + +#### mnv +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 + +The `mnv` message is used by masternodes to verify each other. Several `mnv` +messages are exchanged in the process. This results in the IP address of +masternode 1 being validated as of the provided block height. + +| Bytes | Name | Data type | Required | Description | +| ---------- | ----------- | --------- | -------- | -------- | +| 36 | masternodeOutPoint1 | outPoint | Required | The unspent outpoint which is holding 1000 DASH for masternode 1 +| 36 | masternodeOutPoint2 | outPoint | Required | The unspent outpoint which is holding 1000 DASH for masternode 2 +| # | addr | CService | Required | IPv4 address and port of masternode 1 +| 4 | nonce | int | Required | Random nonce +| 4 | nBlockHeight | int | Required | Block height +| 66 | vchSig1 | char[] | Required*

    Added in Step 2 | Signature of this message by masternode 1 - verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes))

    +| 66 | vchSig2 | char[] | Required*

    Added in Step 3 | Signature of this message by masternode 2 - verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes))

    + +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`.
    Sent by _SendVerifyRequest()_. +| 2 | | ← | `mnv` message | Add `vchSig1` (signature of the IP address + nonce + hash of the requested block).
    Sent by _SendVerifyReply()_. +| 3 | `mnv` message | → | | Verify `vchSig1`

    Add `masternodeOutPoint1`, `masternodeOutPoint2`, and `vchSig2` (signature of the IP address + nonce + hash of the requested block + `masternodeOutPoint1` + `masternodeOutPoint2`) and relay message to peers if valid.
    Sent by _ProcessVerifyReply()_. + +Nodes receiving a relayed `mnv` message (one in which `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 %} + + +The following annotated hexdump shows a `mnv` message. This is an example of the +initial request (Step 1) so it does not contain any signatures. (The message +header has been omitted.) + +{% highlight text %} +Masternode 1 Unspent Outpoint (empty) +| 00000000000000000000000000000000 +| 00000000000000000000000000000000 ......... Outpoint TXID +| ffffffff ................................. Outpoint index number: 0 + +Masternode 2 Unspent Outpoint (empty) +| 00000000000000000000000000000000 +| 00000000000000000000000000000000 ......... Outpoint TXID +| ffffffff ................................. Outpoint index number: 0 + +00000000000000000000ffff2d20ed4c ........... IP Address: ::ffff:45.32.237.76 +4e1f ....................................... Port: 19999 +9d090000 ................................... Nonce: 2641 +ed5c0000 ................................... Block height: 23789 + +Masternode 1 Signature +| 00 ....................................... Bytes in signature: 0 +| .......................................... Signature: Empty + +Masternode 2 Signature +| 00 ....................................... Bytes in signature: 0 +| .......................................... Signature: Empty +{% endhighlight %} + + +The following annotated hexdump shows a `mnv` message. This is an example of the +initial response (Step 2) so it only contains the signature of masternode 1 (the +masternode being verified). (The message header has been omitted.) + +{% highlight text %} +Masternode 1 Unspent Outpoint (empty) +| 00000000000000000000000000000000 +| 00000000000000000000000000000000 ......... Outpoint TXID +| ffffffff ................................. Outpoint index number: 0 + +Masternode 2 Unspent Outpoint (empty) +| 00000000000000000000000000000000 +| 00000000000000000000000000000000 ......... Outpoint TXID +| ffffffff ................................. Outpoint index number: 0 + +00000000000000000000ffff2d20ed4c ........... IP Address: ::ffff:45.32.237.76 +4e1f ....................................... Port: 19999 +9d090000 ................................... Nonce: 2641 +ed5c0000 ................................... Block height: 23789 + +Masternode 1 Signature +| 41 ....................................... Bytes in signature: 65 +| 1bf5bd6e6eda0cd32aafb826c4066fa5 +| 4a53baa6f4211528e51716054b4df981 +| d97a77e633947bbbfafd6882324b76a0 +| 90c6e65c16ca1222db48f8558537c062 +| f6 ....................................... Signature + +Masternode 2 Signature +| 00 ....................................... Bytes in signature: 0 +| .......................................... Signature: Empty +{% endhighlight %} +{% endautocrossref %} + +#### mnw +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 + +The `mnw` message is used to pick the next winning masternode. When a new block +is found on the network, a masternode quorum will be determined and those 10 +selected masternodes will issue the masternode payment vote message. + +| Bytes | Name | Data type | Required | Description | +| ---------- | ----------- | --------- | -------- | -------- | +| 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message +| 4 | nBlockHeight | int | Required | The blockheight which the payee should be paid +| ? | payeeAddress | CScript | Required | The address receiving payment +| 66* | vchSig | char[] | Required | Signature of the masternode which is signing the message (66 bytes in most cases. Length (1 byte) + Signature (65 bytes)) + +The following annotated hexdump shows a `mnw` message. (The +message header has been omitted.) + +{% highlight text %} +Masternode Unspent Outpoint +| 0c1b5c5846792b25b05eeea9586d8c34 +| ecb996c566bedb4ecf6a68fe8ffa9582 ......... Outpoint TXID +| 00000000 ................................. Outpoint index number: 0 + +fb4f0a00 ................................... Block pay height: 675835 + +Payee Address +| 19 ....................................... Address Length: 25 +| | 76 ..................................... OP_DUP +| | a9 ..................................... OP_HASH160 +| | 14 ..................................... Push 20 bytes as data +| | | 1767c363646be7d8e4475c0aa85ea454 +| | | 9fd102c4 ............................. Pubkey hash +| | 88 ..................................... OP_EQUALVERIFY +| | ac ..................................... OP_CHECKSIG + +Masternode Signature +| 41 ....................................... Bytes in signature: 65 +| 1c25da47190a83937fb5ef607235703a +| 7cdda155bf5a1ae6139929024750f899 +| a90a4f57cdf9d54c9d9603c1f31009f8 +| e257355b49c0484fb4c31bc412c73dd9 +| 20 ....................................... Signature +{% endhighlight %} + +{% endautocrossref %} + +#### mnwb +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 + +There is no message for `mnwb` (`inv` message only). + +The following annotated hexdump shows an `inv` message with a `mnwb` +inventory entry. (The message header has been omitted.) + +{% highlight text %} +01 ................................. Count: 1 + +08000000 ........................... Type: MSG_MASTERNODE_PAYMENT_BLOCK (8) +dd6cc6c11211793b239c2e311f1496e2 +2281b200b35233eaae465d2aa3c9d537 ... Hash: mnwb +{% endhighlight %} + +{% endautocrossref %} + #### mnvs {% include helpers/subhead-links.md %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index b6ddf943..c97cb6d9 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.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_lockUnspent="temporarily locks or unlocks specified transaction outputs. A locked transaction output will not be chosen by automatic coin selection when spending dash. Locks are stored in memory only, so nodes start with zero locked outputs and the locked output list is always cleared when a node stops or fails." %} {% assign summary_masternode="provides a set of commands for managing masternodes and displaying information about them." %} -{% assign summary_masternodeBroadcast="provides a set of commands to create and relay masternode broadcast messages." %} +{% assign summary_masternodeBroadcast="was removed in Dash Core 0.14.0." %} {% assign summary_masternodeList="returns a list of masternodes in different modes." %} {% assign summary_mnSync="returns the sync status, updates to the next step or resets it entirely." %} {% assign summary_move="moves a specified amount from one account in your wallet to another using an off-block-chain transaction." %} @@ -125,7 +125,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_sendMany="creates and broadcasts a transaction which sends outputs to multiple addresses." %} {% assign summary_sendRawTransaction="validates a transaction and broadcasts it to the peer-to-peer network." %} {% assign summary_sendToAddress="spends an amount to a given address." %} -{% assign summary_sentinelPing="sends a Sentinel Ping to the network." %} +{% assign summary_sentinelPing="was removed in Dash Core 0.14.0." %} {% assign summary_setAccount="puts the specified address in the given account." %} {% assign summary_setBIP69Enabled="enables or disables BIP69 input/output sorting (regtest network only)" %} {% assign summary_setBan="attempts add or remove a IP/Subnet from the banned list." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 83a7b493..8bcf9193 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -233,7 +233,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash GetGovernanceInfo Y - Updated in 0.13.0.0 + Updated in 0.14.0.0 Dash @@ -257,25 +257,25 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash Masternode Y - Updated in 0.13.0.0 + Updated in 0.14.0.0 Dash MasternodeBroadcast Y - + Removed in 0.14.0.0 Dash MasternodeList Y - Updated in 0.13.2.0 + Updated in 0.14.0.0 Dash MnSync Y - + Updated in 0.14.0.0 Dash @@ -287,7 +287,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash SentinelPing Y - + Removed in 0.14.0.0 Dash diff --git a/_includes/references.md b/_includes/references.md index 1f522510..df1e45ce 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -495,7 +495,7 @@ periodically to point to recent code. Last update: 2017-09-05 --> {% endcomment [MAX_SIZE]: https://github.com/dashpay/dash/blob/c31ba8ba4c07e72620bd71753f2103ca103bb1c2/src/serialize.h#L26 [privatesend denominations]: https://github.com/dashpay/dash/blob/753b1e486b2757b1dba59998ee477e7ceff04f2d/src/privatesend.cpp#L149-L171 [rpcprotocol.h]: https://github.com/dashpay/dash/blob/3e0eee4c84f40b3cf277e8d03e004249d03c081d/src/rpcprotocol.h -[spork.h]: https://github.com/dashpay/dash/blob/e1702cd4eca5f276c75cae9de0eb274369b031f6/src/spork.h#L22 +[spork.h]: https://github.com/dashpay/dash/blob/a4f5ba38b65384fb9243ce78c111feceb377e1a9/src/spork.h#L20 [spork pubkey]: https://github.com/dashpay/dash/blob/eaf90b77177efbaf9cbed46e822f0d794f1a0ee5/src/chainparams.cpp#L158 [masternode payments pubkey]: https://github.com/dashpay/dash/blob/eaf90b77177efbaf9cbed46e822f0d794f1a0ee5/src/chainparams.cpp#L159 [block subsidy]: https://github.com/dashpay/dash/blob/9ed9474a9eb007bba70278ce19df68e84aeeb712/src/main.cpp#L1741 From d7b8be3ec5ee16ac27c3f4f7edef5fccfafe68c0 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 21 Mar 2019 11:51:32 -0400 Subject: [PATCH 055/117] RPC - protx updates --- _includes/devdoc/dash-core/rpcs/rpcs/protx.md | 75 ++++++++++++++----- 1 file changed, 56 insertions(+), 19 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md index 5e8e158d..202f8bec 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md @@ -497,7 +497,7 @@ returned. If set to `false`, only the hashes of the ProTx will be returned. {% enditemplate %} -*Example from Dash Core 0.13.2* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet protx list @@ -589,7 +589,7 @@ The `protx info` RPC returns detailed information about a determinis {{INCLUDE_PROTX}} {% enditemplate %} -*Example from Dash Core 0.13.0* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet protx info\ @@ -602,19 +602,20 @@ Result: "proTxHash": "2b4a07a9b04dc42a0c19b85edb60954a27acaadfe3ee21d0171385778f34e1c2", "collateralHash": "8d23d08ee6e2e0577550c90afde9bc63745f734605724ba9908e0220c48dec04", "collateralIndex": 1, + "collateralAddress": "ygp7ZJGQZsVvuU11shixkNZSq9Uw4QrdWj", "operatorReward": 5, "state": { + "service": "54.149.207.193:19999", "registeredHeight": 683, "lastPaidHeight": 785, "PoSePenalty": 0, "PoSeRevivedHeight": -1, "PoSeBanHeight": -1, "revocationReason": 0, - "keyIDOwner": "29705bab955f252f876cbe47958b20feaa2b3e99", - "pubKeyOperator": "0bfd3d519f16de1669e977c316bd53fc902f83a75b6008dff3a7037ab4d3edaa39eadb13f5d6d1f192673f9ab86f17a2", - "keyIDVoting": "29705bab955f252f876cbe47958b20feaa2b3e99", - "addr": "1.2.3.4:1234", - "payoutAddress": "ybeK49S8ineDqNV698GZdMpdiHaYsZUJ2g" + "ownerAddress": "ycdU6EyVggw4RaW3EKPHCMBeT6vzRDXgbJ", + "votingAddress": "ycdU6EyVggw4RaW3EKPHCMBeT6vzRDXgbJ", + "payoutAddress": "yXsKagNKcHkE2eUKQe8Sf2Z32SKrmQ6XEJ", + "pubKeyOperator": "8ad9500ef26ae510e0dd8cf0568b2a89d1234697873db2fcdd11674a73caba91cd416f9ac701f4f7807d8db102bc4a39" }, "confirmations": 192, "wallet": { @@ -922,15 +923,25 @@ The `protx diff` RPC calculates a diff and a proof between two maste p: "Required
    (exactly 1)" d: "The hash of the initial provider registration transaction as hex in RPC byte order" +- n: "→ →
    `confirmedHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the block where the ProRegTx was mined" + +- n: "→ →
    `service`" + t: "string" + p: "Required
    (exactly 1)" + d: "The IP address/Port of the masternode" + - n: "→ →
    `pubKeyOperator`" t: "string (hex)" p: "Required
    (exactly 1)" d: "The operator public key" -- n: "→ →
    `keyIDVoting`" +- n: "→ →
    `votingAddress`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "The voting key" + d: "The voting address" - n: "→ →
    `isValid`" t: "bool" @@ -943,7 +954,7 @@ The `protx diff` RPC calculates a diff and a proof between two maste d: "Merkle root of the masternode list" {% enditemplate %} -*Example from Dash Core 0.13.0* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet protx diff 600 700 @@ -952,22 +963,48 @@ dash-cli -testnet protx diff 600 700 Result: {% highlight json %} { - "baseBlockHash": "0000a691fd23e6e51368b9204ae9ae67fecdda2fd51ab29fde964e335c84f962", - "blockHash": "0000b8291620f592a16eea5bbb937c992217d3ff676aa08a5c4e8d4c1d353c61", - "cbTxMerkleTree": "0100000001351a1d8f0bb20542ce1a83729cdf0048e2deb777e641f7db89b94b0c76544e980101", - "cbTx": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff0502bc020101ffffffff0100743ba40b000000232103ad831efe17ae73c016883085313aaa80365218cc029152edc2886c162048bd0bac00000000260100bc02000043ef07f248e6d6beb10c203a17f434201edba8b85d46699728b7a8e048c339fc", + "baseBlockHash": "0000002b88258091c9f343e124040fb7b2e0d88afe4a99d213c046792c183a49", + "blockHash": "0000051bbea86db62be46c0beae2cb34110e928ace42683ab189e8db9874308f", + "cbTxMerkleTree": "0200000002a4eaaaaaf7e260b90b1a7987eb269da110559343be5746ac5ef7f39b79c1228e4f7e074272c7e3814f630ce4f2f52f80c0b814fb1ce0e4d954b7b583a55ff0a50103", + "cbTx": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff060369fe000102ffffffff0340230e43000000001976a914323a8b6425ea6f8dafd411db13bc303219a9e4f088ac44aab141000000001976a914870ca3662658f261952cbfa56969283ad1e84dc588acfc785c01000000001976a91487da2642cf967c493f126137d4f15e9de36b976888ac0000000026010069fe000068cadec8342737e3f2dddc713b3a206390996c8b806fb5a8a2ccc71240cf7a97", "deletedMNs": [ + "285d7da8e94b2348689aca4a63bc6cbbeeb8e912c2088fb9a01e295e3eeeb2ff" ], "mnList": [ { - "proRegTxHash": "2b4a07a9b04dc42a0c19b85edb60954a27acaadfe3ee21d0171385778f34e1c2", - "service": "1.2.3.4:1234", - "pubKeyOperator": "0bfd3d519f16de1669e977c316bd53fc902f83a75b6008dff3a7037ab4d3edaa39eadb13f5d6d1f192673f9ab86f17a2", - "keyIDVoting": "29705bab955f252f876cbe47958b20feaa2b3e99", + "proRegTxHash": "39a1339d9bf26de701345beecc5de75a690bc9533741a3dbe90f2fd88b8ed461", + "confirmedHash": "0000030c37a946836029eeca338604c652e3c6cd368eb54bdfa8553213954f74", + "service": "198.199.74.241:19999", + "pubKeyOperator": "0efda51589f86e30cc2305e7388c01ce0309c19a182cf37bced97c7da72236f660c0a395e765e6e06962ecff5a69d7de", + "votingAddress": "yRCunhZVjbMxDr1C6fD6Pf37sTwH6wG7Uu", + "isValid": true + }, + { + "proRegTxHash": "3dbb7de94e219e8f7eaea4f3c01cf97d77372e10152734c1959f17302369aa49", + "confirmedHash": "0000043c0d46d3e6b84c1b420b77b65e962207fb6427361f74d243b9b1fd51cb", + "service": "52.36.64.148:19999", + "pubKeyOperator": "139b654f0b1c031e1cf2b934c2d895178875cfe7c6a4f6758f02bc66eea7fc292d0040701acbe31f5e14a911cb061a2f", + "votingAddress": "yWEZQmGADmdSk6xCai7TPcmiSZuY65hBmo", + "isValid": true + }, + { + "proRegTxHash": "851a17fa224374b52b1626f4fb6b5158f2a6add3061e65ef03e1ff13c610c550", + "confirmedHash": "000009a21e82163268330855c9ef13f938a802e46db0fc8a6b1f97161e9d60d8", + "service": "104.196.245.194:19999", + "pubKeyOperator": "0a6bd57731d85539e62c4b46ec150343a0faba9f08af509309634a6e7e016e26b5e809f0e4cc68252c3c46e3a4b35e57", + "votingAddress": "ycppuGB8m2zn5xRfXyJV8U1nNgT7bFs7u5", + "isValid": true + }, + { + "proRegTxHash": "9e9f7a6d63358ff6e7633d4bb5a3c9eaaebaf29437d5917565ed73f5bcc03dbf", + "confirmedHash": "00000020b973dddd9dfd392f118d0094adc86bd8bfe9bee67d08705155bc7aaf", + "service": "207.246.101.212:19999", + "pubKeyOperator": "02a37189354135fed49de66a43d59590824579ccfa7e9512f50aeaff641e1b78cc5c798c5ae4a35b11958fd153f0a0e3", + "votingAddress": "yRH7EYkGQgdKvmfdskcMRphdDumLdP6fq1", "isValid": true } ], - "merkleRootMNList": "fc39c348e0a8b7289769465db8a8db1e2034f4173a200cb1bed6e648f207ef43" + "merkleRootMNList": "977acf4012c7cca2a8b56f808b6c999063203a3b71dcddf2e3372734c8deca68" } {% endhighlight %} From f15d6f7011c371e17debd511958666072d83b789 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 21 Mar 2019 11:52:35 -0400 Subject: [PATCH 056/117] P2P - Add 0.14 Major changes note --- _includes/devdoc/ref_p2p_networking.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index a14d5e76..dc4fdef5 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -70,6 +70,7 @@ As of Dash Core 0.13.0.0, the most recent protocol version is 70213. | Version | Initial Release | Major Changes |---------|------------------------------------|-------------- +| 70214 | Dash Core 0.14.0.x
    (??? 2019) | • Long-living Masternode Quorums
    • ChainLocks
    • PrivateSend improvements
    • Experimental LLMQ InstantSend
    • Bitcoin Core 0.15 backports | 70213 | Dash Core 0.13.0.x
    (Jan 2019) | • Special Transactions
    • Deterministic Masternode List
    • Coinbase Special Transaction
    • Automatic InstantSend | 70210 | Dash Core 0.12.3.x
    (July 2018) | • Named Devnets
    • New signature format / Spork 6 addition
    • Bitcoin Core 0.13/0.14 backports
    • [BIP90][]: Buried deployments
    • [BIP147][]: NULLYDUMMY enforcement
    • [BIP152][] Compact Blocks
    • Transaction version increased to 2
    • Zero fee transactions removed
    • Pruning in Lite Mode | 70208 | Dash Core 0.12.2.x
    (Nov 2017) | • [DIP1][] (2MB blocks)
    • Fee reduction (10x)
    • InstantSend fix
    • PrivateSend improvements
    • _Experimental_ HD wallet
    • Local Masternode support removed @@ -173,7 +174,7 @@ The deprecated type identifiers are: | 7 | [`MSG_MASTERNODE_PAYMENT_VOTE`][msg_masternode_payment_vote]{:#term-msg_masternode_payment_vote}{:.term} | **Deprecated in 0.14.0**

    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**

    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 +| 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 From e057568ccf42fdea1bea9affaa12f99dbc643ae4 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 27 Mar 2019 12:59:33 -0400 Subject: [PATCH 057/117] V0.14.0 New P2P msgs (initial) (#113) * P2P - Add placeholders for new messages - Misc: senddsq, clsig, islock, mnauth - Quorum: qsendrecsigs, qcomplaint, qjustify, qpcommit, qwatch, qdebugstatus, qsigsesann, qsigsinv, qgetsigs, qbsigs, qsigrec * P2P - Add new inventory types * P2P - Add new messages to cross-ref and search (incomplete) Some new messages don't have descriptions yet * P2P - Indicate quorum-related msgs that are not broadcast network wide These msgs are for intra-quorum comm * P2P - Sort quorum msgs to alphabetical order * P2P - Add details to SendDsq * P2P - Add field details to some new quorum msgs - qbsigs, qsigsesann, and qsigsinv * P2P - Add partial details to ClSig msg * P2P - Add partial details to qcomplaint and qcontrib * P2P - Add DIP8 links * P2P - Fix some field sizes * P2P - Add partial details to justification and premature commitment * P2P - Add qwatch details * P2P - Add partial qdebugstatus details * P2P - Formatting update * P2P - Add details to ISLock and MNAuth * Formatting and typo corrections * P2P - Add partiall details to qsendrecsigs and qsigrec messages * Formatting - organize Quorum messages into sub-catergories - Debugging, Distributed Key Generateion, and Signing Sessions * Formatting - Fix link issue * P2P - Add missing qcontrib info * P2P - Partial detail for qsigsesann and qgetsigs * P2P - More partial details for quorum signing messages --- _autocrossref.yaml | 30 ++ _config.yml | 35 +- _includes/devdoc/ref_p2p_networking.md | 597 ++++++++++++++++++++++++- _includes/references.md | 23 + 4 files changed, 673 insertions(+), 12 deletions(-) diff --git a/_autocrossref.yaml b/_autocrossref.yaml index f94d6606..e8d501d3 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -24,6 +24,8 @@ bitcoinj: '`blocktxn` messages': blocktxn message 'CbTx': coinbase special tx certificate chain: +'`clsig` message': clsig message +'`clsig` messages': clsig message '`cmpctblock` message': cmpctblock message '`cmpctblock` messages': cmpctblock message DER: @@ -86,6 +88,8 @@ intermediate certificate: intermediate certificates: intermediate certificate '`inv` message': inv message '`inv` messages': inv message +'`islock` message': islock message +'`islock` messages': islock message '`ix` message': ix message '`ix` messages': ix message IP address: DO NOT AUTOCROSSREF @@ -113,6 +117,8 @@ merge: Merge avoidance: DO NOT AUTOCROSSREF micropayment channel: micropayment channels: micropayment channel +'`mnauth` message': mnauth message +'`mnauth` messages': mnauth message '`mnb` message': mnb message '`mnb` messages': mnb message '`mnget` message': mnget message @@ -176,8 +182,30 @@ protocol version 70013: section protocol versions protocol version 70014: section protocol versions public key infrastructure: pki 'QcTx': quorum commitment special tx +'`qbsigs` message': qbsigs message +'`qbsigs` messages': qbsigs message +'`qcomplaint` message': qcomplaint message +'`qcomplaint` messages': qcomplaint message +'`qcontrib` message': qcontrib message +'`qcontrib` messages': qcontrib message +'`qdebugstatus` message': qdebugstatus message +'`qdebugstatus` messages': qdebugstatus message '`qfcommit` message': qfcommit message '`qfcommit` messages': qfcommit message +'`qgetsigs` message': qgetsigs message +'`qgetsigs` messages': qgetsigs message +'`qjustify` message': qjustify message +'`qjustify` messages': qjustify message +'`qpcommit` message': qpcommit message +'`qpcommit` messages': qpcommit message +'`qsigrec` message': qsigrec message +'`qsigrec` messages': qsigrec message +'`qsigsesann` message': qsigsesann message +'`qsigsesann` messages': qsigsesann message +'`qsigsinv` message': qsigsinv message +'`qsigsinv` messages': qsigsinv message +'`qwatch` message': qwatch message +'`qwatch` messages': qwatch message '`r`': r receipt: DO NOT AUTOCROSSREF recurrent rebilling: @@ -192,6 +220,8 @@ RPCs: rpc secp256k1: '`sendcmpct` message': sendcmpct message '`sendcmpct` messages': sendcmpct message +'`senddsq` message': senddsq message +'`senddsq` messages': senddsq message '`spork` message': spork message '`spork` messages': spork message '`ssc` message': ssc message diff --git a/_config.yml b/_config.yml index 2e4e538a..c2692a4f 100644 --- a/_config.yml +++ b/_config.yml @@ -250,7 +250,7 @@ devsearches: - 'GetRawTransaction': "/en/developer-reference#getrawtransaction" - 'GetReceivedByAccount': "/en/developer-reference#getreceivedbyaccount" - 'GetReceivedByAddress': "/en/developer-reference#getreceivedbyaddress" - - 'GetSpecialTxes': "/en/developer-reference#getspecialtxes" + - 'GetSpecialTxes': "/en/developer-reference#getspecialtxes" - 'GetSpentInfo': "/en/developer-reference#getspentinfo" - 'GetSuperblockBudget': "/en/developer-reference#getsuperblockbudget" - 'GetTransaction': "/en/developer-reference#gettransaction" @@ -544,6 +544,7 @@ devsearches: - "pong": "/en/developer-reference#pong" - "reject": "/en/developer-reference#reject" - "sendcmpct": "/en/developer-reference#sendcmpct" + - "senddsq": "/en/developer-reference#senddsq" - "tx": "/en/developer-reference#tx" - "verack": "/en/developer-reference#verack" - "version": "/en/developer-reference#version" @@ -553,6 +554,8 @@ devsearches: - "spork": "/en/developer-reference#spork" # Dash - instantsend + - "clsig": "/en/developer-reference#clsig" + - "islock": "/en/developer-reference#islock" - "ix": "/en/developer-reference#ix" - "txlvote": "/en/developer-reference#txlvote" @@ -567,6 +570,29 @@ devsearches: - "dstx": "/en/developer-reference#dstx" # Dash - masternode + - "ssc": "/en/developer-reference#ssc" + - "mnauth": "/en/developer-reference#mnauth" + + # Dash - quorums + - "qbsigs": "/en/developer-reference#qbsigs" + - "qcomplaint": "/en/developer-reference#qcomplaint" + - "qcontrib": "/en/developer-reference#qcontrib" + - "qdebugstatus": "/en/developer-reference#qdebugstatus" + - "qfcommit": "/en/developer-reference#qfcommit" + - "qgetsigs": "/en/developer-reference#qgetsigs" + - "qjustify": "/en/developer-reference#qjustify" + - "qpcommit": "/en/developer-reference#qpcommit" + - "qsigrec": "/en/developer-reference#qsigrec" + - "qsigsesann": "/en/developer-reference#qsigsesann" + - "qsigsinv": "/en/developer-reference#qsigsinv" + - "qwatch": "/en/developer-reference#qwatch" + + # Dash - governance + - "govobj": "/en/developer-reference#govobj" + - "govobjvote": "/en/developer-reference#govobjvote" + - "govsync": "/en/developer-reference#govsync" + + # Dash - deprecated - "dseg": "/en/developer-reference#dseg" - "mnb": "/en/developer-reference#mnb" - "mnget": "/en/developer-reference#mnget" @@ -574,13 +600,6 @@ devsearches: - "mnv": "/en/developer-reference#mnv" - "mnw": "/en/developer-reference#mnw" - "mnwb": "/en/developer-reference#mnwb" - - "ssc": "/en/developer-reference#ssc" - - "qfcommit": "/en/developer-reference#qfcommit" - - # Dash - governance - - "govobj": "/en/developer-reference#govobj" - - "govobjvote": "/en/developer-reference#govobjvote" - - "govsync": "/en/developer-reference#govsync" donation_banner: address: 1GwV7fPX97hmavc6iNrUZUogmjpLPrPFoE diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index dc4fdef5..73720d33 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -165,7 +165,15 @@ The currently-available type identifiers are: | 17 | [`MSG_GOVERNANCE_OBJECT`][msg_governance_object]{:#term-msg_governance_object}{:.term} | The hash is a Governance Object. | 18 | [`MSG_GOVERNANCE_OBJECT_VOTE`][msg_governance_object_vote]{:#term-msg_governance_object_vote}{:.term} | The hash is a Governance Object Vote. | 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.
    _Added in 0.13.0_ +| 23 | [`MSG_QUORUM_CONTRIB`][msg_quorum_contrib]{:#term-msg_quorum_contrib}{:.term} | The hash is a long-living masternode quorum contribution.
    _Added in 0.14.0_ +| 24 | [`MSG_QUORUM_COMPLAINT`][msg_quorum_complaint]{:#term-msg_quorum_complaint}{:.term} | The hash is a long-living masternode quorum complaint.
    _Added in 0.14.0_ +| 25 | [`MSG_QUORUM_JUSTIFICATION`][msg_quorum_justification]{:#term-msg_quorum_justification}{:.term} | The hash is a long-living masternode quorum justification.
    _Added in 0.14.0_ +| 26 | [`MSG_QUORUM_PREMATURE_COMMITMENT`][msg_quorum_premature_commitment]{:#term-msg_quorum_premature_commitment}{:.term} | The hash is a long-living masternode quorum premature commitment.
    _Added in 0.14.0_ +| 27 | [`MSG_QUORUM_DEBUG_STATUS`][msg_quorum_debug_status]{:#term-msg_quorum_debug_status}{:.term} | The hash is a long-living masternode quorum debug status.
    _Added in 0.14.0_ +| 28 | [`MSG_QUORUM_RECOVERED_SIG`][msg_quorum_recovered_sig]{:#term-msg_quorum_recovered_sig}{:.term} | The hash is a long-living masternode quorum recovered signature.
    _Added in 0.14.0_ +| 29 | [`MSG_CLSIG`][msg_clsig]{:#term-msg_clsig}{:.term} | The hash is a ChainLock signature.
    _Added in 0.14.0_ +| 30 | [`MSG_ISLOCK`][msg_islock]{:#term-msg_islock}{:.term} | The hash is an LLMQ-based InstantSend lock.
    _Added in 0.14.0_ The deprecated type identifiers are: @@ -182,6 +190,7 @@ The deprecated type identifiers are: | 14 | [`MSG_MASTERNODE_ANNOUNCE`][msg_masternode_announce]{:#term-msg_masternode_announce}{:.term} | **Deprecated in 0.14.0**

    The hash is a Masternode Broadcast. | 15 | [`MSG_MASTERNODE_PING`][msg_masternode_ping]{:#term-msg_masternode_ping}{:.term} | **Deprecated in 0.14.0**

    The hash is a Masternode Ping. | 19 | [`MSG_MASTERNODE_VERIFY`][msg_masternode_verify]{:#term-msg_masternode_verify}{:.term} | **Deprecated in 0.14.0**

    The hash is a Masternode Verify. +| 22 | `MSG_QUORUM_DUMMY_COMMITMENT` | **Deprecated in 0.14.0**

    Temporarily used on Testnet only. Type identifier zero and type identifiers greater than twenty are reserved for future implementations. Dash Core ignores all inventories with @@ -1726,6 +1735,34 @@ header has been omitted.) {% endautocrossref %} + +#### SendDsq +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +The `senddsq` message is used to notify a peer whether or not to send `dsq` messages. +This allows clients that are not interested in PrivateSend mixing (e.g. mobile +wallet) to minimize data usage. + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 1 | fSendDSQueue | bool | 0 - Notify peer to not send any `dsq` messages
    1 - Notify peer to send all `dsq` messages + + +{% endautocrossref %} + + #### SendHeaders {% include helpers/subhead-links.md %} @@ -1916,6 +1953,59 @@ the Developer Guide [InstantSend section](developer-guide#instantsend +{% endautocrossref %} + +#### islock +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +The `islock` message is used to... + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 1-9 | inputsSize | compactSize uint | Number of inputs| +| 36 * `inputsSize`| inputs | COutPoint | Outpoints used in the transaction | +| 32 | txid | uint256 | TXID of the locked transaction | +| 96 | sig | byte[] | LLMQ BLS Signature | + + +{% endautocrossref %} + #### ix {% include helpers/subhead-links.md %} @@ -2683,7 +2773,288 @@ bf110000 ................................... Count: 4543 {% endautocrossref %} -#### qfcommit +#### mnauth +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +The `mnauth` message is sent by a masternode immediately after sending a +`verack` message to authenticate that the sender is a masternode. It is only +sent when the sender is actually a masternode. + +The `mnauth` message signs a challenge that was previously sent via a +`version` message. The challenge is signed differently depending on depending on +if the connection is inbound or outbound. + +This is primarily used as a DoS protection mechanism to allow persistent +connections between masternodes to remain open even if inbound connection limits +are reached. + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 2 | proRegTxHash | uint256 | Version of the message +| 96 | sig | byte[] | BLS signature, signed with the operator key of the masternode + + +{% endautocrossref %} + + +### Quorum Messages +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +The following network messages enable the long-living masternode quorum (LLMQ) +features built in to Dash. + +{% endautocrossref %} + + +#### Debugging +{% include helpers/subhead-links.md %} + + +##### qdebugstatus +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +The `qdebugstatus` message is used to... + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 32 | proTxHash | uint256 | The ProRegTx hash +| 8 | nTime | int64_t | +| 1-9 | sessionsSize | compactSize uint | +| `sessionsSize` * <> | sessions | | +| 96 | sig | byte[] | BLS signature + +`CDKGDebugSessionStatus`: + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 1 | llmqType | uint8_t | The type of LLMQ +| 32 | quorumHash | uint256 | The quorum identifier +| 4 | quorumHeight | uint32_t | The quorum height +| 1 | phase | uint8_t | The DKG phase of the quorum +| 1-9 | membersSize | compactSize uint | +| `membersSize` * <> | members | CDKGDebugMemberStatus | + +`CDKGDebugMemberStatus`: + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 1 | statusBitset | uint8_t | +| 32 * <> | complaintsFromMembers | uint16_t | + + + +{% endautocrossref %} + + +##### qwatch +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +The `qwatch` message tells the receiving peer to relay LLMQ messages +(`qcontrib` messages, `qcomplaint` messages, `qjustify` messages, and +`qpcommit` messages). + +There is no payload in a `qwatch` message. See the [message header +section][section message header] for an example of a message without a payload. + +{% endautocrossref %} + + +#### Distributed Key Generation +{% include helpers/subhead-links.md %} + + +##### qcontrib +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +![Warning icon](/img/icons/icon_warning.svg) Note: This message is used for +intra-quorum communication and is only sent to the masternodes in the LLMQ and +nodes that are monitoring in Watch Mode for auditing/debugging purposes. + +The `qcontrib` message is used by each member of the DKG process to send key +contributions to all other members. + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 1 | llmqType | uint8_t | The type of LLMQ +| 32 | quorumHash | uint256 | The quorum identifier +| 32 | proTxHash | uint256 | The ProRegTx hash of the complaining member +| 1-9 | vvecSize | compactSize uint | The size of the verification vector +| 48 * `vvecSize` | vvec | BLSPubKey[] | The verification vector +| 1-9 | skCount | compactSize uint | Number of encrypted secret key contributions +| 32 * `skCount` | skContributions | byte[] | Secret key contributions encrypted to recipient masternodes’ BLS public operator key +| 96 | sig | byte[] | BLS signature, signed with the operator key of the contributing masternode + +More information can be found in the [Contribution phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#2-contribution-phase). + + +{% endautocrossref %} + + +##### qcomplaint +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +![Warning icon](/img/icons/icon_warning.svg) Note: This message is used for +intra-quorum communication and is only sent to the masternodes in the LLMQ and +nodes that are monitoring in Watch Mode for auditing/debugging purposes. + +The `qcomplaint` message is used to notify other members of the DKG process of +any members that provided an invalid secret key contribution. + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 1 | llmqType | uint8_t | The type of LLMQ +| 32 | quorumHash | uint256 | The quorum identifier +| 32 | proTxHash | uint256 | The ProRegTx hash of the complaining member +| 1-9 | badBitSize | compactSize uint | Number of bits in the bad members bitvector +| (`badBitSize` + 7) / 8 | badMembers | byte[] | The bad members bitvector +| 1-9 | complaintsBitSize | compactSize uint | Number of bits in the complaints bitvector +| (`complaints`
    `BitSize` + 7) / 8 | complaints | byte[] | The complaints bitvector +| 96 | sig | byte[] | BLS signature, signed with the operator key of the contributing masternode + +More information can be found in the [Complaining phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#3-complaining-phase). + + +{% endautocrossref %} + + +##### qjustify +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +![Warning icon](/img/icons/icon_warning.svg) Note: This message is used for +intra-quorum communication and is only sent to the masternodes in the LLMQ and +nodes that are monitoring in Watch Mode for auditing/debugging purposes. + +The `qjustify` message is used to... + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 1 | llmqType | uint8_t | The type of LLMQ +| 32 | quorumHash | uint256 | The quorum identifier +| 32 | proTxHash | uint256 | The ProRegTx hash of the complaining member +| 1-9 | skContributions
    Count | compactSize uint | Number of unencrypted secret key contributions +| 36 * `skContributions`
    `Count` | skContribution | SKContribution | Member index and secret key contribution for members justifying complaints +| 96 | sig | byte[] | BLS signature, signed with the operator key of the contributing masternode + +An `SKContribution` consists of: + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 4 | skContributionMember | uint32_t | Index of the member for which justification is provided +| 32 | skContributions | byte[] | Unencrypted secret key contribution for the member contained in skContributionMember + +More information can be found in the [Justification phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#4-justification-phase). + + +{% endautocrossref %} + + +##### qpcommit +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +![Warning icon](/img/icons/icon_warning.svg) Note: This message is used for +intra-quorum communication and is only sent to the masternodes in the LLMQ and +nodes that are monitoring in Watch Mode for auditing/debugging purposes. + +The `qpcommit` message is used to exchange premature commitment messages for +verification and selection of the final commitment. + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 1 | llmqType | uint8_t | The type of LLMQ +| 32 | quorumHash | uint256 | The quorum identifier +| 32 | proTxHash | uint256 | The ProRegTx hash of the complaining member +| 1-9 | validMembersSize | compactSize uint | Bit size of the `validMembers` bitvector +| (`valid`
    `MembersSize` + 7) / 8 | validMembers | byte[] | Bitset of valid members in this commitment +| 48 | quorumPublicKey | uint256 | The quorum public key +| (`complaints`
    `BitSize` + 7) / 8 | quorumVvecHash | byte[] | The complaints bitvector +| 96 | quorumSig | BLSSig | Threshold signature, signed with the threshold signature share of the committing member +| 96 | sig | byte[] | BLS signature, signed with the operator key of the contributing masternode + +More information can be found in the [Commitment phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#5-commitment-phase). + + +{% endautocrossref %} + + +##### qfcommit {% include helpers/subhead-links.md %} {% autocrossref %} @@ -2713,8 +3084,10 @@ valid final commitment. | (bitSize + 7) / 8 | validMembers | byte[] | Bitset of valid members in this commitment | 48 | quorumPublicKey | BLSPubKey | The quorum public key | 32 | quorumVvecHash | uint256 | The hash of the quorum verification vector -| 96 | quorumSig | BLSSig | Recovered threshold signature -| 96 | sig | BLSSig | Aggregated BLS signatures from all included commitments +| 96 | quorumSig | byte[] | Recovered threshold signature +| 96 | sig | byte[] | Aggregated BLS signatures from all included commitments + +More information can be found in the [Finalization phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#6-finalization-phase). {% endautocrossref %} + +#### Signing Sessions +{% include helpers/subhead-links.md %} + + +##### qbsigs +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +![Warning icon](/img/icons/icon_warning.svg) Note: This message is used for +intra-quorum communication and is only sent to the masternodes in the LLMQ and +nodes that are monitoring in Watch Mode for auditing/debugging purposes. + +The `qbsigs` message is used to send batched signature shares in response to a +`qgetsigs` message. + +Note: The number of messages that can be sent in a batch is limited to 400 +(as defined by `MAX_MSGS_TOTAL_BATCHED_SIGS`). + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| Varies | msgs | CBatchedSigShares | Batches of signature shares + +CBatchedSigShares: + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 4 | sessionId | uint32_t | Signing session ID +| | sigShares | | + + +{% endautocrossref %} + + +##### qgetsigs +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +![Warning icon](/img/icons/icon_warning.svg) Note: This message is used for +intra-quorum communication and is only sent to the masternodes in the LLMQ and +nodes that are monitoring in Watch Mode for auditing/debugging purposes. + +The `qgetsigs` message is used to request signature shares. The response to a +`qgetsigs` message is a `qbsigs` message. + +Note: The number of inventories in a `qgetsigs` message is limited to 200 +(as defined by `MAX_MSGS_CNT_QGETSIGSHARES`). + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 4 | sessionId | uint32_t | Signing session ID +| 1-9 | invSize | compactSize uint | Number of inventory +| * `invSize` | inv | | Signing shares + + +{% endautocrossref %} + + +##### qsendrecsigs +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +The `qsendrecsigs` message is used to notify a peer to send plain LLMQ recovered +signatures (inventory type `MSG_QUORUM_RECOVERED_SIG`). Otherwise the peer would +only announce/send the higher level messages produced when a recovered signature +is found (e.g. InstantSend `islock` messages or ChainLock `clsig` messages). + +Note: SPV nodes should not send this message as they are usually only interested +in the higher level messages. + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 1 | fSendRecSigs | bool | 0 - Notify peer to not send plain LLMQ recovered signatures
    1 - Notify peer to send plain LLMQ recovered signatures (default for Dash Core nodes) + + +{% endautocrossref %} + + +##### qsigrec +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +The `qsigrec` message is used to provide recovered signatures and related quorum +details to nodes that have requested this information via the `qsendrecsigs` message. + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 1 | llmqType | uint8_t | The type of LLMQ +| 32 | quorumHash | uint256 | The quorum hash +| 32 | id | uint256 | The signing request id +| 32 | msgHash | uint256 | The message hash +| 96 | sig | byte[] | The final recovered BLS threshold signature + +More information can be found in the [Recovered threshold signatures section of DIP7](https://github.com/dashpay/dips/blob/master/dip-0007.md#recovered-threshold-signatures). + + +{% endautocrossref %} + + +##### qsigsesann +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +![Warning icon](/img/icons/icon_warning.svg) Note: This message is used for +intra-quorum communication and is only sent to the masternodes in the LLMQ and +nodes that are monitoring in Watch Mode for auditing/debugging purposes. + +The `qsigsesann` message is used to announce the sessionId for a signing +session. The sessionId will be used for all P2P messages related to that +session. + +Note: The maximum number of announcements in a `qsigsesann` message is limited to +100 (as defined by `MAX_MSGS_CNT_QSIGSESANN`). + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 4 | sessionId | uint32_t | Signing session ID (must be less than the maximum uint32_t value) +| 1 | llmqType | uint8_t | The LLMQ type +| 32 | quorumHash | uint256 | The quorum identifier +| 32 | id | uint256 | The signing request id +| 32 | msgHash | uint256 | The message hash + + +{% endautocrossref %} + + +##### qsigsinv +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +![Warning icon](/img/icons/icon_warning.svg) Note: This message is used for +intra-quorum communication and is only sent to the masternodes in the LLMQ and +nodes that are monitoring in Watch Mode for auditing/debugging purposes. + +The `qsigsinv` message (quorum signature inventory) announces one or more quorum +signature share inventories known by the transmitting peer. + +Note: The maximum number of inventories in a `qsigsinv` message is limited to +200 (as defined by `MAX_MSGS_CNT_QSIGSHARESINV`). + +| Bytes | Name | Data type | Description | +| --- | --- | --- | --- | +| 4 | sessionId | uint32_t | Signing session ID (must be less than the maximum uint32_t value) +| 8 | invSize | uint64_t | +| | inv | | + + +{% endautocrossref %} + + ### Governance Messages {% include helpers/subhead-links.md %} diff --git a/_includes/references.md b/_includes/references.md index df1e45ce..55ca041c 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -16,6 +16,8 @@ http://opensource.org/licenses/MIT. [msg_block]: /en/developer-reference#term-msg_block "The block header hash data type identifier of an inventory on the P2P network" [msg_filtered_block]: /en/developer-reference#term-msg_block "An alternative to the block header hash data type identifier of an inventory on the P2P network used to request a merkle block" +[msg_clsig]: /en/developer-reference#term-msg_clsig "The ChainLock Signature data type identifier of an inventory on the P2P network" +[msg_islock]: /en/developer-reference#term-msg_islock "The LLMQ-based InstantSend Lock data type identifier of an inventory on the P2P network" [msg_txlock_request]: /en/developer-reference#term-msg_txlock_request "The InstantSend TX Lock request data type identifier of an inventory on the P2P network" [msg_txlock_vote]: /en/developer-reference#term-msg_txlock_vote "The InstantSend TX Lock vote data type identifier of an inventory on the P2P network" [msg_spork]: /en/developer-reference#term-msg_spork "The Spork ID data type identifier of an inventory on the P2P network" @@ -33,7 +35,13 @@ http://opensource.org/licenses/MIT. [msg_governance_object_vote]: /en/developer-reference#term-msg_governance_object_vote "Governance object vote data type identifier of an inventory on the P2P network" [msg_masternode_verify]: /en/developer-reference#term-msg_masternode_verify "Masternode Verify data type identifier of an inventory on the P2P network" [msg_cmpct_block]: /en/developer-reference#term-msg_cmpct_block "An alternative to the block header hash data type identifier of an inventory on the P2P network used to request a compact block" +[msg_quorum_complaint]: /en/developer-reference#term-msg_quorum_complaint "The Long-Living Masternode Quorum Complaint data type identifier of an inventory on the P2P network" +[msg_quorum_contrib]: /en/developer-reference#term-msg_quorum_contrib "The Long-Living Masternode Quorum Contribution data type identifier of an inventory on the P2P network" +[msg_quorum_debug_status]: /en/developer-reference#term-msg_quorum_debug_status "The Long-Living Masternode Quorum Debug Status data type identifier of an inventory on the P2P network" +[msg_quorum_justification]: /en/developer-reference#term-msg_quorum_justification "The Long-Living Masternode Quorum Justification data type identifier of an inventory on the P2P network" [msg_quorum_final_commitment]: /en/developer-reference#term-msg_quorum_final_commitment "The Long-Living Masternode Quorum Final Commitment data type identifier of an inventory on the P2P network" +[msg_quorum_premature_commitment]: /en/developer-reference#term-msg_quorum_premature_commitment "The Long-Living Masternode Quorum Premature Commitment data type identifier of an inventory on the P2P network" +[msg_quorum_recovered_sig]: /en/developer-reference#term-msg_quorum_recovered_sig "The Long-Living Masternode Quorum Recovered Signature data type identifier of an inventory on the P2P network" [network]: /en/developer-guide#term-network "The Dash P2P network which broadcasts transactions and blocks" [op_checkmultisig]: /en/developer-reference#term-op-checkmultisig "Opcode which returns true if one or more provided signatures (m) sign the correct parts of a transaction and match one or more provided public keys (n)" [op_checksig]: /en/developer-reference#term-op-checksig "Opcode which returns true if a signature signs the correct parts of a transaction and matches a provided public key" @@ -217,6 +225,7 @@ http://opensource.org/licenses/MIT. [block message]: /en/developer-reference#block "The P2P network message which sends a serialized block" [blocktxn message]: /en/developer-reference#blocktxn "The P2P network message which sends a list of requested transactions from a compact block" [cmpctblock message]: /en/developer-reference#cmpctblock "The P2P network message which sends a serialized compact block" +[clsig message]: /en/developer-reference#clsig "The P2P network message which sends a ChainLock signature" [dsa message]: /en/developer-reference#dsa "A P2P network message used to join a mixing pool" [dsc message]: /en/developer-reference#dsc "A P2P network message used to indicates a PrivateSend mixing session is complete" [dsf message]: /en/developer-reference#dsf "A P2P network message sent as the final mixing transaction in a session asking users to sign the final mixing TX messages" @@ -242,9 +251,11 @@ http://opensource.org/licenses/MIT. [govsync message]: /en/developer-reference#govsync "A P2P network message used to synchronize governance objects" [headers message]: /en/developer-reference#headers "A P2P protocol message containing one or more block headers" [inv message]: /en/developer-reference#inv "A P2P protocol message used to send inventories of transactions and blocks known to the transmitting peer" +[islock message]: /en/developer-reference#islock "A P2P protocol message which sends a LLQM-based InstantSend lock" [ix message]: /en/developer-reference#ix "A P2P protocol message which sends a single serialized transaction via InstantSend" [mempool message]: /en/developer-reference#mempool "A P2P protocol message used to request one or more inv messages with currently-unconfirmed transactions" [merkleblock message]: /en/developer-reference#merkleblock "A P2P protocol message used to request a filtered block useful for SPV proofs" +[mnauth message]: /en/developer-reference#mnauth "A P2P protocol message used to authenticate connections between masternodes" [mnb message]: /en/developer-reference#mnb "A P2P protocol message used to describe the masternode entry and how to validate messages from it" [mnget message]: /en/developer-reference#mnget "A P2P protocol message that requests masternode payment sync" [mnlistdiff message]: /en/developer-reference#mnlistdiff "A P2P protocol message used to send a diff of simplified masternode list entries between two blocks" @@ -254,9 +265,21 @@ http://opensource.org/licenses/MIT. [notfound message]: /en/developer-reference#notfound "A P2P protocol message sent to indicate that the requested data was not available" [ping message]: /en/developer-reference#ping "A P2P network message used to see if the remote host is still connected" [pong message]: /en/developer-reference#pong "A P2P network message used to reply to a P2P network ping message" +[qbsigs message]: /en/developer-reference#qbsigs "A P2P network message used to ..." +[qcomplaint message]: /en/developer-reference#qcomplaint "A P2P network message used to ..." +[qcontrib message]: /en/developer-reference#qcontrib "A P2P network message used to ..." +[qdebugstatus message]: /en/developer-reference#qdebugstatus "A P2P network message used to ..." [qfcommit message]: /en/developer-reference#qfcommit "A P2P network message used to finalize the members of a long-living masternode quorum (LLMQ)" +[qgetsigs message]: /en/developer-reference#qgetsigs "A P2P network message used to ..." +[qjustify message]: /en/developer-reference#qjustify "A P2P network message used to ..." +[qpcommit message]: /en/developer-reference#qpcommit "A P2P network message used to ..." +[qsigrec message]: /en/developer-reference#qsigrec "A P2P network message used to ..." +[qsigsesann message]: /en/developer-reference#qsigsesann "A P2P network message used to ..." +[qsigsinv message]: /en/developer-reference#qsigsinv "A P2P network message used to ..." +[qwatch message]: /en/developer-reference#qwatch "A P2P network message used to ..." [reject message]: /en/developer-reference#reject "A P2P network message used to indicate a previously-received message was rejected for some reason" [sendcmpct message]: /en/developer-reference#sendcmpct "A P2P network message used to request new blocks be announced as compact blocks" +[senddsq message]: /en/developer-reference#senddsq "A P2P network message used to request that DSQ mixing messages be provided" [sendheaders message]: /en/developer-reference#sendheaders "A P2P network message used to request new blocks be announced through headers messages rather than inv messages" [spork message]: /en/developer-reference#spork "A P2P network message used to send the activation status of a spork" [ssc message]: /en/developer-reference#ssc "A P2P network message used to track the sync status of masternode objects ()" From 865990cd4bcdec51a8b005c90e91eea9c7f41573 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 28 Mar 2019 08:53:55 -0400 Subject: [PATCH 058/117] V0.14.0 Coin priority (RPC and Guide) and Debug (#114) * RPC - Update debug category list Related to dashpay/dash#2810 * RPC - Coin age priority updates - Remove estimate*priority - Remove priority param from prioritisetransactions - Adjust relay-fee param descriptions * Formatting - Minor fixes * Content - Sync guide and glossary with priority changes --- .../en/high-priority-transaction.yaml | 9 +++---- _data/glossary/en/minimum-relay-fee.yaml | 9 ++++--- .../devdoc/dash-core/rpcs/quick-reference.md | 12 +++++----- _includes/devdoc/dash-core/rpcs/rpcs/bls.md | 4 ++-- _includes/devdoc/dash-core/rpcs/rpcs/debug.md | 4 ++-- .../dash-core/rpcs/rpcs/estimatepriority.md | 8 ++----- .../rpcs/rpcs/estimatesmartpriority.md | 8 +++---- .../devdoc/dash-core/rpcs/rpcs/getinfo.md | 3 ++- .../dash-core/rpcs/rpcs/getnetworkinfo.md | 2 +- .../rpcs/rpcs/masternodebroadcast.md | 2 +- .../rpcs/rpcs/prioritisetransaction.md | 17 ++++--------- .../dash-core/rpcs/rpcs/sentinelping.md | 2 +- _includes/devdoc/guide_transactions.md | 14 ++++------- _includes/helpers/summaries.md | 6 ++--- _includes/layout/base/rpc-table.html | 24 +++++++++---------- 15 files changed, 52 insertions(+), 72 deletions(-) diff --git a/_data/glossary/en/high-priority-transaction.yaml b/_data/glossary/en/high-priority-transaction.yaml index 3077a887..02162843 100644 --- a/_data/glossary/en/high-priority-transaction.yaml +++ b/_data/glossary/en/high-priority-transaction.yaml @@ -9,8 +9,10 @@ required: summary_max_255_characters_no_formatting: > Transactions that don't have to pay a transaction fee because their inputs have been idle long enough to accumulated large - amounts of priority. Note: miners choose whether to accept free - transactions. + amounts of priority. + Note: As of Dash Core 0.12.3, all + transactions require a fee. Also, coin age priority logic was + removed in Dash Core 0.14.0. synonyms_shown_in_glossary_capitalize_first_letter: - High-priority transaction @@ -24,7 +26,6 @@ optional: not_to_be_confused_with_capitalize_first_letter: links_html_or_markdown_style_capitalize_first_letter: - - "[High-priority transactions](/en/developer-guide#term-high-priority-transactions) --- Developer Guide" - - "[Free transaction relay policy](https://en.bitcoin.it/wiki/Free_transaction_relay_policy) --- Bitcoin Wiki" + #- "[High-priority transactions](/en/developer-guide#term-high-priority-transactions) --- Developer Guide" --- diff --git a/_data/glossary/en/minimum-relay-fee.yaml b/_data/glossary/en/minimum-relay-fee.yaml index eb43a912..40557b1c 100644 --- a/_data/glossary/en/minimum-relay-fee.yaml +++ b/_data/glossary/en/minimum-relay-fee.yaml @@ -7,10 +7,9 @@ required: title_max_40_characters_no_formatting: Minimum Relay Fee summary_max_255_characters_no_formatting: > - The minimum transaction fee a transaction must pay (if it isn't - a high-priority transaction) for a full node to relay that - transaction to other nodes. There is no one minimum relay - fee---each node chooses its own policy. + The minimum transaction fee a transaction must pay for a full + node to relay that transaction to other nodes. There is no + one minimum relay fee---each node chooses its own policy. synonyms_shown_in_glossary_capitalize_first_letter: - Minimum relay fee @@ -27,6 +26,6 @@ optional: links_html_or_markdown_style_capitalize_first_letter: - "[Minimum relay fee](/en/developer-guide#term-minimum-fee) --- Developer Guide" - - "[Transaction fees](https://en.bitcoin.it/wiki/Transaction_fees) --- Bitcoin Wiki" + #- "[Transaction fees](https://en.bitcoin.it/wiki/Transaction_fees) --- Bitcoin Wiki" --- diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index b9d3281c..fc6a70a6 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -145,8 +145,8 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} -* [Debug][rpc debug]: {{summary_debug}} {{DASH_UPDATED0_12_3}} -* [GetInfo][rpc getinfo]: {{summary_getInfo}} {{DEPRECATED}} +* [Debug][rpc debug]: {{summary_debug}} {{DASH_UPDATED0_14_0}} +* [GetInfo][rpc getinfo]: {{summary_getInfo}} {{DASH_UPDATED0_14_0}} {{DEPRECATED}} * [GetMemoryInfo][rpc getmemoryinfo]: {{summary_getMemoryInfo}} {{DASH_NEW0_12_3}} {{NEW_14_0}} * [Help][rpc help]: {{summary_help}} * [Stop][rpc stop]: {{summary_stop}} @@ -203,7 +203,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetBlockTemplate][rpc getblocktemplate]: {{summary_getBlockTemplate}} {{DASH_UPDATED0_13_0}} * [GetMiningInfo][rpc getmininginfo]: {{summary_getMiningInfo}} {{UPDATED0_14_0}} * [GetNetworkHashPS][rpc getnetworkhashps]: {{summary_getNetworkHashPS}} -* [PrioritiseTransaction][rpc prioritisetransaction]: {{summary_prioritiseTransaction}} +* [PrioritiseTransaction][rpc prioritisetransaction]: {{summary_prioritiseTransaction}} {{UPDATED0_14_0}} * [SubmitBlock][rpc submitblock]: {{summary_submitBlock}} {% endautocrossref %} @@ -220,7 +220,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetAddedNodeInfo][rpc getaddednodeinfo]: {{summary_getAddedNodeInfo}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}} * [GetConnectionCount][rpc getconnectioncount]: {{summary_getConnectionCount}} * [GetNetTotals][rpc getnettotals]: {{summary_getNetTotals}} {{UPDATED0_12_0}} -* [GetNetworkInfo][rpc getnetworkinfo]: {{summary_getNetworkInfo}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} +* [GetNetworkInfo][rpc getnetworkinfo]: {{summary_getNetworkInfo}} {{DASH_UPDATED0_14_0}} * [GetPeerInfo][rpc getpeerinfo]: {{summary_getPeerInfo}} {{UPDATED0_13_0}} * [ListBanned][rpc listbanned]: {{summary_listBanned}} {{NEW0_12_0}} * [Ping][rpc ping]: {{summary_ping-rpc}} @@ -253,9 +253,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [CreateMultiSig][rpc createmultisig]: {{summary_createMultiSig}} * [EstimateFee][rpc estimatefee]: {{summary_estimateFee}} -* [EstimatePriority][rpc estimatepriority]: {{summary_estimatePriority}} {{DEPRECATED}} * [EstimateSmartFee][rpc estimatesmartfee]: {{summary_estimateSmartFee}} {{DEPRECATED}} -* [EstimateSmartPriority][rpc estimatesmartpriority]: {{summary_estimateSmartPriority}} {{DEPRECATED}} * [SetBIP69Enabled][rpc setbip69enabled]: {{summary_setBIP69Enabled}} {{DASH_NEW0_12_3}} * [SignMessageWithPrivKey][rpc signmessagewithprivkey]: {{summary_signMessageWithPrivKey}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [ValidateAddress][rpc validateaddress]: {{summary_validateAddress}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} @@ -336,6 +334,8 @@ default. {% autocrossref %} +* [EstimatePriority][rpc estimatepriority]: {{summary_estimatePriority}} +* [EstimateSmartPriority][rpc estimatesmartpriority]: {{summary_estimateSmartPriority}} * [GetHashesPerSec][rpc gethashespersec]: {{summary_getHashesPerSec}} * [GetWork][rpc getwork]: {{summary_getWork}} * [GetGenerate][rpc getgenerate]: {{summary_getGenerate}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/bls.md b/_includes/devdoc/dash-core/rpcs/rpcs/bls.md index 502ef083..8adaa609 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/bls.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/bls.md @@ -9,13 +9,13 @@ http://opensource.org/licenses/MIT. ##### BLS {% include helpers/subhead-links.md %} -{% assign summary_bLS="provides a set of commands to execute BLS-related actions." %} +{% assign summary_bls="provides a set of commands to execute BLS-related actions." %} {% autocrossref %} *Added in Dash Core 0.13.0* -The `bls` RPC {{summary_bLS}} +The `bls` RPC {{summary_bls}} {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/debug.md b/_includes/devdoc/dash-core/rpcs/rpcs/debug.md index 28725336..b24d075d 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/debug.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/debug.md @@ -3,6 +3,7 @@ This file is licensed under the MIT License (MIT) available on http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/debug.md" %} + ##### Debug {% include helpers/subhead-links.md %} @@ -19,8 +20,7 @@ The `debug` RPC {{summary_debug}} - n: "Debug category" t: "string" p: "Required
    (1 or more)" - d: "The debug category to activate. Use a `+` to specify multiple categories. Categories will be one of the following:
    • `0` - Disables all categories
    • `1` - Enables all categories
    • `addrman`
    • `alert`
    • `bench`
    • `coindb`
    • `db`
    • `lock`
    • `rand`
    • `rpc`
    • `selectcoins`
    • `mempool`
    • `mempoolrej`
    • `net`
    • `proxy`
    • `prune`
    • `http`
    • `libevent`
    • `tor`
    • `zmq`
    • `dash`
    • `privatesend`
    • `instantsend`
    • `masternode`
    • `spork`
    • `keepass`
    • `mnpayments`
    • `gobject`
    " - + d: "The debug category to activate. Use a `+` to specify multiple categories. Categories will be one of the following:
    • `0` - Disables all categories
    • `1` - Enables all categories
    • `addrman`
    • `alert`
    • `bench`
    • `cmpctblock`
    • `coindb`
    • `db`
    • `http`
    • `leveldb`
    • `libevent`
    • `lock`
    • `mempool`
    • `mempoolrej`
    • `net`
    • `proxy`
    • `prune`
    • `qt`
    • `rand`
    • `reindex`
    • `rpc`
    • `selectcoins`
    • `tor`
    • `zmq`
    • `dash` (all subcategories)

    The `dash` sub-categories can be enabled individually:
    • `chainlocks`
    • `gobject`
    • `instantsend`
    • `keepass`
    • `llmq`
    • `llmq-dkg`
    • `llmq-sigs`
    • `masternode`
    • `mnpayments`
    • `mnsync`
    • `privatesend`
    • `spork`


    Note: No error will be thrown even if the specified category doesn't match any of the above" {% enditemplate %} *Example from Dash Core 0.12.3* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/estimatepriority.md b/_includes/devdoc/dash-core/rpcs/rpcs/estimatepriority.md index 9f5522d8..d8042985 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/estimatepriority.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/estimatepriority.md @@ -11,16 +11,12 @@ http://opensource.org/licenses/MIT. {% autocrossref %} -{% assign summary_estimatePriority="estimates the priority that a transaction needs in order to be included within a certain number of blocks as a free high-priority transaction." %} +{% assign summary_estimatePriority="was removed in Dash Core 0.14.0." %} -*Added in Bitcoin Core 0.10.0.* +{{WARNING}} **_Removed in Dash Core 0.14.0._** The `estimatepriority` RPC {{summary_estimatePriority}} This should not to be confused with the `prioritisetransaction` RPC which will remain supported for adding fee deltas to transactions. -{{WARNING}} `estimatepriority` has been [removed from Bitcoin](https://github.com/bitcoin/bitcoin/commit/fe282acd7604b5265762b24e531bdf1ebb1f009b). While still present in Dash Core, it is deprecated as of 0.12.3 (should be considered unstable and will disappear in the future). Use the RPC listed in the "See Also" subsection below instead. - -Transaction priority is relative to a transaction's byte size. - *Parameter #1---how many blocks the transaction may wait before being included as a free high-priority transaction* {% itemplate ntpd1 %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartpriority.md b/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartpriority.md index 8ac27612..dc5516b5 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartpriority.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartpriority.md @@ -11,14 +11,12 @@ http://opensource.org/licenses/MIT. {% autocrossref %} -{% assign summary_estimateSmartPriority="estimates the priority that a transaction needs in order to be included within a certain number of blocks as a free high-priority transaction and returns the number of blocks for which the estimate is valid." %} +{% assign summary_estimateSmartPriority="was removed in Dash Core 0.14.0." %} + +{{WARNING}} **_Removed in Dash Core 0.14.0._** The `estimatesmartpriority` RPC {{summary_estimateSmartPriority}} This should not to be confused with the `prioritisetransaction` RPC which will remain supported for adding fee deltas to transactions. -{{WARNING}} `estimatesmartpriority` has been [removed from Bitcoin](https://github.com/bitcoin/bitcoin/commit/fe282acd7604b5265762b24e531bdf1ebb1f009b). While still present in Dash Core, it is deprecated as of 0.12.3 (should be considered unstable and will disappear in the future). Use the RPC listed in the "See Also" subsection below instead. - -Transaction priority is relative to a transaction's byte size. - *Parameter #1---how many blocks the transaction may wait before being included as a free high-priority transaction* {% itemplate ntpd1 %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getinfo.md index 3612c887..a7fafd5c 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getinfo.md @@ -3,6 +3,7 @@ This file is licensed under the MIT License (MIT) available on http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/getinfo.md" %} + ##### GetInfo {% include helpers/subhead-links.md %} @@ -104,7 +105,7 @@ Core. Use the RPCs listed in the See Also subsection below instead. - n: "→
    `relayfee`" t: "number (duffs)" p: "Required
    (exactly 1)" - d: "The minimum fee a low-priority transaction must pay in order for this node to accept it into its memory pool" + d: "The minimum fee per kilobyte a transaction must pay in order for this node to accept it into its memory pool" - n: "→
    `errors`" t: "string" diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md index 277b8813..9377d2ee 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md @@ -103,7 +103,7 @@ The `getnetworkinfo` RPC {{summary_getNetworkInfo}} - n: "→
    `relayfee`" t: "number (DASH)" p: "Required
    (exactly 1)" - d: "The minimum relay fee for non-free transactions in order for this node to accept it into its memory pool" + d: "The minimum relay fee per kilobyte for transactions in order for this node to accept it into its memory pool" - n: "→
    `incrementalfee`" t: "number (DASH)" diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternodebroadcast.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternodebroadcast.md index defafbb3..bde08d10 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternodebroadcast.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternodebroadcast.md @@ -11,7 +11,7 @@ http://opensource.org/licenses/MIT. {% autocrossref %} -**_Removed in Dash Core 0.14.0._** +{{WARNING}} **_Removed in Dash Core 0.14.0._** The `masternodebroadcast` RPC {{summary_masternodeBroadcast}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/prioritisetransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/prioritisetransaction.md index 13736a78..9d15b299 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/prioritisetransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/prioritisetransaction.md @@ -3,6 +3,7 @@ This file is licensed under the MIT License (MIT) available on http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/prioritisetransaction.md" %} + ##### PrioritiseTransaction {% include helpers/subhead-links.md %} @@ -23,17 +24,7 @@ The `prioritisetransaction` RPC {{summary_prioritiseTransaction}} {% enditemplate %} -*Parameter #2---the change to make to the virtual priority* - -{% itemplate ntpd1 %} -- n: "Priority" - t: "number (real)" - p: "Required
    (exactly 1)" - d: "If positive, the priority to add to the transaction in addition to its computed priority; if negative, the priority to subtract from the transaction's computed priory. Computed priority is the age of each input in days since it was added to the block chain as an output (coinage) times the value of the input in satoshis (value) divided by the size of the serialized transaction (size), which is `coinage * value / size`" - -{% enditemplate %} - -*Parameter #3---the change to make to the virtual fee* +*Parameter #2---the change to make to the virtual fee* {% itemplate ntpd1 %} - n: "Fee" @@ -53,12 +44,12 @@ The `prioritisetransaction` RPC {{summary_prioritiseTransaction}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet prioritisetransaction \ f86c74f27fdd9c7e618d69b3606eeae1710b3f02fabede6ae8c88dd7bb756942 \ - 1234 456789 + 456789 {% endhighlight %} Result: diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/sentinelping.md b/_includes/devdoc/dash-core/rpcs/rpcs/sentinelping.md index 52aad928..e0f7bc42 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/sentinelping.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/sentinelping.md @@ -11,7 +11,7 @@ http://opensource.org/licenses/MIT. {% autocrossref %} -**_Removed in Dash Core 0.14.0._** +{{WARNING}} **_Removed in Dash Core 0.14.0._** The `sentinelping` RPC {{summary_sentinelPing}} diff --git a/_includes/devdoc/guide_transactions.md b/_includes/devdoc/guide_transactions.md index 53d4ab4a..c7258f31 100644 --- a/_includes/devdoc/guide_transactions.md +++ b/_includes/devdoc/guide_transactions.md @@ -671,18 +671,12 @@ Dash miner, as explained in the [block chain section][section block chain], and so it is ultimately up to each miner to choose the minimum transaction fee they will accept. -There is also a concept of so-called "[high-priority transactions][/en/glossary/high-priority-transaction]{:#term-high-priority-transactions}{:.term}" -which spend duffs that have not moved for a long time. - -These "priority" transaction can be often exempt from the normal fee -requirements. As of Dash Core 0.12.2, 10 KB of each block are reserved for these -high-priority transactions. After the priority area, all transactions are -prioritized based on their fee per byte, with higher-paying transactions being -added in sequence until all of the available space is filled. +All transactions are prioritized based on their fee per byte, with higher-paying +transactions being added in sequence until all of the available space is filled. -As of Dash Core 0.12.2.x, a [minimum fee][/en/glossary/minimum-relay-fee]{:#term-minimum-fee}{:.term}(1,000 duffs following [DIP1][] activation) is required to -broadcast a non-priority transaction across the network. Any transaction paying +As of Dash Core 0.12.2.x, a [minimum fee][/en/glossary/minimum-relay-fee]{:#term-minimum-fee}{:.term} (1,000 duffs following [DIP1][] activation) is required to +broadcast a transaction across the network. Any transaction paying only the minimum fee should be prepared to wait a long time before there's enough spare space in a block to include it. diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index c97cb6d9..e7e0ed55 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -4,8 +4,8 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_addMultiSigAddress="adds a P2SH multisig address to the wallet." %} {% assign summary_addNode="attempts to add or remove a node from the addnode list, or to try a connection to a node once." %} {% assign summary_addWitnessAddress="adds a witness address for a script (with pubkey or redeem script known)." %} -{% assign summary_bLS="provides a set of commands to execute BLS-related actions." %} {% assign summary_backupWallet="safely copies `wallet.dat` to the specified file, which can be a directory or a path with filename." %} +{% assign summary_bls="provides a set of commands to execute BLS-related actions." %} {% assign summary_bumpFee="replaces an unconfirmed wallet transaction that signaled RBF with a new transaction that pays a higher fee." %} {% assign summary_clearBanned="clears list of banned nodes." %} {% assign summary_createMultiSig="creates a P2SH multi-signature address." %} @@ -19,9 +19,9 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_dumpWallet="creates or overwrites a file with all wallet keys in a human-readable format." %} {% assign summary_encryptWallet="encrypts the wallet with a passphrase. This is only to enable encryption for the first time. After encryption is enabled, you will need to enter the passphrase to use private keys." %} {% assign summary_estimateFee="estimates the transaction fee per kilobyte that needs to be paid for a transaction to begin confirmation within a certain number of blocks." %} -{% assign summary_estimatePriority="estimates the priority that a transaction needs in order to be included within a certain number of blocks as a free high-priority transaction." %} +{% assign summary_estimatePriority="was removed in Dash Core 0.14.0." %} {% assign summary_estimateSmartFee="estimates the transaction fee per kilobyte that needs to be paid for a transaction to begin confirmation within a certain number of blocks and returns the number of blocks for which the estimate is valid." %} -{% assign summary_estimateSmartPriority="estimates the priority that a transaction needs in order to be included within a certain number of blocks as a free high-priority transaction and returns the number of blocks for which the estimate is valid." %} +{% assign summary_estimateSmartPriority="was removed in Dash Core 0.14.0." %} {% assign summary_fundRawTransaction="adds inputs to a transaction until it has enough in value to meet its out value." %} {% assign summary_gObject="provides a set of commands for managing governance objects and displaying information about them." %} {% assign summary_generate="mines blocks immediately (before the RPC call returns)." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 8bcf9193..b4cc5946 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -209,13 +209,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Control Debug Y - Updated in 0.12.3.0 + Updated in 0.14.0 Control GetInfo Y - + Updated in 0.14.0 Control @@ -233,7 +233,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash GetGovernanceInfo Y - Updated in 0.14.0.0 + Updated in 0.14.0 Dash @@ -257,25 +257,25 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash Masternode Y - Updated in 0.14.0.0 + Updated in 0.14.0 Dash MasternodeBroadcast Y - Removed in 0.14.0.0 + Removed in 0.14.0 Dash MasternodeList Y - Updated in 0.14.0.0 + Updated in 0.14.0 Dash MnSync Y - Updated in 0.14.0.0 + Updated in 0.14.0 Dash @@ -287,7 +287,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash SentinelPing Y - Removed in 0.14.0.0 + Removed in 0.14.0 Dash @@ -359,7 +359,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Mining PrioritiseTransaction Y - + Updated in 0.14.0 Mining @@ -407,7 +407,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Network GetNetworkInfo Y - Updated in 0.12.3.0 + Updated in 0.14.0 Network @@ -509,7 +509,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Util EstimatePriority Y - Deprecated in 0.12.3.0 + Removed in 0.14.0 Util @@ -521,7 +521,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Util EstimateSmartPriority Y - Deprecated in 0.12.3.0 + Removed in 0.14.0 Util From b0c8a4695af76500e4426bc301cc5b25bdcef646 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 8 Apr 2019 12:03:33 -0400 Subject: [PATCH 059/117] V0.14.0 rpc chainlock param (#115) * RPC - Add chainlock param to getrawtransaction and gettransaction * RPC - Add chainlock param to listtransactions - Also removes unused bip125-replaceable * RPC - Add chainlock param to getblock * RPC - Update getblock - add cbTx * RPC - Update listsinceblock - Example updated with chainlock param - Removed bip125-replaceable param --- .../devdoc/dash-core/rpcs/quick-reference.md | 10 +- .../devdoc/dash-core/rpcs/rpcs/getblock.md | 206 +++++++++++------- .../dash-core/rpcs/rpcs/getrawtransaction.md | 8 +- .../dash-core/rpcs/rpcs/gettransaction.md | 56 ++--- .../dash-core/rpcs/rpcs/listsinceblock.md | 57 +++-- .../dash-core/rpcs/rpcs/listtransactions.md | 51 ++--- _includes/helpers/vars.md | 15 +- _includes/layout/base/rpc-table.html | 10 +- 8 files changed, 227 insertions(+), 186 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index fc6a70a6..b02d730f 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -113,7 +113,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} * [GetBestBlockHash][rpc getbestblockhash]: {{summary_getBestBlockHash}} -* [GetBlock][rpc getblock]: {{summary_getBlock}} {{DASH_UPDATED0_13_0}} +* [GetBlock][rpc getblock]: {{summary_getBlock}} {{DASH_UPDATED0_14_0}} * [GetBlockChainInfo][rpc getblockchaininfo]: {{summary_getBlockChainInfo}} {{DASH_UPDATED0_13_0}} {{UPDATED0_12_1}} * [GetBlockCount][rpc getblockcount]: {{summary_getBlockCount}} * [GetBlockHash][rpc getblockhash]: {{summary_getBlockHash}} @@ -239,7 +239,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [DecodeRawTransaction][rpc decoderawtransaction]: {{summary_decodeRawTransaction}} {{UPDATED0_13_0}} * [DecodeScript][rpc decodescript]: {{summary_decodeScript}} * [FundRawTransaction][rpc fundrawtransaction]: {{summary_fundRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}} -* [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{DASH_UPDATED0_13_0}} {{UPDATED0_14_0}} +* [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{DASH_UPDATED0_14_0}} * [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} * [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}} @@ -286,7 +286,7 @@ default. * [GetRawChangeAddress][rpc getrawchangeaddress]: {{summary_getRawChangeAddress}} * [GetReceivedByAccount][rpc getreceivedbyaccount]: {{summary_getReceivedByAccount}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}} * [GetReceivedByAddress][rpc getreceivedbyaddress]: {{summary_getReceivedByAddress}} {{DASH_UPDATED0_13_0}} -* [GetTransaction][rpc gettransaction]: {{summary_getTransaction}} {{UPDATED0_12_0}} +* [GetTransaction][rpc gettransaction]: {{summary_getTransaction}} {{DASH_UPDATED0_14_0}} * [GetUnconfirmedBalance][rpc getunconfirmedbalance]: {{summary_getUnconfirmedBalance}} * [GetWalletInfo][rpc getwalletinfo]: {{summary_getWalletInfo}} {{DASH_UPDATED0_12_3}} * [ImportAddress][rpc importaddress]: {{summary_importAddress}} @@ -305,8 +305,8 @@ default. * [ListLockUnspent][rpc listlockunspent]: {{summary_listLockUnspent}} * [ListReceivedByAccount][rpc listreceivedbyaccount]: {{summary_listReceivedByAccount}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}} * [ListReceivedByAddress][rpc listreceivedbyaddress]: {{summary_listReceivedByAddress}} {{DASH_UPDATED0_13_0}} -* [ListSinceBlock][rpc listsinceblock]: {{summary_listSinceBlock}} -* [ListTransactions][rpc listtransactions]: {{summary_listTransactions}} {{UPDATED0_12_1}} +* [ListSinceBlock][rpc listsinceblock]: {{summary_listSinceBlock}} {{DASH_UPDATED0_14_0}} +* [ListTransactions][rpc listtransactions]: {{summary_listTransactions}} {{DASH_UPDATED0_14_0}} * [ListUnspent][rpc listunspent]: {{summary_listUnspent}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} * [LockUnspent][rpc lockunspent]: {{summary_lockUnspent}} * [Move][rpc move]: {{summary_move}} {{DEPRECATED}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md index 7a59b0e6..4ed8b953 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md @@ -3,6 +3,7 @@ This file is licensed under the MIT License (MIT) available on http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/getblock.md" %} + ##### GetBlock {% include helpers/subhead-links.md %} @@ -96,6 +97,26 @@ The `getblock` RPC {{summary_getBlock}} p: "Required
    (1 or more)" d: "The TXID of a transaction in this block, encoded as hex in RPC byte order" +- n: "→
    `cbTx`" + t: "object" + p: "Required
    (exactly 1)" + d: "Coinbase special transaction details" + +- n: "→ →
    `version`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "The version of the Coinbase special transaction (CbTx)" + +- n: "→ →
    `height`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "The height of this block on its block chain" + +- n: "→ →
    `merkleRootMNList`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The merkle root for the masternode list" + - n: "→
    `time`" t: "number (int)" p: "Required
    (exactly 1)" @@ -191,6 +212,26 @@ The `getblock` RPC {{summary_getBlock}} {{INCLUDE_DECODE_RAW_TRANSACTION}} +- n: "→
    `cbTx`" + t: "object" + p: "Required
    (exactly 1)" + d: "Coinbase special transaction details" + +- n: "→ →
    `version`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "The version of the Coinbase special transaction (CbTx)" + +- n: "→ →
    `height`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "The height of this block on its block chain" + +- n: "→ →
    `merkleRootMNList`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The merkle root for the masternode list" + - n: "→
    `time`" t: "number (int)" p: "Required
    (exactly 1)" @@ -231,61 +272,72 @@ The `getblock` RPC {{summary_getBlock}} p: "Optional
    (0 or 1)" d: "The hash of the next block on the best block chain, if known, encoded as hex in RPC byte order" +- n: "
    `chainlock`" + t: "bool" + p: "Required
    (exactly 1)" + d: "*Added in Dash Core 0.14.0*

    If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org)" + {% enditemplate %} -*Example from Dash Core 0.13.0* +*Example from Dash Core 0.14.0* Get a block in raw hex: {% highlight bash %} dash-cli -testnet getblock \ - 00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994 \ + 0000000005fdd3a647d4048f183e639310885fab7983b8e7b5079729e065d91f \ 0 {% endhighlight %} Result (wrapped): {% highlight text %} -01000020d2fb795188566bd52deaa8e62de6f59c2833e842f9f6a48cea026689\ -04000000c7274c45e043e5953f2d62a1938818b513d8fd4c9f99c2c1541d1449\ -7f368602c2d8175c417b4d1d0007a96501010000000100000000000000000000\ -00000000000000000000000000000000000000000000ffffffff1202a91a0e2f\ -5032506f6f6c2d74444153482fffffffff0404e65a96010000001976a9144f79\ -c383bc5d3e9d4d81b98f87337cedfa78953688ac40c3609a010000001976a914\ -f627e64c0453f74d879f6e6a37709189af0298da88ac3cdd0504000000001976\ -a914badadfdebaa6d015a0299f23fbc1fcbdd72ba96f88ac0000000000000000\ -2a6a285fb560df18bc5145faa0860841df9daf30dc544c7b0cdb52ff28c06fa3\ -b33924000000000100000000000000 +00000020354559625d75e59743370290291a5c7df72d1af739c3e2ecf7483314\ +000000002ba12397f0ae5884e623004a5e790d7c608fa013630656e61057c0e4\ +fc67a656031f9d5c3e6f221c890a5ec001030005000100000000000000000000\ +00000000000000000000000000000000000000000000ffffffff4c03bc0d0104\ +031f9d5c08fabe6d6d736170747365743a7265737574736574000c870f000008\ +308d3b4900000019730100000000000000580000004f0000000d2f6e6f646553\ +74726174756d2f000000000240230e43000000001976a914cb594917ad4e5849\ +688ec63f29a0f7f3badb5da688ac40230e43000000001976a914477a52436b94\ +4f3e9223ac8404a7717d4176fa5388ac00000000260100bc0d01001dd9fb7d61\ +1bfd2c05c7a508085d2b35053a45fe67c40c0e43be7cd87a7c9b83 {% endhighlight %} Get the same block in JSON: {% highlight bash %} dash-cli -testnet getblock \ - 00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994 + 0000000005fdd3a647d4048f183e639310885fab7983b8e7b5079729e065d91f {% endhighlight %} Result: {% highlight json %} { - "hash": "00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994", + "hash": "0000000005fdd3a647d4048f183e639310885fab7983b8e7b5079729e065d91f", "confirmations": 1, - "size": 303, - "height": 6825, - "version": 536870913, - "versionHex": "20000001", - "merkleroot": "0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7", + "size": 315, + "height": 69052, + "version": 536870912, + "versionHex": "20000000", + "merkleroot": "56a667fce4c05710e656066313a08f607c0d795e4a0023e68458aef09723a12b", "tx": [ - "0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7" + "56a667fce4c05710e656066313a08f607c0d795e4a0023e68458aef09723a12b" ], - "time": 1545066690, - "mediantime": 1545065992, - "nonce": 1705576192, - "bits": "1d4d7b41", - "difficulty": 0.01290611629979371, - "chainwork": "00000000000000000000000000000000000000000000000000000647104aa574", - "previousblockhash": "00000004896602ea8ca4f6f942e833289cf5e62de6a8ea2dd56b56885179fbd2" + "cbTx": { + "version": 1, + "height": 69052, + "merkleRootMNList": "839b7c7ad87cbe430e0cc467fe453a05352b5d0808a5c7052cfd1b617dfbd91d" + }, + "time": 1553800963, + "mediantime": 1553800156, + "nonce": 3227388553, + "bits": "1c226f3e", + "difficulty": 7.434282417439254, + "chainwork": "000000000000000000000000000000000000000000000000003dfe3d34685d0a", + "previousblockhash": "00000000143348f7ece2c339f71a2df77d5c1a299002374397e5755d62594535", + "chainlock": false } {% endhighlight %} @@ -293,97 +345,87 @@ Get the same block in JSON with transaction details: {% highlight bash %} dash-cli -testnet getblock \ - 00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994 2 + 0000000005fdd3a647d4048f183e639310885fab7983b8e7b5079729e065d91f 2 {% endhighlight %} Result: {% highlight json %} { - "hash": "00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994", + "hash": "0000000005fdd3a647d4048f183e639310885fab7983b8e7b5079729e065d91f", "confirmations": 1, - "size": 303, - "height": 6825, - "version": 536870913, - "versionHex": "20000001", - "merkleroot": "0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7", + "size": 315, + "height": 69052, + "version": 536870912, + "versionHex": "20000000", + "merkleroot": "56a667fce4c05710e656066313a08f607c0d795e4a0023e68458aef09723a12b", "tx": [ { - "txid": "0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7", - "size": 222, - "version": 1, - "type": 0, + "txid": "56a667fce4c05710e656066313a08f607c0d795e4a0023e68458aef09723a12b", + "size": 234, + "version": 3, + "type": 5, "locktime": 0, "vin": [ { - "coinbase": "02a91a0e2f5032506f6f6c2d74444153482f", - "sequence": 4294967295 + "coinbase": "03bc0d0104031f9d5c08fabe6d6d736170747365743a7265737574736574000c870f000008308d3b4900000019730100000000000000580000004f0000000d2f6e6f64655374726174756d2f", + "sequence": 0 } ], "vout": [ { - "value": 68.17506820, - "valueSat": 6817506820, + "value": 11.25000000, + "valueSat": 1125000000, "n": 0, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 4f79c383bc5d3e9d4d81b98f87337cedfa789536 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a9144f79c383bc5d3e9d4d81b98f87337cedfa78953688ac", + "asm": "OP_DUP OP_HASH160 cb594917ad4e5849688ec63f29a0f7f3badb5da6 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914cb594917ad4e5849688ec63f29a0f7f3badb5da688ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "yTZg6eePKxbJZyoaC93bVrTUq5vjhFrbst" + "yereyozxENB9jbhqpbg1coE5c39ExqLSaG" ] } }, { - "value": 68.85000000, - "valueSat": 6885000000, + "value": 11.25000000, + "valueSat": 1125000000, "n": 1, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 f627e64c0453f74d879f6e6a37709189af0298da OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914f627e64c0453f74d879f6e6a37709189af0298da88ac", + "asm": "OP_DUP OP_HASH160 477a52436b944f3e9223ac8404a7717d4176fa53 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914477a52436b944f3e9223ac8404a7717d4176fa5388ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "yikzsfaaQ2eZ1RpVUpf1EvedzgGdJD17dC" + "ySqPMrmGiB5zu7TYqgdaviEsqixPJc9hNQ" ] } - }, - { - "value": 0.67493180, - "valueSat": 67493180, - "n": 2, - "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 badadfdebaa6d015a0299f23fbc1fcbdd72ba96f OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914badadfdebaa6d015a0299f23fbc1fcbdd72ba96f88ac", - "reqSigs": 1, - "type": "pubkeyhash", - "addresses": [ - "ydMSjYqwv4xTossPJ1xndTxwS1Hho9DmuM" - ] - } - }, - { - "value": 0.00000000, - "valueSat": 0, - "n": 3, - "scriptPubKey": { - "asm": "OP_RETURN 5fb560df18bc5145faa0860841df9daf30dc544c7b0cdb52ff28c06fa3b339240000000001000000", - "hex": "6a285fb560df18bc5145faa0860841df9daf30dc544c7b0cdb52ff28c06fa3b339240000000001000000", - "type": "nulldata" - } } ], - "instantlock": false + "extraPayloadSize": 38, + "extraPayload": "0100bc0d01001dd9fb7d611bfd2c05c7a508085d2b35053a45fe67c40c0e43be7cd87a7c9b83", + "cbTx": { + "version": 1, + "height": 69052, + "merkleRootMNList": "839b7c7ad87cbe430e0cc467fe453a05352b5d0808a5c7052cfd1b617dfbd91d" + }, + "instantlock": false, + "chainlock": false } ], - "time": 1545066690, - "mediantime": 1545065992, - "nonce": 1705576192, - "bits": "1d4d7b41", - "difficulty": 0.01290611629979371, - "chainwork": "00000000000000000000000000000000000000000000000000000647104aa574", - "previousblockhash": "00000004896602ea8ca4f6f942e833289cf5e62de6a8ea2dd56b56885179fbd2" + "cbTx": { + "version": 1, + "height": 69052, + "merkleRootMNList": "839b7c7ad87cbe430e0cc467fe453a05352b5d0808a5c7052cfd1b617dfbd91d" + }, + "time": 1553800963, + "mediantime": 1553800156, + "nonce": 3227388553, + "bits": "1c226f3e", + "difficulty": 7.434282417439254, + "chainwork": "000000000000000000000000000000000000000000000000003dfe3d34685d0a", + "previousblockhash": "00000000143348f7ece2c339f71a2df77d5c1a299002374397e5755d62594535", + "chainlock": false } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md index d7a89f26..be25ede5 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md @@ -100,9 +100,14 @@ deprecated. p: "Required
    (exactly 1)" d: "If set to `true`, this transaction is locked" +- n: "
    `chainlock`" + t: "bool" + p: "Required
    (exactly 1)" + d: "*Added in Dash Core 0.14.0*

    If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org)" + {% enditemplate %} -*Examples from Dash Core 0.13.0* +*Examples from Dash Core 0.14.0* A classical transaction in serialized transaction format: @@ -188,6 +193,7 @@ Result: "time": 1546278750, "blocktime": 1546278750, "instantlock": true + "chainlock": false } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gettransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/gettransaction.md index 33f3d723..46382b8e 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gettransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gettransaction.md @@ -52,11 +52,6 @@ The `gettransaction` RPC {{summary_getTransaction}} p: "Optional
    (0 or 1)" d: "If an outgoing transaction, this is the fee paid by the transaction reported as negative dash" -- n: "→
    `instantlock`" - t: "bool" - p: "Required
    (exactly 1)" - d: "Current transaction lock state" - {{INCLUDE_F_LIST_TRANSACTIONS_F_FULL}} - n: "→
    `DS`" @@ -94,6 +89,11 @@ The `gettransaction` RPC {{summary_getTransaction}} p: "Required
    (exactly 1)" d: "A negative dash amount if sending payment; a positive dash amount if receiving payment (including coinbases)" +- n: "→ →
    `label`" + t: "string" + p: "Optional
    (0 or 1)" + d: "An optional comment for the address/transaction" + - n: "→ →
    `vout`" t: "number (int)" p: "Required
    (exactly 1)" @@ -116,52 +116,44 @@ The `gettransaction` RPC {{summary_getTransaction}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet gettransaction \ - 345d5f708b047b145f6a40a4e1e36c76648611cd009bd073e607c8ddf47bb797 + c099c882745ad150e9b2a55ef5818683c7ef597e1e5fc20856c67eabc3778ccc {% endhighlight %} Result: - {% highlight json %} { - "amount": 0.00000000, - "fee": -0.00010000, - "confirmations": 20, + "amount": -50.00000000, + "fee": -0.00030000, + "confirmations": 3064, "instantlock": false, + "chainlock": false, + "blockhash": "00000a01007be2912c3123085534b58d341cb5e5980b967e8dcc021089487a1e", + "blockindex": 1, + "blocktime": 1553290594, "trusted": true, - "txid": "345d5f708b047b145f6a40a4e1e36c76648611cd009bd073e607c8ddf47bb797", + "txid": "c099c882745ad150e9b2a55ef5818683c7ef597e1e5fc20856c67eabc3778ccc", "walletconflicts": [ ], - "time": 1511967821, - "timereceived": 1511967821, - "bip125-replaceable": "no", - "DS": "1", + "time": 1553290584, + "timereceived": 1553290584, "details": [ { "account": "", - "address": "ybTSbNqB7nG4ZVbHyati6GbfFz5w7tDnHf", - "category": "privatesend", - "amount": -10.00000000, - "label": "PS", - "vout": 0, - "fee": -0.00010000, + "address": "ycCsAUKsjdmoP4qAXiS1cjYA4ixM48zJWe", + "category": "send", + "amount": -50.00000000, + "label": "Electrum", + "vout": 1, + "fee": -0.00030000, "abandoned": false - }, - { - "account": "PS", - "address": "ybTSbNqB7nG4ZVbHyati6GbfFz5w7tDnHf", - "category": "receive", - "amount": 10.00000000, - "label": "PS", - "vout": 0 } ], - "hex": "010000000156d338508686982770a101c9fd41ce8b2c6ff4eb17dac6b1e7a32dfc5d2ae6e9030000006b4830450221008e8bf68440818d2b2fe8bcc2447d3b455f4e27864dae3f2bc62d2c8d1fdadaad0220390a0810f7f75436a7ebb0bc5c5a5e377b2330e1395f42b5f96d249ac9705ffc012103f4398f7e93dcc64a24191dbae57ef1ccbfcbd867f39a714020e66cf5b10050c4feffffff0100ca9a3b000000001976a914a60d00463c9eed290555e8f719333fc6b21c636088ac89850000" + "hex": "0200000003aac865dba0e98fe32533df6bc3eaac160d04bb02966584fb61fc8d7788e09537010000006a47304402202d537257f23ab42b3e14f2ab533f39bb4586aa1b29a1f833f718a59493c8a601022019c6c156c20e66ef256519592b3c977b64d417c94aea4dca20cf18522a138993012103c67d86944315838aea7ec80d390b5d09b91b62483370d4979da5ccf7a7df77a9feffffff47833a270d2e2bac47bc5dc0df576c3a68b01bedbc89692060ac4113a6f9cb67010000006a4730440220442c19a913b10edc533bf63310f5294d6d91eec0eb9c510a3c6b0f33333f27320220501d5093ecdf603b8af9734e21d5de4710c8500309bfa4acdda243a294442b2c012103c67d86944315838aea7ec80d390b5d09b91b62483370d4979da5ccf7a7df77a9feffffffdcfd2d0fb30d79ffeadab8832e65be2310b67043ff3d74deac9a9cb825acda67000000006b483045022100cae8c025d3bec82903f356a5ec38d78a141447b6562e3aceac901f5fcc6f8567022076407835937514d6690c81c0c3b97f92d2b0ae9749249affaf539ead825692f4012102d6be44ab930ff67f084fbaf47a38b539b8d5da65c010952a972c9e524b6009dffeffffff0204fe2b00000000001976a914e3b0093477c2f629430d0a7b5813fe8b0153b0fd88ac00f2052a010000001976a914ae4365dedb1836ba215b9149602e0787a23376d288ac42010100" } - {% endhighlight %} *See also* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md b/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md index 4fb5018e..66e9a51c 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md @@ -71,7 +71,7 @@ The `listsinceblock` RPC {{summary_listSinceBlock}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* Get all transactions since a particular block (including watch-only transactions) and the header hash of the sixth most recent block. @@ -89,48 +89,43 @@ Result (edited to show only two payments): "transactions": [ { "account": "", - "address": "yfCjqf9F7oNGD1sRqta2rNpCXSQ9dknDf5", + "address": "yLXe1NwXmhZbtM6drTXbWFvtEqpsJZkKd2", "category": "send", - "amount": -0.01000010, - "vout": 7, - "fee": 0.05000050, - "confirmations": 95, - "instantlock": false, - "blockhash": "0000000002aa705754c6ab4e15cf2183a1d174e61c080f64eb469c458669144b", - "blockindex": 1, - "blocktime": 1511972930, - "txid": "52e34eec71a4cf95c043b76567f55cec1bc293c444810d454a2d05f2a819b5ed", + "amount": -1.00000000, + "label": "Receiving", + "vout": 0, + "fee": -0.00000226, + "confirmations": 0, + "instantlock": true, + "chainlock": false, + "trusted": true, + "txid": "cc2e6c49faae395d79cfc91d188881e479f544c220e4dfee016889cd53b32645", "walletconflicts": [ ], - "time": 1511972930, - "timereceived": 1511974218, - "bip125-replaceable": "no", + "time": 1554734925, + "timereceived": 1554734925, "abandoned": false }, { "account": "", - "address": "yi2U4Cx2QH33LdNwk2c2oLABWzEZWhYU9k", - "category": "send", - "amount": -0.01000010, - "vout": 8, - "fee": 0.05000050, - "confirmations": 95, - "instantlock": false, - "blockhash": "0000000002aa705754c6ab4e15cf2183a1d174e61c080f64eb469c458669144b", - "blockindex": 1, - "blocktime": 1511972930, - "txid": "52e34eec71a4cf95c043b76567f55cec1bc293c444810d454a2d05f2a819b5ed", + "address": "yLXe1NwXmhZbtM6drTXbWFvtEqpsJZkKd2", + "category": "receive", + "amount": 1.00000000, + "label": "Receiving", + "vout": 0, + "confirmations": 0, + "instantlock": true, + "chainlock": false, + "trusted": true, + "txid": "cc2e6c49faae395d79cfc91d188881e479f544c220e4dfee016889cd53b32645", "walletconflicts": [ ], - "time": 1511972930, - "timereceived": 1511974218, - "bip125-replaceable": "no", - "abandoned": false + "time": 1554734925, + "timereceived": 1554734925 } ], - "lastblock": "000000000dba5583e3fc5c2df06b478e922702f53a1476aac8eb4322f648ccea" + "lastblock": "0000000006be841cd8534b02733d833ad9dd7634ab0897a7e5cd92c574a529a3" } - {% endhighlight %} *See also* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listtransactions.md b/_includes/devdoc/dash-core/rpcs/rpcs/listtransactions.md index a2a8aacc..962a9e21 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listtransactions.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listtransactions.md @@ -109,16 +109,21 @@ The `listtransactions` RPC {{summary_listTransactions}} p: "Required
    (exactly 1)" d: "Current transaction lock state" -- n: "→ →
    `trusted`" +- n: "
    `chainlock`" t: "bool" - p: "Optional
    (0 or 1)" - d: "Indicates whether we consider the outputs of this unconfirmed transaction safe to spend. Only returned for unconfirmed transactions" + p: "Required
    (exactly 1)" + d: "*Added in Dash Core 0.14.0*

    If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org)" - n: "→ →
    `generated`" t: "bool" p: "Optional
    (0 or 1)" d: "Set to `true` if the transaction is a coinbase. Not returned for regular transactions or *move* category payments" +- n: "→ →
    `trusted`" + t: "bool" + p: "Optional
    (0 or 1)" + d: "Indicates whether we consider the outputs of this unconfirmed transaction safe to spend. Only returned for unconfirmed transactions" + - n: "→ →
    `blockhash`" t: "string (hex)" p: "Optional
    (0 or 1)" @@ -174,11 +179,6 @@ The `listtransactions` RPC {{summary_listTransactions}} p: "Optional
    (0 or 1)" d: "This is the account the dash were moved from or moved to, as indicated by a negative or positive *amount* field in this payment. Only returned by *move* category payments" -- n: "→ →
    `bip125-replaceable`" - t: "string" - p: "Required
    (exactly 1)" - d: "*Added in Bitcoin Core 0.12.0*

    Indicates if a transaction is replaceable under BIP125:
    • `yes` replaceable
    • `no` not replaceable
    • `unknown` for unconfirmed transactions not in the mempool" - - n: "→ →
    `abandoned`" t: "bool" p: "Optional
    (0 or 1)" @@ -186,7 +186,7 @@ The `listtransactions` RPC {{summary_listTransactions}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* List the most recent transaction from the main account including watch-only addresses. @@ -199,24 +199,25 @@ Result: {% highlight json %} [ { - "account": "MN Setup", - "address": "yY6AmGopsZS31wy1JLHR9P6AC6owFaXwuh", - "category": "immature", - "amount": 11.25000000, - "label": "MN Setup", - "vout": 3, - "confirmations": 20, - "instantlock": false, - "generated": true, - "blockhash": "000000000207e556193e19287d2e554a5f99e1ff7cb19367e8de8ad6bacc494e", - "blockindex": 0, - "blocktime": 1511986957, - "txid": "cd9d44cd87ffb784f9dac384bad7db55324d3f47724eb60e16b3de6a26175936", + "account": "", + "address": "ySGKtDZ3qBHRqk7mHsdofShQkqMcAS7SYJ", + "category": "send", + "amount": -0.50000000, + "label": "", + "vout": 1, + "fee": -0.00040000, + "confirmations": 3, + "instantlock": true, + "chainlock": false, + "blockhash": "000000000327ff7785d799dde99949457ac231ef1d956a2287c2f7bb84d9738c", + "blockindex": 2, + "blocktime": 1553798971, + "txid": "048aae3ad194f5398b67fc7029b26bf50d66ecc7d185fd6d26f8c6ec5a4ed1f9", "walletconflicts": [ ], - "time": 1511986957, - "timereceived": 1511986982, - "bip125-replaceable": "no" + "time": 1553798920, + "timereceived": 1553798920, + "abandoned": false } ] {% endhighlight %} diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index 21d50154..b600331f 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -48,6 +48,16 @@ http://opensource.org/licenses/MIT. p: "Required
    (exactly 1)" d: "The number of confirmations the transaction has received. Will be `0` for unconfirmed and `-1` for conflicted" +- n: "→
    `instantlock`" + t: "bool" + p: "Required
    (exactly 1)" + d: "Current transaction lock state" + +- n: "
    `chainlock`" + t: "bool" + p: "Required
    (exactly 1)" + d: "*Added in Dash Core 0.14.0*

    If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org)" + - n: "{{DEPTH}}
    `generated`" t: "bool" p: "Optional
    (0 or 1)" @@ -93,11 +103,6 @@ http://opensource.org/licenses/MIT. p: "Required
    (exactly 1)" d: "A Unix epoch time when the transaction was detected by the local node, or the time of the block on the local best block chain that included the transaction" -- n: "{{DEPTH}}
    `bip125-replaceable`" - t: "string" - p: "Required
    (exactly 1)" - d: "*Added in Bitcoin Core 0.12.0*

    Indicates if a transaction is replaceable under BIP 125:
    • `yes` is replaceable
    • `no` not replaceable
    • `unknown` for unconfirmed transactions not in the mempool" - - n: "{{DEPTH}}
    `comment`" t: "string" p: "Optional
    (0 or 1)" diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index b4cc5946..383c7f34 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -71,7 +71,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain GetBlock Y - Updated in 0.13.0.0 + Updated in 0.14.0.0 Blockchain @@ -467,7 +467,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Rawtransactions GetRawTransaction Y - Updated in 0.13.0.0 + Updated in 0.14.0.0 Rawtransactions @@ -653,7 +653,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet GetTransaction Y - + Updated in 0.14.0 Wallet @@ -767,13 +767,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ListSinceBlock Y - + Updated in 0.14.0 Wallet ListTransactions Y - + Updated in 0.14.0 Wallet From e9b5ee211c8167606d1b09b57ee2e5c8f55981be Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 10 Apr 2019 13:41:54 -0400 Subject: [PATCH 060/117] V0.14.0 RPC Update, 2 (#116) * RPC - Update masternode current and winner - Remove protocol, lastseen, activeseconds * RPC - Remove gobject getvotes - Related to dashpay/dash#2815 * RPC - Protx diff update - Add merkleRootQuorums field Related to dashpay/dash#2833 * RPC - listunspent update Related to dashpay/dash#2727 * RPC - protx update_registrar update - Rename votingKeyAddr to votingAddress Related to dashpay/dash#2747 * RPC - Add bls fromsecret Related to dashpay/dash#2841 * RPC - Start adding quorum RPCs * RPC - Add quorum info details Minor formatting updates * RPC - Add placeholders for remaining quorum sub-commands * RPC - Add quorum sign/hasrecsig/isconflicting details * RPC - Add note to regtest only quorum RPCs * RPC - Add more detail to quorum dkgstatus * Typo fix * Minor format and example updates * RPC - Add more quorum dkgstatus details - Field descriptions * RPC - Add quorum dkgstatus detail level 1 and 2 info * RPC - protx update - Remove support for "0" Related to dashpay/dash#2622 --- _autocrossref.yaml | 2 + _config.yml | 1 + .../devdoc/dash-core/rpcs/quick-reference.md | 9 +- _includes/devdoc/dash-core/rpcs/rpcs/bls.md | 51 + .../devdoc/dash-core/rpcs/rpcs/gobject.md | 47 +- .../devdoc/dash-core/rpcs/rpcs/listunspent.md | 26 +- .../devdoc/dash-core/rpcs/rpcs/masternode.md | 64 +- _includes/devdoc/dash-core/rpcs/rpcs/protx.md | 204 +++- .../devdoc/dash-core/rpcs/rpcs/quorum.md | 966 ++++++++++++++++++ _includes/helpers/summaries.md | 1 + _includes/layout/base/rpc-table.html | 14 +- _includes/references.md | 1 + en/developer-reference.md | 2 + 13 files changed, 1227 insertions(+), 161 deletions(-) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/quorum.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index e8d501d3..22751ece 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -516,6 +516,8 @@ DIP1: '`privatesend` RPC': rpc privatesend '`pruneblockchain`': rpc pruneblockchain '`pruneblockchain` RPC': rpc pruneblockchain +'`quorum`': rpc quorum +'`quorum` RPC': rpc quorum '`removeprunedfunds`': rpc removeprunedfunds '`removeprunedfunds` RPC': rpc removeprunedfunds '`sendfrom`': rpc sendfrom diff --git a/_config.yml b/_config.yml index c2692a4f..58cf2ff6 100644 --- a/_config.yml +++ b/_config.yml @@ -294,6 +294,7 @@ devsearches: - 'PrioritiseTransaction': "/en/developer-reference#prioritisetransaction" - 'PrivateSend': "/en/developer-reference#privatesend" - 'PruneBlockChain': "/en/developer-reference#pruneblockchain" + - 'Quorum': "/en/developer-reference#quorum" - 'RemovePrunedFunds': "/en/developer-reference#removeprunedfunds" - 'SendFrom': "/en/developer-reference#sendfrom" - 'SendMany': "/en/developer-reference#sendmany" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index b02d730f..6bcee4c2 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -162,7 +162,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_14_0}} * [GetPoolInfo][rpc getpoolinfo]: {{summary_getPoolInfo}} * [GetSuperblockBudget][rpc getsuperblockbudget]: {{summary_getSuperblockBudget}} -* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_13_0}} +* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_14_0}} * [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_14_0}} * [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_14_0}} * [MnSync][rpc mnsync]: {{summary_mnSync}} {{DASH_UPDATED0_14_0}} @@ -178,8 +178,9 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} -* [BLS][rpc bls]: {{summary_bls}} {{DASH_NEW0_13_0}} -* [ProTx][rpc protx]: {{summary_proTx}} {{DASH_UPDATED0_13_2}} +* [BLS][rpc bls]: {{summary_bls}} {{DASH_UPDATED0_14_0}} +* [ProTx][rpc protx]: {{summary_proTx}} {{DASH_UPDATED0_14_0}} +* [Quorum][rpc quorum]: {{summary_quorum}} {{DASH_NEW0_14_0}} {% endautocrossref %} @@ -307,7 +308,7 @@ default. * [ListReceivedByAddress][rpc listreceivedbyaddress]: {{summary_listReceivedByAddress}} {{DASH_UPDATED0_13_0}} * [ListSinceBlock][rpc listsinceblock]: {{summary_listSinceBlock}} {{DASH_UPDATED0_14_0}} * [ListTransactions][rpc listtransactions]: {{summary_listTransactions}} {{DASH_UPDATED0_14_0}} -* [ListUnspent][rpc listunspent]: {{summary_listUnspent}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} +* [ListUnspent][rpc listunspent]: {{summary_listUnspent}} {{DASH_UPDATED0_14_0}} * [LockUnspent][rpc lockunspent]: {{summary_lockUnspent}} * [Move][rpc move]: {{summary_move}} {{DEPRECATED}} * [RemovePrunedFunds][rpc removeprunedfunds]: {{summary_removePrunedFunds}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/bls.md b/_includes/devdoc/dash-core/rpcs/rpcs/bls.md index 8adaa609..09294ff4 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/bls.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/bls.md @@ -61,6 +61,57 @@ Result: } {% endhighlight %} +{% endautocrossref %} + +###### BLS FromSecret + + +{% autocrossref %} + +The `bls fromsecret` RPC parses a BLS secret key and returns the secret/public key pair. + +*Parameter #1---secret key* + +{% itemplate ntpd1 %} +- n: "`secret`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The BLS secret key" +{% enditemplate %} + +*Result---the secret/public key pair* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object" + p: "Required
    (exactly 1)" + d: "BLS key pair" + +- n: "→
    `secret`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "A BLS secret key" + +- n: "→
    `public`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "A BLS public key" +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet bls fromsecret 52f35cd3d977a505485f2474e7e71ef3f60f859603d72ad6b0fa7f7bd163e144 +{% endhighlight %} + +Result: +{% highlight json %} +{ + "secret": "52f35cd3d977a505485f2474e7e71ef3f60f859603d72ad6b0fa7f7bd163e144", + "public": "885d01d746c3e4d2093b0975de2d8c1f3e5a2c3e8fdaaed929f86fc9fbb278a095248163c101a2456650b415776b7990" +} +{% endhighlight %} + *See also: none* {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md index c56b0b05..393fbb04 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md @@ -801,52 +801,7 @@ Result (wrapped): -The `gobject getvotes` RPC gets all votes for a governance object hash (including old votes). - -*Parameter #1---object hash* - -{% itemplate ntpd1 %} -- n: "`governance-hash`" - t: "string (hex)" - p: "Required
    (exactly 1)" - d: "The hash of a governance object" - -{% enditemplate %} - -*Result---votes for specified governance* - -{% itemplate ntpd1 %} -- n: "Result" - t: "object" - p: "Required
    (exactly 1)" - d: "The governance object votes" - -- n: "→
    Vote Info" - t: "string" - p: "Required
    (1 or more)" - d: "Key: vote-hash

    Value: Masternode's unspent outpoint, time, outcome, and signal of the vote" - -{% enditemplate %} - -*Example from Dash Core 0.12.2* - -{% highlight bash %} -dash-cli -testnet gobject getvotes 78941af577f639ac94440e4855a1ed8f\ - 696f1506d1c0bed4f4b68f05be26d3ca -{% endhighlight %} - -Result (truncated): -{% highlight json %} -{ - "174aaba65982d25a23f437e2a66ec3836146ba7b7ce5b3fe2d5476907f7079d9": "2eab488e3a7b030303de0d18e357ce17a9fc6b8876705d61076bbe923b2e5fc8-1:1509354047:YES:DELETE", - "216cbc42addec1a6b83e1f2b0b3779594bd879f5671dd76a9826cc690c68286d": "b0320c1eff10ccb5e26086017a09e77dacb30fdcafccb3d98db3e5b610b9f1bd-1:1509117256:YES:DELETE", - "aa4dc9d3b9e74e8c1ffc725b737d07f8a32e43c64907e4bea19e64a86135f08a": "af9f5646ace92f76b3a01b0abe08716a0a7ded64074c2d2e712c93174b9013d1-1:1508866932:YES:FUNDING", - "73dd135ea7bece0f2047de75d8ca04f2985daebed9568d28ee58a60a12a2a082": "8e3fee7f668fed7019588be616225c6c4762ee632470878b2dc8eae3f0b3f67d-1:1508866932:YES:FUNDING", - "d13b9c5c28bbc8684a7291961a1023abbbe65b534804d0629fb44166cc1a6148": "08b2dbffd61d927bc12c20f6853513f41fbf7737446632b13c7ca0df8c6da282-1:1508866932:YES:FUNDING", - "8a4283d457d8635b43c6fa6cbf865813a80d965c777e8ba07364eb6468200ae1": "76c40abd280441b75577e99e9e4f253f9281a7deb4feebff83860f9cede7a09b-1:1508866932:YES:FUNDING", - "313e19607813cb0db3b3fb477982b4d3418f13f8511295419df8fe1f7ff6668f": "0fd502f28b9a9a256d9ba29a047c375fe2823b6e76e4853af16e079a709ab72a-1:1508866932:YES:FUNDING" -} -{% endhighlight %} +{{WARNING}} **_Removed in Dash Core 0.14.0._** {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md b/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md index 11a5ce3d..8b89dbb3 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md @@ -60,7 +60,7 @@ the *spendable* field in the results described below. - n: "Include Unsafe" t: "bool" p: "Optional
    (false or true)" - d: "Include outputs that are not safe to spend because they come from unconfirmed untrusted transactions or unconfirmed replacement transactions (cases where we are less sure that a conflicting transaction won't be mined). Default is `true`" + d: "Include outputs that are not safe to spend . See description of `safe` attribute below. Default is `true`" {% enditemplate %} @@ -133,9 +133,14 @@ the *spendable* field in the results described below. p: "Required
    (exactly 1)" d: "The number of PrivateSend rounds" +- n: "→ →
    `safe`" + t: "bool" + p: "Required
    (exactly 1)" + d: "*Added in Bitcoin Core 0.15.0*

    Whether this output is considered safe to spend. Unconfirmed transactions from outside keys and unconfirmed replacement transactions are considered unsafe and are not eligible for spending by `fundrawtransaction` and `sendtoaddress`." + {% enditemplate %} -*Example from Dash Core 0.12.3* +*Example from Dash Core 0.14.0* Get all outputs confirmed at least 6 times for a particular address: @@ -143,7 +148,7 @@ address: {% highlight bash %} dash-cli -testnet listunspent 6 99999999 ''' [ - "yXGNabkdQ3JZ7LZ9RCnFe5dqhtBA3hVmU8" + "yLki4jbxX28JB3TThm1DTgRfbKVhhiMx3d" ] ''' {% endhighlight %} @@ -153,15 +158,16 @@ Result: {% highlight json %} [ { - "txid": "0e86f58c56648175362443c1ef28e473acb4c4adc1b3f7983deaddfa3a61a4d7", - "vout": 4, - "address": "yXGNabkdQ3JZ7LZ9RCnFe5dqhtBA3hVmU8", - "scriptPubKey": "76a91478149277b5d820b04e60cbf96ff81fd1ccc6533388ac", - "amount": 0.01000010, - "confirmations": 609, + "txid": "534fe12e360773dddf8aa125a4027d2d8c0073e13ff2f04fd733202b85dbdcf1", + "vout": 0, + "address": "yLki4jbxX28JB3TThm1DTgRfbKVhhiMx3d", + "scriptPubKey": "76a91404c719ccf48d39d3e6253ac98edaf2b5d24f0c0588ac", + "amount": 1.00001000, + "confirmations": 85, "spendable": true, "solvable": true, - "ps_rounds": 5 + "safe": true, + "ps_rounds": 13 } ] {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md index 555ad474..69d21357 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md @@ -144,14 +144,14 @@ The `masternode current` RPC prints info on current masternode winne p: "Required
    (exactly 1)" d: "The IP address/port of the masternode" -- n: "→
    `protocol`" - t: "number (int)" +- n: "→
    `proTxHash`" + t: "string" p: "Required
    (exactly 1)" - d: "The protocol version number used by this node. See the [protocol versions section][section protocol versions] for more information" + d: "The masternode's Provider Registration transaction hash" - n: "→
    `outpoint`" t: "string" - p: "Required
    (1 or more)" + p: "Required
    (exactly 1)" d: "The masternode's outpoint" - n: "→
    `payee`" @@ -159,19 +159,9 @@ The `masternode current` RPC prints info on current masternode winne p: "Required
    (exactly 1)" d: "Payee address" -- n: "→
    `lastseen`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The Unix epoch time when the masternode was last seen" - -- n: "→
    `activeseconds`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The number of seconds the masternode has been active" - {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet masternode current @@ -180,13 +170,11 @@ dash-cli -testnet masternode current Result: {% highlight json %} { - "height": 37375, - "IP:port": "108.61.192.47:19999", - "protocol": 70208, - "outpoint": "3df7fb192e21c34da99bdd10c34e58ecaf3f3c37d6b2289f0ffedba5050188cc-1", - "payee": "ydGgePy4a3zza37Zm4D44B99czyo6TftU1", - "lastseen": 1512482630, - "activeseconds": 3170434 + "height": 76179, + "IP:port": "34.242.53.163:26155", + "proTxHash": "9de76b8291d00026ab0af86306023c7b90f8e9229dc04916fe1335bf5e11f15d", + "outpoint": "9de76b8291d00026ab0af86306023c7b90f8e9229dc04916fe1335bf5e11f15d-1", + "payee": "yZnU7YJJgGQKvKPQFqXJ4k4DGSsRMhgLXx" } {% endhighlight %} @@ -432,14 +420,14 @@ The `masternode winner` RPC prints info on the next masternode winne p: "Required
    (exactly 1)" d: "The IP address/port of the masternode" -- n: "→
    `protocol`" - t: "number (int)" +- n: "→
    `proTxHash`" + t: "string" p: "Required
    (exactly 1)" - d: "The protocol version number used by this node. See the [protocol versions section][section protocol versions] for more information" + d: "The masternode's Provider Registration transaction hash" - n: "→
    `outpoint`" t: "string" - p: "Required
    (1 or more)" + p: "Required
    (exactly 1)" d: "The masternode's outpoint" - n: "→
    `payee`" @@ -447,19 +435,9 @@ The `masternode winner` RPC prints info on the next masternode winne p: "Required
    (exactly 1)" d: "Payee address" -- n: "→
    `lastseen`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The Unix epoch time when the masternode was last seen" - -- n: "→
    `activeseconds`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The number of seconds the masternode has been active" - {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet masternode winner @@ -468,13 +446,11 @@ dash-cli -testnet masternode winner Result: {% highlight json %} { - "height": 37384, - "IP:port": "145.239.235.17:29999", - "protocol": 70208, - "outpoint": "66eddd00e5927d0a03437d5b8a2f15367c978ef7951c80ae1608a45b1bf64318-1", - "payee": "yY3q6wqRe1y7xzHbGE88YfRg4t97GU7BJ6", - "lastseen": 1512482474, - "activeseconds": 1180019 + "height": 76191, + "IP:port": "34.242.53.163:26173", + "proTxHash": "024608d03beb6a6065f14a29a837c68ae449ac1e17056819366ca0b72b6dd81f", + "outpoint": "024608d03beb6a6065f14a29a837c68ae449ac1e17056819366ca0b72b6dd81f-1", + "payee": "yhp182AnF7gUAyHiWgSbDrKqHKt2dzhoyW" } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md index 202f8bec..b8995b2c 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md @@ -53,10 +53,10 @@ The `protx register` RPC creates a ProRegTx referencing an existing d: "IP and port in the form 'IP:PORT'.
    Must be unique on the network.
    Can be set to '0', which will require a ProUpServTx afterwards." {% enditemplate %} -*Parameter #4---owner key address* +*Parameter #4---owner address* {% itemplate ntpd1 %} -- n: "`ownerKeyAddr`" +- n: "`ownerAddress`" t: "string (hex)" p: "Required
    (exactly 1)" d: "The owner key used for payee updates and proposal voting. The private key belonging to this address be known in your wallet. The address must be unused and must differ from the `collateralAddress`." @@ -71,13 +71,13 @@ The `protx register` RPC creates a ProRegTx referencing an existing d: " The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode." {% enditemplate %} -*Parameter #6---voting key address* +*Parameter #6---voting address* {% itemplate ntpd1 %} -- n: "`votingKeyAddr`" +- n: "`votingAddress`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "The voting key address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to '0' or an empty string, `ownerAddr` will be used." + d: "The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used." {% enditemplate %} *Parameter #7---operator reward* @@ -158,10 +158,10 @@ The `protx register_fund` RPC creates and funds a ProRegTx with the d: "IP and port in the form 'IP:PORT'.
    Must be unique on the network.
    Can be set to '0', which will require a ProUpServTx afterwards." {% enditemplate %} -*Parameter #3---owner key address* +*Parameter #3---owner address* {% itemplate ntpd1 %} -- n: "`ownerKeyAddr`" +- n: "`ownerAddress`" t: "string (hex)" p: "Required
    (exactly 1)" d: "The owner key used for payee updates and proposal voting. The private key belonging to this address be known in your wallet. The address must be unused and must differ from the `collateralAddress`." @@ -176,13 +176,13 @@ The `protx register_fund` RPC creates and funds a ProRegTx with the d: " The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode." {% enditemplate %} -*Parameter #5---voting key address* +*Parameter #5---voting address* {% itemplate ntpd1 %} -- n: "`votingKeyAddr`" +- n: "`votingAddress`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "The voting key address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to '0' or an empty string, `ownerAddr` will be used." + d: "The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used." {% enditemplate %} *Parameter #6---operator reward* @@ -274,10 +274,10 @@ and outputs to cover fees. d: "IP and port in the form 'IP:PORT'.
    Must be unique on the network.
    Can be set to '0', which will require a ProUpServTx afterwards." {% enditemplate %} -*Parameter #4---owner key address* +*Parameter #4---owner address* {% itemplate ntpd1 %} -- n: "`ownerKeyAddr`" +- n: "`ownerAddress`" t: "string (hex)" p: "Required
    (exactly 1)" d: "The owner key used for payee updates and proposal voting. The private key belonging to this address be known in your wallet. The address must be unused and must differ from the `collateralAddress`." @@ -292,13 +292,13 @@ and outputs to cover fees. d: " The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode." {% enditemplate %} -*Parameter #6---voting key address* +*Parameter #6---voting address* {% itemplate ntpd1 %} -- n: "`votingKeyAddr`" +- n: "`votingAddress`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "The voting key address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to '0' or an empty string, `ownerAddr` will be used." + d: "The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used." {% enditemplate %} *Parameter #7---operator reward* @@ -671,7 +671,7 @@ The `protx update_service` RPC creates and sends a ProUpServTx to th - n: "`operatorPayoutAddress`" t: "string (hex)" p: "Optional
    (0 or 1)" - d: "The Dash address used for operator reward payments. Only allowed when the ProRegTx had a non-zero `operatorReward` value." + d: "The Dash address used for operator reward payments. Only allowed when the ProRegTx had a non-zero `operatorReward` value. If set to an empty string, the currently active payout address is reused." {% enditemplate %} *Parameter #5---fee source address* @@ -730,16 +730,16 @@ The `protx update_registrar` RPC creates and sends a ProUpRegTx to t - n: "`operatorPubKey`" t: "string (hex)" p: "Required
    (exactly 1)" - d: " The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode." + d: " The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode. If set to an empty string, the last on-chain operator key of the masternode will be used." {% enditemplate %} -*Parameter #3---voting key address* +*Parameter #3---voting address* {% itemplate ntpd1 %} -- n: "`votingKeyAddr`" +- n: "`votingAddress`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "The voting key address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to '0' or an empty string, the last on-chain voting key of the masternode will be used." + d: "The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used." {% enditemplate %} *Parameter #4---operator payout address* @@ -748,7 +748,7 @@ The `protx update_registrar` RPC creates and sends a ProUpRegTx to t - n: "`payoutAddress`" t: "string (hex)" p: "Optional
    (0 or 1)" - d: "The Dash address to use for masternode reward payments. If set to '0' or an empty string, the last on-chain payout address of the masternode will be used." + d: "The Dash address to use for masternode reward payments. If set to an empty string, the last on-chain payout address of the masternode will be used." {% enditemplate %} *Parameter #5---fee source address* @@ -948,63 +948,161 @@ The `protx diff` RPC calculates a diff and a proof between two maste p: "Required
    (exactly 1)" d: "Set to `true` if masternode is valid" +- n: "→
    `deletedQuorums`" + t: "array" + p: "Required
    (exactly 1)" + d: "An array of deleted quorums" + +- n: "→ →
    `llmqType`" + t: "number" + p: "Required
    (exactly 1)" + d: "The quorum type" + +- n: "→ →
    `quorumHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the quorum" + +- n: "→
    `newQuorums`" + t: "array" + p: "Required
    (exactly 1)" + d: "An array of new quorums" + +- n: "→ →
    `version`" + t: "number" + p: "Required
    (exactly 1)" + d: "The quorum version" + +- n: "→ →
    `llmqType`" + t: "number" + p: "Required
    (exactly 1)" + d: "The quorum type" + +- n: "→ →
    `quorumHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the quorum" + +- n: "→ →
    `signersCount`" + t: "number" + p: "Required
    (exactly 1)" + d: "The number of signers for the quorum" + +- n: "→ →
    `validMembersCount`" + t: "number" + p: "Required
    (exactly 1)" + d: "The number of valid members in the quorum" + +- n: "→ →
    `quorumPublicKey`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The public key of the quorum" + - n: "→
    `merkleRootMNList`" t: "string (hex)" p: "Required
    (exactly 1)" d: "Merkle root of the masternode list" + +- n: "→
    `merkleRootQuorums`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "*Added in Coinbase Transaction version 2 (Dash Core 0.14.0)*

    Merkle root of the masternode list" {% enditemplate %} *Example from Dash Core 0.14.0* {% highlight bash %} -dash-cli -testnet protx diff 600 700 +dash-cli -testnet protx diff 75000 76000 {% endhighlight %} -Result: +Result (truncated): {% highlight json %} { - "baseBlockHash": "0000002b88258091c9f343e124040fb7b2e0d88afe4a99d213c046792c183a49", - "blockHash": "0000051bbea86db62be46c0beae2cb34110e928ace42683ab189e8db9874308f", - "cbTxMerkleTree": "0200000002a4eaaaaaf7e260b90b1a7987eb269da110559343be5746ac5ef7f39b79c1228e4f7e074272c7e3814f630ce4f2f52f80c0b814fb1ce0e4d954b7b583a55ff0a50103", - "cbTx": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff060369fe000102ffffffff0340230e43000000001976a914323a8b6425ea6f8dafd411db13bc303219a9e4f088ac44aab141000000001976a914870ca3662658f261952cbfa56969283ad1e84dc588acfc785c01000000001976a91487da2642cf967c493f126137d4f15e9de36b976888ac0000000026010069fe000068cadec8342737e3f2dddc713b3a206390996c8b806fb5a8a2ccc71240cf7a97", + "baseBlockHash": "0000000003deb00bba101ee581cdc4e1cbd1243ec5cd190472ae93eff07c8881", + "blockHash": "0000000000c0279636003ed0042c9a454b4c39e9a6c49bb92d420e0bf4e0f49b", + "cbTxMerkleTree": "01000000015ef8245e2a381174f5e2cc701d5d067d9f16945179380a3ce54415114426eb510101", + "cbTx": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff4c03e02801043619ab5c08fabe6d6d736170747365743a7265737574736574d6e48c2ebd4e147373617074736574730100000000000000380000ae250000000d2f6e6f64655374726174756d2f000000000340230e43000000001976a914cb594917ad4e5849688ec63f29a0f7f3badb5da688ac4cfe1c3e000000001976a91470da282ad16926e127064b7d3d787d7f3793014788acf424f104000000001976a914312d9ccd4e73f2e66006e45701bce17125ba681e88ac00000000260100e0280100d26df127ba2765c8f098ab71199c82c59509418efe26cdf02f7c92ce738e2247", "deletedMNs": [ - "285d7da8e94b2348689aca4a63bc6cbbeeb8e912c2088fb9a01e295e3eeeb2ff" ], "mnList": [ { - "proRegTxHash": "39a1339d9bf26de701345beecc5de75a690bc9533741a3dbe90f2fd88b8ed461", - "confirmedHash": "0000030c37a946836029eeca338604c652e3c6cd368eb54bdfa8553213954f74", - "service": "198.199.74.241:19999", - "pubKeyOperator": "0efda51589f86e30cc2305e7388c01ce0309c19a182cf37bced97c7da72236f660c0a395e765e6e06962ecff5a69d7de", - "votingAddress": "yRCunhZVjbMxDr1C6fD6Pf37sTwH6wG7Uu", + "proRegTxHash": "fef106ff6420f9c6638c9676988a8fc655750caafb506c98cb5ff3d4fea99a41", + "confirmedHash": "0000000005d5635228f113b50fb5ad66995a7476ed20374e6e159f1f9e62347b", + "service": "45.48.177.222:19999", + "pubKeyOperator": "842476e8d82327adfb9b617a7ac3f62868946c0c4b6b0e365747cfb8825b8b79ba0eb1fa62e8583ae7102f59bf70c7c7", + "votingAddress": "yf7QHemCfbmKEncwZxroTj8JtShXsC28V6", "isValid": true }, { - "proRegTxHash": "3dbb7de94e219e8f7eaea4f3c01cf97d77372e10152734c1959f17302369aa49", - "confirmedHash": "0000043c0d46d3e6b84c1b420b77b65e962207fb6427361f74d243b9b1fd51cb", - "service": "52.36.64.148:19999", - "pubKeyOperator": "139b654f0b1c031e1cf2b934c2d895178875cfe7c6a4f6758f02bc66eea7fc292d0040701acbe31f5e14a911cb061a2f", - "votingAddress": "yWEZQmGADmdSk6xCai7TPcmiSZuY65hBmo", + "proRegTxHash": "7d56a2cf814b344f54ac4b6485a7a5b2b5a439ea796defff67f2a5872c9df5c3", + "confirmedHash": "00000c66555eea6272e5c7bcdb2648e1a63fd5b23a6d1d4c3f9dc5df43c6a5a8", + "service": "178.151.192.107:19999", + "pubKeyOperator": "8631b1ba19ed23fdab61db7a81c9aa1356eaf37d0a29a14cc493e2f863080bf909b4d3e23d536be1d18e4c842566ed67", + "votingAddress": "yP2LXCZTVVjBFQiN2bhghQvNwdUQG8NMX8", "isValid": true }, { - "proRegTxHash": "851a17fa224374b52b1626f4fb6b5158f2a6add3061e65ef03e1ff13c610c550", - "confirmedHash": "000009a21e82163268330855c9ef13f938a802e46db0fc8a6b1f97161e9d60d8", - "service": "104.196.245.194:19999", - "pubKeyOperator": "0a6bd57731d85539e62c4b46ec150343a0faba9f08af509309634a6e7e016e26b5e809f0e4cc68252c3c46e3a4b35e57", - "votingAddress": "ycppuGB8m2zn5xRfXyJV8U1nNgT7bFs7u5", - "isValid": true - }, - { - "proRegTxHash": "9e9f7a6d63358ff6e7633d4bb5a3c9eaaebaf29437d5917565ed73f5bcc03dbf", - "confirmedHash": "00000020b973dddd9dfd392f118d0094adc86bd8bfe9bee67d08705155bc7aaf", - "service": "207.246.101.212:19999", - "pubKeyOperator": "02a37189354135fed49de66a43d59590824579ccfa7e9512f50aeaff641e1b78cc5c798c5ae4a35b11958fd153f0a0e3", - "votingAddress": "yRH7EYkGQgdKvmfdskcMRphdDumLdP6fq1", - "isValid": true + "proRegTxHash": "be32ec53dbbfb64e5ba29e25e3716f6f4024291914ce4c858cd69f0b4e371dda", + "confirmedHash": "0000000015717296254a7c6139a50c34ad481dc8fdf7b0ea4c8320dc3fff2759", + "service": "173.61.30.231:19025", + "pubKeyOperator": "86ce02e551a46f1ca9a734104b4e387984d733ba99930eb677aae126fa142f201049842422ab2f105e3c9805f1bd54e8", + "votingAddress": "ySBU7oXuuTSJqtmUArMRFsKefJPtEDkESG", + "isValid": false } ], - "merkleRootMNList": "977acf4012c7cca2a8b56f808b6c999063203a3b71dcddf2e3372734c8deca68" + "deletedQuorums": [ + { + "llmqType": 1, + "quorumHash": "00000000052b95b036c87f82d19878f69bf940e6acf9f03cd818bd07a5686d0e" + }, + { + "llmqType": 1, + "quorumHash": "0000000000e8b557ea26921f4bb143e961dd35209cf8c1c7b73397322c1a5018" + }, + { + "llmqType": 1, + "quorumHash": "000000000b259f422fe3b647b8f1553b846d95dc8c79699d60e48a81dcf14747" + }, + { + "llmqType": 1, + "quorumHash": "00000000143365adb3c3de6a35ae247120df8ca53a61afd82cd6fd4126ca8a4d" + } + ], + "newQuorums": [ + { + "version": 1, + "llmqType": 1, + "quorumHash": "0000000001427858db64213ed3ef32ffb2546ca7f2a096adbefc197437b90612", + "signersCount": 50, + "validMembersCount": 50, + "quorumPublicKey": "922e3683358f09a2619efb9e8329f90d5a8a608a18e26db212613ef7f95818eb6f68372fb313edbf96fdd2cdee20a66d" + }, + { + "version": 1, + "llmqType": 1, + "quorumHash": "000000000148a6fced08763f3f31dd68a3d88d2d4f2d48eef44eb9311de66129", + "signersCount": 50, + "validMembersCount": 50, + "quorumPublicKey": "814973fcf54892fa4edbf9e732341ff1227e2a89bf59cb22b52082e940f7c3ac8a7c25163cb375b3cfe3654e86eaa65d" + }, + { + "version": 1, + "llmqType": 1, + "quorumHash": "0000000009931a8a6dcdf21a869739356e7715eb155c1a18a58c8bf13382ac33", + "signersCount": 50, + "validMembersCount": 50, + "quorumPublicKey": "0694b46d8581423f2f68196dcc2d06be0b6b365a4100b54e351ab42f5828d09fd03941f8a1255363753a53d32b43f63b" + }, + { + "version": 1, + "llmqType": 1, + "quorumHash": "0000000006097e9d08a4ca9bedbe4a97bb9bf3fe8d09372d18d2398f185cff5d", + "signersCount": 50, + "validMembersCount": 50, + "quorumPublicKey": "10d0488558afd929508cd2d11bda7564333a904aa23c8b4a1ed57d86b217e3181497469e7220e9421e14f645a00940fc" + } + ], + "merkleRootMNList": "47228e73ce927c2ff0cd26fe8e410995c5829c1971ab98f0c86527ba27f16dd2" } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md new file mode 100644 index 00000000..eab7f3cd --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md @@ -0,0 +1,966 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/quorum.md" %} + +##### Quorum +{% include helpers/subhead-links.md %} + + + +{% assign summary_quorum="provides a set of commands for quorums (LLMQs)." %} + +{% autocrossref %} + +*Added in Dash Core 0.14.0* + +The `quorum` RPC {{summary_quorum}} + +{% endautocrossref %} + +###### Quorum List + + +{% autocrossref %} + +The `quorum list` RPC displays a list of on-chain quorums. + +*Parameter #1---quorum count* + +{% itemplate ntpd1 %} +- n: "`count`" + t: "number" + p: "Optional
    (0 or 1)" + d: "Number of quorums to list (default: 10)" +{% enditemplate %} + +*Result---a list of quorums* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object" + p: "Required
    (exactly 1)" + d: "Quorum list" + +- n: "→
    Quorum" + t: "array" + p: "Required
    (1 or more)" + d: "Array of quorum details" + +- n: "→ →
    Quorum Hash" + t: "string (hex)" + p: "Optional
    (0 or more)" + d: "A quorum hash" +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum list +{% endhighlight %} + +Result: +{% highlight json %} +{ + "llmq_50_60": [ + "00000000023cc6dde69bed898c83fe2328ef38b1ea9da14a599efa14caef0b7d", + "000000002b968fb3b2fc2ff18d6e89611e366b4d38a6d0437e99bd7c37f2fd83", + "000000000301054c038b07b5b51493d5efc3f078e3aede6eb603c47943d1cc78", + "000000000e901278c00c896754a06f8d45d0268c6aff6e72ffb3007d07c10e73", + "000000001bc592f2a8676203835bc6ad442abeadb9c22b8d6a2999db07354b01", + "000000000896c37ef8a32318ee871589394f1578473b8825275b610690e47db0", + "00000000133b192b2319a0716ad18e5788981fff51856f61205af5d6a634ba41", + "0000000004946f3f9f82a298985f73080d62627d51f6f4ba77f3cd8c6788b3d0", + "0000000005cb014d3df9bac0ba379f1d5b8b75f0e6d7c408d43ac1db330ec641", + "0000000006c1653c7ee747f140dd7daa1da23a541e67a0fc0dc88db3482ec4d5" + ], + "llmq_400_60": [ + "0000000007697fd69a799bfa26576a177e817bc0e45b9fcfbf48b362b05aeff2" + ], + "llmq_400_85": [ + ] +} +{% endhighlight %} + +{% endautocrossref %} + +###### Quorum Info + + +{% autocrossref %} + +The `quorum info` RPC returns information about a specific quorums. + +*Parameter #1---LLMQ Type* + +{% itemplate ntpd1 %} +- n: "`llmqType`" + t: "number" + p: "Required
    (exactly 1)" + d: "[Type of quorums](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types) to list:
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" +{% enditemplate %} + +*Parameter #2---quorum hash* + +{% itemplate ntpd1 %} +- n: "`quorumHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The block hash of the quorum" +{% enditemplate %} + +*Parameter #3---secret key share* + +{% itemplate ntpd1 %} +- n: "`includeSkShare`" + t: "bool" + p: "Optional
    (0 or 1)" + d: "Include the secret key share (default: `false`)" +{% enditemplate %} + +*Result---information about a quorum* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object" + p: "Required
    (exactly 1)" + d: "Quorum list" + +- n: "→
    `height`" + t: "number" + p: "Required
    (exactly 1)" + d: "Block height of the quorum" + +- n: "→
    `quorumHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the quorum" + +- n: "→
    `minedBlock`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the block that established the quorum" + +- n: "→
    `members`" + t: "array" + p: "Required
    (exactly 1)" + d: "An array containing quorum member details" + +- n: "→ →
    Member" + t: "object" + p: "Required
    (1 or more)" + d: "An object describing a particular member" + +- n: "→ → →
    `proTxHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The masternode's Provider Registration transaction hash" + +- n: "→ → →
    `valid`" + t: "bool" + p: "Required
    (exactly 1)" + d: "Indicates if the member is valid" + +- n: "→ → →
    `pubKeyShare`" + t: "string" + p: "Optional
    (0 or 1)" + d: "Member public key share" + +- n: "→
    `quorumPublicKey`" + t: "string" + p: "Required
    (exactly 1)" + d: "Quorum public key" + +- n: "→
    `secretKeyShare`" + t: "string" + p: "Optional
    (exactly 1)" + d: "Quorum secret key share" +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum info 1 \ + 0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a true +{% endhighlight %} + +Result (truncated): +{% highlight json %} +{ + "height": 76728, + "quorumHash": "0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a", + "minedBlock": "0000000009d8c183650d12e9ff952967ecfde58404e80db1bf5a7d1a31ccd4ee", + "members": [ + { + "proTxHash": "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5", + "valid": true, + "pubKeyShare": "04a4ae5cb7f598d1bcc6fa49162fe8c19f6ad763ce3959f5afdc3c00e19d8261af37729ae8a707860ecdea067029d3e9" + }, + { + "proTxHash": "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121", + "valid": true, + "pubKeyShare": "8239b67aff5368e710a8ebe5f1f3e9087e8f9c52ed165293779f40b0e764a20972f2ade9367f41cd4f64a3516ad8c90c" + }, + { + "proTxHash": "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4", + "valid": true, + "pubKeyShare": "969655b04484de85b3f1ecce5a9745ec7fd0a34533e13fcf285e15ed034578a604e0e2af98cd12cf89d1cfcc167c978d" + }, + { + "proTxHash": "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb", + "valid": true, + "pubKeyShare": "047bee41fdce58f8d87ba6820c784f2a096d85d1ceec62520013c7c3ef9de9203b82eadc910b197a906be2cd5fd21c53" + }, + { + "proTxHash": "57795a35a3a127e817704b6b8ce64ac7f6afc49f0d0172c1e4125987c31dd1d7", + "valid": true, + "pubKeyShare": "168b9cb406bc44348b5de18c9017817f4e1b15c304ab8d365ba3828712ab1f64c1e4715715d61a96c5923fbe8c470788" + }, + { + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", + "valid": true, + "pubKeyShare": "93a85894c04dbc06e9a598126aa8ba9983427a089710c4ff37b9b9f12980780e988f89192b5feaa25f907b8db9efb930" + } + ], + "quorumPublicKey": "18772a3ca86f47795f4e9fa40babe89c7be6bc15bb4e4c8a137715a814a4118516a63b89c5c415b9dfe956f2d6a4fde3", + "secretKeyShare": "3da0d8f532309660f7f44aa0ed42c1569773b39c70f5771ce5604be77e50759e" +} +{% endhighlight %} + +{% endautocrossref %} + + +###### Quorum DKGStatus + + +{% autocrossref %} + +The `quorum list` RPC displays a list of on-chain quorums. + +*Parameter #1---provider registration hash* + +{% itemplate ntpd1 %} +- n: "`proTxHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The Provider Registration transaction hash of the masternode to show status for. If set to an empty string, the local status is shown." +{% enditemplate %} + +*Parameter #2---detail level* + +{% itemplate ntpd1 %} +- n: "`detail_level`" + t: "number" + p: "Required
    (exactly 1)" + d: "Detail level of output:
    `0` - Only show counts (_default_)
    `1` - Show member indexes
    `2` - Show member's ProTxHashes" +{% enditemplate %} + +*Result (if detail level was 0 or omitted)---JSON DKG details* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "array" + p: "Required
    (exactly 1)" + d: "An array of objects each containing a provider transaction, or JSON `null` if an error occurred" + +- n: "→
    `proTxHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the initial provider registration transaction as hex in RPC byte order" + +- n: "→
    `time`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The Unix epoch time" + +- n: "→
    `timeStr`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The UTC time as a string" + +- n: "→
    `session`" + t: "object" + p: "Required
    (exactly 1)" + d: "Object containing DKG Session information" + +- n: "→ →
    LLMQ Type" + t: "object" + p: "Required
    (exactly 1)" + d: "Object" + +- n: "→ → →
    `llmqType`" + t: "number" + p: "Required
    (exactly 1)" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" + +- n: "→ → →
    `quorumHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The block hash of the quorum" + +- n: "→ → →
    `quorumHeight`" + t: "number" + p: "Required
    (exactly 1)" + d: "The block height of the quorum" + +- n: "→ → →
    `phase`" + t: "number" + p: "Required
    (exactly 1)" + d: "The active DKG phase" + +- n: "→ → →
    `sentContributions`" + t: "bool" + p: "Required
    (exactly 1)" + d: "True when contributions have been sent" + +- n: "→ → →
    `sentComplaint`" + t: "bool" + p: "Required
    (exactly 1)" + d: "True when complaints have been sent" + +- n: "→ → →
    `sentJustification`" + t: "bool" + p: "Required
    (exactly 1)" + d: "True when justifications have been sent" + +- n: "→ → →
    `sentPrematureCommitment`" + t: "bool" + p: "Required
    (exactly 1)" + d: "True when premature commitments have been sent" + +- n: "→ → →
    `aborted`" + t: "bool" + p: "Required
    (exactly 1)" + d: "True if the DKG session has been aborted" + +- n: "→ → →
    `badMembers`" + t: "number" + p: "Required
    (exactly 1)" + d: "Number of bad members" + +- n: "→ → →
    `weComplain`" + t: "number" + p: "Required
    (exactly 1)" + d: "Number of complaints sent" + +- n: "→ → →
    `receivedContributions`" + t: "number" + p: "Required
    (exactly 1)" + d: "Number of contributions received" + +- n: "→ → →
    `receivedComplaints`" + t: "number" + p: "Required
    (exactly 1)" + d: "Number of complaints received" + +- n: "→ → →
    `receivedJustifications`" + t: "number" + p: "Required
    (exactly 1)" + d: "Number of justifications received" + +- n: "→ → →
    `receivedPrematureCommitments`" + t: "number" + p: "Required
    (exactly 1)" + d: "Number of premature commitments received" + +- n: "→
    `minableCommitments`" + t: "object" + p: "Required
    (exactly 1)" + d: "Object containing minable commitments" +{% enditemplate %} + +*Result (if detail level was 1)---JSON DKG details including member index* + +Note: detail level 1 includes all level 0 fields and expands the following fields. + +{% itemplate ntpd1 %} +- n: "→ → →
    `badMembers`" + t: "array" + p: "Required
    (exactly 1)" + d: "Array containing the member index for each bad member" + +- n: "→ → →
    `weComplain`" + t: "array" + p: "Required
    (exactly 1)" + d: "Array containing the member index for each complaint sent" + +- n: "→ → →
    `receivedContributions`" + t: "array" + p: "Required
    (exactly 1)" + d: "Array containing the member index for each contribution received" + +- n: "→ → →
    `receivedComplaints`" + t: "array" + p: "Required
    (exactly 1)" + d: "Array containing the member index for each complaint received" + +- n: "→ → →
    `receivedJustifications`" + t: "array" + p: "Required
    (exactly 1)" + d: "Array containing the member index for each justification received" + +- n: "→ → →
    `receivedPrematureCommitments`" + t: "array" + p: "Required
    (exactly 1)" + d: "Array containing the member index for each commitment received" +{% enditemplate %} + +*Result (if detail level was 2)---JSON DKG details including member index and ProTx hash* + +Note: detail level 2 includes all level 0 fields, adds the `allMembers` field, and expands several fields. + +{% itemplate ntpd1 %} +- n: "→ → →
    `badMembers`" + t: "array" + p: "Required
    (exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a bad member" + +- n: "→ → → →
    Member" + t: "object" + p: "Required
    (0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
    `memberIndex`" + t: "number" + p: "Required
    (exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
    `proTxHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
    `weComplain`" + t: "object" + p: "Required
    (exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a member being complained about" + +- n: "→ → → →
    Member" + t: "object" + p: "Required
    (0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
    `memberIndex`" + t: "number" + p: "Required
    (exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
    `proTxHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
    `receivedContributions`" + t: "object" + p: "Required
    (exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a member a contribution was received from" + +- n: "→ → → →
    Member" + t: "object" + p: "Required
    (0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
    `memberIndex`" + t: "number" + p: "Required
    (exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
    `proTxHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
    `receivedComplaints`" + t: "object" + p: "Required
    (exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a member a complaint was received from" + +- n: "→ → → →
    Member" + t: "object" + p: "Required
    (0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
    `memberIndex`" + t: "number" + p: "Required
    (exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
    `proTxHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
    `receivedJustifications`" + t: "object" + p: "Required
    (exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a member a justification was received from" + +- n: "→ → → →
    Member" + t: "object" + p: "Required
    (0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
    `memberIndex`" + t: "number" + p: "Required
    (exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
    `proTxHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
    `receivedPrematureCommitments`" + t: "object" + p: "Required
    (exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a member a premature commitment was received from" + +- n: "→ → → →
    Member" + t: "object" + p: "Required
    (0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
    `memberIndex`" + t: "number" + p: "Required
    (exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
    `proTxHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
    `allMembers`" + t: "array" + p: "Required
    (exactly 1)" + d: "Array containing the provider registration transaction hash for all quorum members" +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum dkgstatus +{% endhighlight %} + +Result: +{% highlight json %} +{ + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", + "time": 1554817777, + "timeStr": "2019-04-09 13:49:37", + "session": { + "llmq_50_60": { + "llmqType": 1, + "quorumHash": "0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a", + "quorumHeight": 76728, + "phase": 6, + "sentContributions": true, + "sentComplaint": true, + "sentJustification": false, + "sentPrematureCommitment": true, + "aborted": false, + "badMembers": 1, + "weComplain": 0, + "receivedContributions": 49, + "receivedComplaints": 50, + "receivedJustifications": 0, + "receivedPrematureCommitments": 49 + } + }, + "minableCommitments": { + } +} +{% endhighlight %} + +{% endautocrossref %} + +*Example from Dash Core 0.14.0 (detail_level: 1)* + +{% highlight bash %} +dash-cli -testnet quorum dkgstatus "" 1 +{% endhighlight %} + +Result (truncated): +{% highlight json %} +{ + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", + "time": 1554817777, + "timeStr": "2019-04-09 13:49:37", + "session": { + "llmq_50_60": { + "llmqType": 1, + "quorumHash": "0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a", + "quorumHeight": 76728, + "phase": 6, + "sentContributions": true, + "sentComplaint": true, + "sentJustification": false, + "sentPrematureCommitment": true, + "aborted": false, + "badMembers": [ + 25 + ], + "weComplain": [ + ], + "receivedContributions": [ + 0, + 1, + 2, + 3, + 47, + 48, + 49 + ], + "receivedComplaints": [ + 0, + 1, + 2, + 3, + 47, + 48, + 49 + ], + "receivedJustifications": [ + ], + "receivedPrematureCommitments": [ + 0, + 1, + 2, + 3, + 47, + 48, + 49 + ] + } + }, + "minableCommitments": { + } +} +{% endhighlight %} + +*Example from Dash Core 0.14.0 (detail_level: 2)* + +{% highlight bash %} +dash-cli -testnet quorum dkgstatus "" 2 +{% endhighlight %} + +Result (truncated): +{% highlight json %} +{ + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", + "time": 1554817777, + "timeStr": "2019-04-09 13:49:37", + "session": { + "llmq_50_60": { + "llmqType": 1, + "quorumHash": "0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a", + "quorumHeight": 76728, + "phase": 6, + "sentContributions": true, + "sentComplaint": true, + "sentJustification": false, + "sentPrematureCommitment": true, + "aborted": false, + "badMembers": [ + { + "memberIndex": 25, + "proTxHash": "ebf4b6337e25b975eb23ba6d113f94882196d7259749acaad952acf48025f590" + } + ], + "weComplain": [ + ], + "receivedContributions": [ + { + "memberIndex": 0, + "proTxHash": "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5" + }, + { + "memberIndex": 1, + "proTxHash": "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121" + }, + { + "memberIndex": 2, + "proTxHash": "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4" + }, + { + "memberIndex": 3, + "proTxHash": "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb" + }, + { + "memberIndex": 47, + "proTxHash": "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1" + }, + { + "memberIndex": 48, + "proTxHash": "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2" + }, + { + "memberIndex": 49, + "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + } + ], + "receivedComplaints": [ + { + "memberIndex": 0, + "proTxHash": "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5" + }, + { + "memberIndex": 1, + "proTxHash": "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121" + }, + { + "memberIndex": 2, + "proTxHash": "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4" + }, + { + "memberIndex": 3, + "proTxHash": "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb" + }, + { + "memberIndex": 47, + "proTxHash": "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1" + }, + { + "memberIndex": 48, + "proTxHash": "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2" + }, + { + "memberIndex": 49, + "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + } + ], + "receivedJustifications": [ + ], + "receivedPrematureCommitments": [ + { + "memberIndex": 0, + "proTxHash": "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5" + }, + { + "memberIndex": 1, + "proTxHash": "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121" + }, + { + "memberIndex": 2, + "proTxHash": "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4" + }, + { + "memberIndex": 3, + "proTxHash": "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb" + }, + { + "memberIndex": 47, + "proTxHash": "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1" + }, + { + "memberIndex": 48, + "proTxHash": "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2" + }, + { + "memberIndex": 49, + "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + } + ], + "allMembers": [ + "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5", + "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121", + "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4", + "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb", + "...", + "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1", + "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2", + "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + ] + } + }, + "minableCommitments": { + } +} +{% endhighlight %} + +###### Quorum Sign + + +{% autocrossref %} + +The `quorum sign` RPC requests threshold-signing for a message. + +![Warning icon](/img/icons/icon_warning.svg) Note: Used for RegTest testing only. + +*Parameter #1---LLMQ Type* + +{% itemplate ntpd1 %} +- n: "`llmqType`" + t: "number" + p: "Required
    (exactly 1)" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" +{% enditemplate %} + +*Parameter #2---id* + +{% itemplate ntpd1 %} +- n: "`id`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "Signing request ID" +{% enditemplate %} + +*Parameter #3---message hash* + +{% itemplate ntpd1 %} +- n: "`msgHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "Hash of the message to be signed" +{% enditemplate %} + +*Result---status* + +{% itemplate ntpd1 %} +- n: "result" + t: "bool" + p: "Required
    (exactly 1)" + d: "True or false depending on success" + +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum sign 1 \ + "abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234" "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" +{% endhighlight %} + +Result: +{% highlight json %} +false +{% endhighlight %} + +{% endautocrossref %} + +###### Quorum HasRecSig + + +{% autocrossref %} + +The `quorum hasrecsig` RPC checks for a recovered signature for a previous threshold-signing message request. + +![Warning icon](/img/icons/icon_warning.svg) Note: Used for RegTest testing only. + +*Parameter #1---LLMQ Type* + +{% itemplate ntpd1 %} +- n: "`llmqType`" + t: "number" + p: "Required
    (exactly 1)" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" +{% enditemplate %} + +*Parameter #2---id* + +{% itemplate ntpd1 %} +- n: "`id`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "Signing request ID" +{% enditemplate %} + +*Parameter #3---message hash* + +{% itemplate ntpd1 %} +- n: "`msgHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "Hash of the message to be signed" +{% enditemplate %} + +*Result---status* + +{% itemplate ntpd1 %} +- n: "result" + t: "bool" + p: "Required
    (exactly 1)" + d: "True or false depending on success" + +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum hasrecsig 1 \ + "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" +{% endhighlight %} + +Result: +{% highlight json %} +false +{% endhighlight %} + +{% endautocrossref %} + +###### Quorum IsConflicting + + +{% autocrossref %} + +The `quorum isconflicting` RPC checks if there is a conflict for a threshold-signing message request. + +![Warning icon](/img/icons/icon_warning.svg) Note: Used for RegTest testing only. + +*Parameter #1---LLMQ Type* + +{% itemplate ntpd1 %} +- n: "`llmqType`" + t: "number" + p: "Required
    (exactly 1)" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" +{% enditemplate %} + +*Parameter #2---id* + +{% itemplate ntpd1 %} +- n: "`id`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "Signing request ID" +{% enditemplate %} + +*Parameter #3---message hash* + +{% itemplate ntpd1 %} +- n: "`msgHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "Hash of the message to be signed" +{% enditemplate %} + +*Result---status* + +{% itemplate ntpd1 %} +- n: "result" + t: "bool" + p: "Required
    (exactly 1)" + d: "True or false depending on success" + +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum isconflicting 1 \ + "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" +{% endhighlight %} + +Result: +{% highlight json %} +false +{% endhighlight %} + +{% endautocrossref %} + +{% autocrossref %} + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index e7e0ed55..f09fbb1a 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -112,6 +112,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_privateSend="controls the mixing process." %} {% assign summary_proTx="provides a set of commands to execute ProTx related actions." %} {% assign summary_pruneBlockChain="prunes the blockchain up to a specified height or timestamp." %} +{% assign summary_quorum="provides a set of commands for quorums (LLMQs)." %} {% assign summary_removePrunedFunds="deletes the specified transaction from the wallet. Meant for use with pruned wallets and as a companion to importprunedfunds." %} {% assign summary_restGetBlock-noTxDetails="gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. The JSON object includes TXIDs for transactions within the block rather than the complete transactions [GET block][rest get block] returns." %} {% assign summary_restGetBlock="gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 383c7f34..9625857f 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -251,7 +251,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash GObject Y - Updated in 0.13.0.0 + Updated in 0.14.0 Dash @@ -305,13 +305,19 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Evolution BLS Y - Added in 0.13.0 + Updated in 0.14.0 Evolution ProTx Y - Updated in 0.13.2 + Updated in 0.14.0 + + + Evolution + Quorum + Y + Added in 0.14.0 Generating @@ -779,7 +785,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ListUnspent Y - Updated in 0.12.3.0 + Updated in 0.14.0 Wallet diff --git a/_includes/references.md b/_includes/references.md index 55ca041c..83022c0a 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -180,6 +180,7 @@ http://opensource.org/licenses/MIT. [rpc pruneblockchain]: /en/developer-reference#pruneblockchain [rpc prioritisetransaction]: /en/developer-reference#prioritisetransaction [rpc privatesend]: /en/developer-reference#privatesend +[rpc quorum]: /en/developer-reference#quorum [rpc removeprunedfunds]: /en/developer-reference#removeprunedfunds [rpc sendfrom]: /en/developer-reference#sendfrom [rpc sendmany]: /en/developer-reference#sendmany diff --git a/en/developer-reference.md b/en/developer-reference.md index 4ed0585e..3fb85fb0 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -294,6 +294,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/pruneblockchain.md %} +{% include devdoc/dash-core/rpcs/rpcs/quorum.md %} + {% include devdoc/dash-core/rpcs/rpcs/removeprunedfunds.md %} {% include devdoc/dash-core/rpcs/rpcs/sendfrom.md %} From 83ddb982e75d5642df8eec6bd259df61d414e2a0 Mon Sep 17 00:00:00 2001 From: thephez Date: Fri, 12 Apr 2019 10:44:57 -0400 Subject: [PATCH 061/117] V0.14.0 P2P Add hexdumps for new misc and signing session messages (#117) * P2P - Add SendDsq hexdump * P2P - Add MnAuth hexdump Minor typo corrections * P2P - Add islock hexdump Added description of islock message * Fix islock hexdump typo * P2P - Add qsendrecsigs hexdump * P2P - Add qsigrec hexdump This is the qsigrec corresponding to the islock example hexdump * P2P - Add qsigsesann hexdump * P2P - Add qsigsinv hexdump (partial) * P2P - Add more qbsigs details * P2P - Update qsigsinv example to match qbsigs * P2P - Update qsigsesann example to match qbsigs * P2P - qbsig example update * P2P - Add partial qgetsigs info * Content - Add overview for quorum DKG and Signing messages * P2P - Add clsig hexdump --- _includes/devdoc/ref_p2p_networking.md | 247 ++++++++++++++++++++----- 1 file changed, 203 insertions(+), 44 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 73720d33..d72f733f 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1751,18 +1751,15 @@ wallet) to minimize data usage. | --- | --- | --- | --- | | 1 | fSendDSQueue | bool | 0 - Notify peer to not send any `dsq` messages
    1 - Notify peer to send all `dsq` messages - {% endautocrossref %} - #### SendHeaders {% include helpers/subhead-links.md %} @@ -1960,7 +1957,15 @@ the Developer Guide [InstantSend section](developer-guide#instantsend +{% highlight text %} +c1310100 ................................... Block Height: 78273 + +03bb286a877135fad3b33ea9cce9a525 +e5edc0879411afaff513b30100000000 ........... Block Hash + +12a3331fd8d0008804edaaf94c57b491 +d36f38f1993d06dfff71df9ec83da463 +dcd5497d105932e609016dac075f02df +1259951e3bcebfcc26afc904f6cd92df +7ff9b8c6c2ac9dcc9cb1a7dc7ec03bcc +005574710c3aabc2f8670959cf8bc9b5 ........... LLMQ BLS Signature {% endhighlight %} ---> {% endautocrossref %} #### islock @@ -1986,24 +2003,45 @@ message header has been omitted.) *Added in protocol version 70214 of Dash Core* -The `islock` message is used to... +The `islock` message is used to provide details of transactions that have been +locked by LLMQ-based InstantSend. The message includes the details of all +transaction inputs along with the transaction ID and the BLS signature of the +LLMQ that approved the transaction lock. | Bytes | Name | Data type | Description | | --- | --- | --- | --- | -| 1-9 | inputsSize | compactSize uint | Number of inputs| +| 1-9 | inputsSize | compactSize uint | Number of inputs | | 36 * `inputsSize`| inputs | COutPoint | Outpoints used in the transaction | | 32 | txid | uint256 | TXID of the locked transaction | | 96 | sig | byte[] | LLMQ BLS Signature | - {% endautocrossref %} #### ix @@ -2785,7 +2823,7 @@ The `mnauth` message is sent by a masternode immediately after sending a sent when the sender is actually a masternode. The `mnauth` message signs a challenge that was previously sent via a -`version` message. The challenge is signed differently depending on depending on +`version` message. The challenge is signed differently depending on if the connection is inbound or outbound. This is primarily used as a DoS protection mechanism to allow persistent @@ -2794,18 +2832,24 @@ are reached. | Bytes | Name | Data type | Description | | --- | --- | --- | --- | -| 2 | proRegTxHash | uint256 | Version of the message +| 32 | proRegTxHash | uint256 | Version of the message | 96 | sig | byte[] | BLS signature, signed with the operator key of the masternode - {% endautocrossref %} @@ -2892,6 +2936,11 @@ section][section message header] for an example of a message without a payload. #### Distributed Key Generation {% include helpers/subhead-links.md %} +The following network messages enable the creation of long living masternode +quorums (LLMQs) as described in [DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md). + +With the exception of the `qfcommit` message, these messages are for intra-quorum +communication only and are not propagated on the Dash network. ##### qcontrib {% include helpers/subhead-links.md %} @@ -3104,6 +3153,12 @@ message header has been omitted.) #### Signing Sessions {% include helpers/subhead-links.md %} +The following network messages enable the long living masternode quorum (LLMQ) +message signing sessions described in [DIP7](https://github.com/dashpay/dips/blob/master/dip-0007.md). + +With the exception of the `qsendrecsigs` message and the `qsigrec` message, +these messages are for intra-quorum communication only and are not +propagated on the Dash network. ##### qbsigs {% include helpers/subhead-links.md %} @@ -3124,24 +3179,59 @@ Note: The number of messages that can be sent in a batch is limited to 400 | Bytes | Name | Data type | Description | | --- | --- | --- | --- | -| Varies | msgs | CBatchedSigShares | Batches of signature shares +| Varies | batchCount | compactSize uint | Number of batched signature shares | +| Varies | msgs | CBatchedSigShares | Batches of signature shares | CBatchedSigShares: | Bytes | Name | Data type | Description | | --- | --- | --- | --- | -| 4 | sessionId | uint32_t | Signing session ID -| | sigShares | | +| Varies | sessionId | varint | Signing session ID | +| Varies | shareCount | compactSize uint | Number of shares | +| shareCount * 98 | sigShares | | Index (2 bytes) and BLS Signature share (96 bytes) | - +{% highlight text %} +02 ......................................... Number of signature share batches: 2 + +Signature Share Batch 1 +| 84d843 ................................... Session ID +| +| 01 ....................................... Share count: 1 +| +| Share +| | 2100 ................................... Index +| +| | 0fbd0c0981b79544c3e80d1a2eed13fe +| | f08c731b0156654675209812f9b2b8f3 +| | ec23868d26890a0e85e5cec4ad0e2d46 +| | 01293cf7e41841fda5865063e7354f36 +| | e8a5c13d2c2d265a778f41e807b3cc63 +| | 81e202ecf923c62bbb69ecc713bdf86d ....... BLS Signature share + +Signature Share Batch 2 +| 84d844 ................................... Session ID +| +| 01 ....................................... Share Count: 1 +| +| Share +| | 2100 ................................... Index +| | +| | 9570d97e41b78045b51fba3d4f1ea38d +| | 7a0e007535ce6beb1e03eff163b421fd +| | b8125142a12f92aa82770de7bb038207 +| | 13ccc72dd6d9bf91ecc2835da54a0afb +| | 0c0fa5d7a214a020ca650ca202ddff29 +| | c3cac4033098297d2aaee098db5bfe2f ....... BLS Signature share {% endhighlight %} ---> {% endautocrossref %} @@ -3164,19 +3254,29 @@ Note: The number of inventories in a `qgetsigs` message is limited to 200 | Bytes | Name | Data type | Description | | --- | --- | --- | --- | -| 4 | sessionId | uint32_t | Signing session ID -| 1-9 | invSize | compactSize uint | Number of inventory -| * `invSize` | inv | | Signing shares +| Varies | count | compactSize uint | Number of signature shares requested | +| Varies | sessionId | varint | Signing session ID +| Varies | inv | | Quorum signature inventory | - +{% highlight text %} +02 ......................................... Count: 2 + +Signature share request 1 +| 80db21 ................................... Session ID +| 32012900 ................................. Inventory + +Signature share request 2 +| 80db22 ................................... Session ID +| 32012900 ................................. Inventory {% endhighlight %} ---> {% endautocrossref %} @@ -3199,15 +3299,13 @@ in the higher level messages. | --- | --- | --- | --- | | 1 | fSendRecSigs | bool | 0 - Notify peer to not send plain LLMQ recovered signatures
    1 - Notify peer to send plain LLMQ recovered signatures (default for Dash Core nodes) - {% endautocrossref %} @@ -3231,15 +3329,33 @@ details to nodes that have requested this information via the `qsendrecsigs` mes More information can be found in the [Recovered threshold signatures section of DIP7](https://github.com/dashpay/dips/blob/master/dip-0007.md#recovered-threshold-signatures). - {% endautocrossref %} @@ -3263,21 +3379,53 @@ Note: The maximum number of announcements in a `qsigsesann` message is limited t | Bytes | Name | Data type | Description | | --- | --- | --- | --- | -| 4 | sessionId | uint32_t | Signing session ID (must be less than the maximum uint32_t value) +| Varies | count | compactSize uint | Number of session announcements | +| Varies | sessionId | varint | Signing session ID (must be less than the maximum uint32_t value) | 1 | llmqType | uint8_t | The LLMQ type | 32 | quorumHash | uint256 | The quorum identifier | 32 | id | uint256 | The signing request id | 32 | msgHash | uint256 | The message hash - +{% highlight text %} +02 ......................................... Count: 2 + +Session Announcement 1 +| 84d843 ................................... Session ID +| +| 01 ....................................... LLMQ Type: 1 (LLMQ_50_60) +| +| a34d3ae6b33cb1199c3e5e1cb5a2a55c +| 91e69bb5df2bf80ba1cb0a0d00000000 ......... Quorum Hash +| +| 89bbc2e5741a9f706e8d33dee4132037 +| 8c33511768c5e3d6cdb2a1b7b731360b ......... Signing request ID +| +| d2b41a19237e370b4b091545b203bc0c +| 02ca7e0d5daebf12bb24b13064ed4149 ......... Message Hash + +Session Announcement 2 +| 84d844 ................................... Session ID +| +| 01 ....................................... LLMQ Type: 1 (LLMQ_50_60) +| +| a34d3ae6b33cb1199c3e5e1cb5a2a55c +| 91e69bb5df2bf80ba1cb0a0d00000000 ......... Quorum Hash +| +| 54f73deb42a8ed9b72b9c0535a72f54d +| 5789bbe0dbea2e184c3089f9e8f65c3e ......... Signing request ID +| +| af2e5d730cd37cd911b92db117b4ab99 +| 90a3c0300ce39177d0d31be5b47c2361 ......... Message Hash {% endhighlight %} ---> {% endautocrossref %} @@ -3298,21 +3446,32 @@ signature share inventories known by the transmitting peer. Note: The maximum number of inventories in a `qsigsinv` message is limited to 200 (as defined by `MAX_MSGS_CNT_QSIGSHARESINV`). + + | Bytes | Name | Data type | Description | | --- | --- | --- | --- | -| 4 | sessionId | uint32_t | Signing session ID (must be less than the maximum uint32_t value) -| 8 | invSize | uint64_t | -| | inv | | +| Varies | count | compactSize uint | Number of session announcements | +| Varies | sessionId | varint | Signing session ID (must be less than the maximum uint32_t value) | +| Varies | inv | | Quorum signature inventory | - +{% highlight text %} +02 ......................................... Count: 2 + +84d844 ..................................... Session ID +32011a040200 ............................... Inventory + +84d843 ..................................... Session ID +32011a0700 ................................. Inventory {% endhighlight %} ---> {% endautocrossref %} From 37a929ff62e13a40f33902fc269e7f7e1d382ea1 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 15 Apr 2019 16:04:31 -0400 Subject: [PATCH 062/117] V0.14.0 Add quorum dkg message examples (#118) * P2P - Add qpcommit hexdump and corrections * P2P - Add qfcommit hexdump * RPC - Update quorum dkgstatus example * P2P - Add qcomplaint hexdump * P2P - Add qcontrib hexdump and missing fields * P2P - Add qjustify parial example hexdump (need actual data) --- .../devdoc/dash-core/rpcs/rpcs/quorum.md | 747 ++++++++++++++++-- _includes/devdoc/ref_p2p_networking.md | 181 ++++- 2 files changed, 870 insertions(+), 58 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md index eab7f3cd..58489f86 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md @@ -547,30 +547,39 @@ Result: {% highlight json %} { "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", - "time": 1554817777, - "timeStr": "2019-04-09 13:49:37", + "time": 1555172494, + "timeStr": "2019-04-13 16:21:34", "session": { "llmq_50_60": { "llmqType": 1, - "quorumHash": "0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a", - "quorumHeight": 76728, + "quorumHash": "000000000122768294b19a5f6750094f6e9caa135c0826372d0538d4ceb910bc", + "quorumHeight": 79368, "phase": 6, "sentContributions": true, "sentComplaint": true, "sentJustification": false, "sentPrematureCommitment": true, "aborted": false, - "badMembers": 1, + "badMembers": 2, "weComplain": 0, - "receivedContributions": 49, - "receivedComplaints": 50, + "receivedContributions": 48, + "receivedComplaints": 44, "receivedJustifications": 0, - "receivedPrematureCommitments": 49 + "receivedPrematureCommitments": 44 } }, "minableCommitments": { + "llmq_50_60": { + "version": 1, + "llmqType": 1, + "quorumHash": "000000000122768294b19a5f6750094f6e9caa135c0826372d0538d4ceb910bc", + "signersCount": 0, + "validMembersCount": 0, + "quorumPublicKey": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } } } +p {% endhighlight %} {% endautocrossref %} @@ -581,17 +590,17 @@ Result: dash-cli -testnet quorum dkgstatus "" 1 {% endhighlight %} -Result (truncated): +Result: {% highlight json %} { "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", - "time": 1554817777, - "timeStr": "2019-04-09 13:49:37", + "time": 1555172494, + "timeStr": "2019-04-13 16:21:34", "session": { "llmq_50_60": { "llmqType": 1, - "quorumHash": "0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a", - "quorumHeight": 76728, + "quorumHash": "000000000122768294b19a5f6750094f6e9caa135c0826372d0538d4ceb910bc", + "quorumHeight": 79368, "phase": 6, "sentContributions": true, "sentComplaint": true, @@ -599,7 +608,8 @@ Result (truncated): "sentPrematureCommitment": true, "aborted": false, "badMembers": [ - 25 + 35, + 42 ], "weComplain": [ ], @@ -608,6 +618,47 @@ Result (truncated): 1, 2, 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 36, + 37, + 38, + 39, + 40, + 41, + 43, + 44, + 45, + 46, 47, 48, 49 @@ -617,6 +668,43 @@ Result (truncated): 1, 2, 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 36, + 37, + 38, + 39, + 40, + 41, + 43, + 44, + 45, + 46, 47, 48, 49 @@ -628,6 +716,43 @@ Result (truncated): 1, 2, 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 36, + 37, + 38, + 39, + 40, + 41, + 43, + 44, + 45, + 46, 47, 48, 49 @@ -635,6 +760,14 @@ Result (truncated): } }, "minableCommitments": { + "llmq_50_60": { + "version": 1, + "llmqType": 1, + "quorumHash": "000000000122768294b19a5f6750094f6e9caa135c0826372d0538d4ceb910bc", + "signersCount": 0, + "validMembersCount": 0, + "quorumPublicKey": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } } } {% endhighlight %} @@ -645,17 +778,17 @@ Result (truncated): dash-cli -testnet quorum dkgstatus "" 2 {% endhighlight %} -Result (truncated): +Result: {% highlight json %} { "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", - "time": 1554817777, - "timeStr": "2019-04-09 13:49:37", + "time": 1555172494, + "timeStr": "2019-04-13 16:21:34", "session": { "llmq_50_60": { "llmqType": 1, - "quorumHash": "0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a", - "quorumHeight": 76728, + "quorumHash": "000000000122768294b19a5f6750094f6e9caa135c0826372d0538d4ceb910bc", + "quorumHeight": 79368, "phase": 6, "sentContributions": true, "sentComplaint": true, @@ -664,8 +797,12 @@ Result (truncated): "aborted": false, "badMembers": [ { - "memberIndex": 25, - "proTxHash": "ebf4b6337e25b975eb23ba6d113f94882196d7259749acaad952acf48025f590" + "memberIndex": 35, + "proTxHash": "c24aea30305d539887223fd923df775644b1d86db0aac8c654026e823b549cd7" + }, + { + "memberIndex": 42, + "proTxHash": "f0567069d4f2a2e536e46173a097b318daf03edef989f6875ca06f5c4d49abc9" } ], "weComplain": [ @@ -673,61 +810,373 @@ Result (truncated): "receivedContributions": [ { "memberIndex": 0, - "proTxHash": "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5" + "proTxHash": "a6670caf2842a4ae5cb4bb78b3c10343456922b500693f6da043af541d58d9cb" }, { "memberIndex": 1, - "proTxHash": "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121" + "proTxHash": "77c0615fb5eb946f7f731a44eb36dc37ee77bf959e7205937d88186cacfbdc7e" }, { "memberIndex": 2, - "proTxHash": "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4" + "proTxHash": "8070c631ce9ac8850d2e95d4ed7be70171ead22ccd7f4bc9c3aee0a227f323c9" }, { "memberIndex": 3, - "proTxHash": "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb" + "proTxHash": "596be0851532a66037744afa694e4de6485f326f4638e704db93cc726866cda3" + }, + { + "memberIndex": 4, + "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + }, + { + "memberIndex": 5, + "proTxHash": "9f4f9f83ecbcd5739d7f1479ee14b508f2414d044a717acba0960566c4e6091d" + }, + { + "memberIndex": 6, + "proTxHash": "21c0923badd20f953360c586edfcbb1a830be83206e30b3f65765f7794f2a640" + }, + { + "memberIndex": 7, + "proTxHash": "cc36055f36345b85a2b8176e79feff0ff822c490691c7f8e8d3348b4b1a1d8ac" + }, + { + "memberIndex": 8, + "proTxHash": "4636ed7acbacbc76aba60aa7a1011688fe9ad5fd701d0bf8fc42a502ea3e6543" + }, + { + "memberIndex": 9, + "proTxHash": "32e5ad5cf9a06eb13e0f65cb7ecde1a93ef24995d07355fac2ff05ebd5b9ddbf" + }, + { + "memberIndex": 10, + "proTxHash": "0022afbe93054ca11ce9b67892661af4558597bacff0ab82bff05a2b4a89ca2d" + }, + { + "memberIndex": 11, + "proTxHash": "2523dc6e034911b9004862e87b4d23a32ed6198aec177915df7893f51cd645bd" + }, + { + "memberIndex": 12, + "proTxHash": "abe5d16432915b201cf6f11299a1abd62e5f69a2c4e8717694d1e42d96dbd580" + }, + { + "memberIndex": 13, + "proTxHash": "f443dd87ec7981e8630ae957f295d9d226d4bd3895f59dbd80b30137a92b3735" + }, + { + "memberIndex": 14, + "proTxHash": "6a5be5c068a0be432b7db0772b25094a59ce1f433dd2df0d410511ac641c3768" + }, + { + "memberIndex": 15, + "proTxHash": "84435c41688c8021a25a644e6b94c9f5159aff5658ee2e12f5cea5c714c21aa3" + }, + { + "memberIndex": 16, + "proTxHash": "2db238aa40837319ca13e27aae4333d1248475546be6cfad985a3785c0ac9bd6" + }, + { + "memberIndex": 17, + "proTxHash": "cefb7c69f75d9fbba21f648c6205bebf9b16325956404c70af03144c1135c7d7" + }, + { + "memberIndex": 18, + "proTxHash": "cc7041c869c7c1c0bae7c137f0cda708ad492bc89c4b8f7a40a353d90335febf" + }, + { + "memberIndex": 19, + "proTxHash": "24e642275f5d5f17f67db502d905153cfd83ffbd3d49c90196ec01200917fb31" + }, + { + "memberIndex": 20, + "proTxHash": "bc5c77926b0ccfcb742123a1edf2c27147888f694701df399982a862309921c8" + }, + { + "memberIndex": 21, + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63" + }, + { + "memberIndex": 22, + "proTxHash": "11eabc1e72394af02bbe86815975d054816fe69006fdc64c6d7a06b585e5c311" + }, + { + "memberIndex": 23, + "proTxHash": "71cf5017c4c5f69db5c17a8cfb4c28ffc14ad1715dba2a83f0c30e534291f828" + }, + { + "memberIndex": 24, + "proTxHash": "d567ac9cc7437848210365a0225271ec26a6a6c7d852544a6e9cbd40756075b3" + }, + { + "memberIndex": 25, + "proTxHash": "16ef804605595f67a0e078f7ffbdd93ac55bcd22d9094cb8b61ef527c48f4c44" + }, + { + "memberIndex": 26, + "proTxHash": "f51b426420ac4c518ad07c2bb03e434389337b4e2977d39233114d5e8ef21f69" + }, + { + "memberIndex": 27, + "proTxHash": "2460848868c210d23c68460050f83f47a7ad00db2c47ad6f223a9b1eb04c8d54" + }, + { + "memberIndex": 28, + "proTxHash": "49d94e4c584929320cfe159faf4f6e398f1b2d1fdaa413c01345ce23870d2ca9" + }, + { + "memberIndex": 29, + "proTxHash": "e8b039ce3f1016b7caf781d1b0efbc11191860ec3b131fc49591402a260ba638" + }, + { + "memberIndex": 30, + "proTxHash": "5ab82a5348b5d4c126b0c172665d364352be37c96ce442e710d4a844a6f80bf9" + }, + { + "memberIndex": 31, + "proTxHash": "05b83104eea971582c803ded305109ecb734b582da93b8e301c6f00d6be6c496" + }, + { + "memberIndex": 32, + "proTxHash": "c98c6303af03f7f3b2673ceece962134088e5dcc3c69a0977069c6201b26dc9b" + }, + { + "memberIndex": 33, + "proTxHash": "f933d592d677f3409274646ddea2ffaaca77dfd4ceab7c54037a04e05fc7ee8b" + }, + { + "memberIndex": 34, + "proTxHash": "5d40e68f65e7263d91e114b644ff7f8c9c376db63550d5ef9bc4228870c4f053" + }, + { + "memberIndex": 36, + "proTxHash": "a36edfac56f7f1b0f58aa793115fbd53d792315857033fb32a862507a3f060ff" + }, + { + "memberIndex": 37, + "proTxHash": "c9d43a69bd9effdaed579edc901c5d848711481047c9cc76bad8232d8f329dcd" + }, + { + "memberIndex": 38, + "proTxHash": "d82152084615c73d79f3eb8b0ec6a61e6d0f94c4cdcf26f773f0e42b72176f6f" + }, + { + "memberIndex": 39, + "proTxHash": "869f7f2054a6ed4241967afb74c3b1a07701d2772b368eb0bbfd2e3365adf6f3" + }, + { + "memberIndex": 40, + "proTxHash": "5f1a70a350d21f673d93fae45a50c0362947366e46c96bade51b7933f0cada3e" + }, + { + "memberIndex": 41, + "proTxHash": "024608d03beb6a6065f14a29a837c68ae449ac1e17056819366ca0b72b6dd81f" + }, + { + "memberIndex": 43, + "proTxHash": "254bcd3b28d696ce9d468cd521e6be3f7eb01da32d8bf9fdf34868baaf09d9e7" + }, + { + "memberIndex": 44, + "proTxHash": "0ae626ed4ee06c1f042b2eaa9669302a2e60a0df8137843b39de53f2c3e265aa" + }, + { + "memberIndex": 45, + "proTxHash": "cfa6f7b58c78f827c15e8f1b6a5a2a3a92140101719006d8226a363e2c0c8e5c" + }, + { + "memberIndex": 46, + "proTxHash": "03811a53a20289799f56227f576915492d2cede48522cd1b3f67c6c89cdacf83" }, { "memberIndex": 47, - "proTxHash": "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1" + "proTxHash": "f989866b2fadb674a1ca63746ff8bb97232d6843c95f9e805b8bc2a5ae8e768d" }, { "memberIndex": 48, - "proTxHash": "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2" + "proTxHash": "9de76b8291d00026ab0af86306023c7b90f8e9229dc04916fe1335bf5e11f15d" }, { "memberIndex": 49, - "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + "proTxHash": "e441bbb2f056d471ae9fad83b4dd0fa691a0574eb4a373a0e59d6108614ee07e" } ], "receivedComplaints": [ { "memberIndex": 0, - "proTxHash": "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5" + "proTxHash": "a6670caf2842a4ae5cb4bb78b3c10343456922b500693f6da043af541d58d9cb" }, { "memberIndex": 1, - "proTxHash": "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121" + "proTxHash": "77c0615fb5eb946f7f731a44eb36dc37ee77bf959e7205937d88186cacfbdc7e" }, { "memberIndex": 2, - "proTxHash": "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4" + "proTxHash": "8070c631ce9ac8850d2e95d4ed7be70171ead22ccd7f4bc9c3aee0a227f323c9" }, { "memberIndex": 3, - "proTxHash": "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb" + "proTxHash": "596be0851532a66037744afa694e4de6485f326f4638e704db93cc726866cda3" + }, + { + "memberIndex": 4, + "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + }, + { + "memberIndex": 5, + "proTxHash": "9f4f9f83ecbcd5739d7f1479ee14b508f2414d044a717acba0960566c4e6091d" + }, + { + "memberIndex": 6, + "proTxHash": "21c0923badd20f953360c586edfcbb1a830be83206e30b3f65765f7794f2a640" + }, + { + "memberIndex": 7, + "proTxHash": "cc36055f36345b85a2b8176e79feff0ff822c490691c7f8e8d3348b4b1a1d8ac" + }, + { + "memberIndex": 8, + "proTxHash": "4636ed7acbacbc76aba60aa7a1011688fe9ad5fd701d0bf8fc42a502ea3e6543" + }, + { + "memberIndex": 9, + "proTxHash": "32e5ad5cf9a06eb13e0f65cb7ecde1a93ef24995d07355fac2ff05ebd5b9ddbf" + }, + { + "memberIndex": 10, + "proTxHash": "0022afbe93054ca11ce9b67892661af4558597bacff0ab82bff05a2b4a89ca2d" + }, + { + "memberIndex": 11, + "proTxHash": "2523dc6e034911b9004862e87b4d23a32ed6198aec177915df7893f51cd645bd" + }, + { + "memberIndex": 12, + "proTxHash": "abe5d16432915b201cf6f11299a1abd62e5f69a2c4e8717694d1e42d96dbd580" + }, + { + "memberIndex": 14, + "proTxHash": "6a5be5c068a0be432b7db0772b25094a59ce1f433dd2df0d410511ac641c3768" + }, + { + "memberIndex": 15, + "proTxHash": "84435c41688c8021a25a644e6b94c9f5159aff5658ee2e12f5cea5c714c21aa3" + }, + { + "memberIndex": 16, + "proTxHash": "2db238aa40837319ca13e27aae4333d1248475546be6cfad985a3785c0ac9bd6" + }, + { + "memberIndex": 17, + "proTxHash": "cefb7c69f75d9fbba21f648c6205bebf9b16325956404c70af03144c1135c7d7" + }, + { + "memberIndex": 18, + "proTxHash": "cc7041c869c7c1c0bae7c137f0cda708ad492bc89c4b8f7a40a353d90335febf" + }, + { + "memberIndex": 19, + "proTxHash": "24e642275f5d5f17f67db502d905153cfd83ffbd3d49c90196ec01200917fb31" + }, + { + "memberIndex": 20, + "proTxHash": "bc5c77926b0ccfcb742123a1edf2c27147888f694701df399982a862309921c8" + }, + { + "memberIndex": 21, + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63" + }, + { + "memberIndex": 24, + "proTxHash": "d567ac9cc7437848210365a0225271ec26a6a6c7d852544a6e9cbd40756075b3" + }, + { + "memberIndex": 25, + "proTxHash": "16ef804605595f67a0e078f7ffbdd93ac55bcd22d9094cb8b61ef527c48f4c44" + }, + { + "memberIndex": 26, + "proTxHash": "f51b426420ac4c518ad07c2bb03e434389337b4e2977d39233114d5e8ef21f69" + }, + { + "memberIndex": 27, + "proTxHash": "2460848868c210d23c68460050f83f47a7ad00db2c47ad6f223a9b1eb04c8d54" + }, + { + "memberIndex": 28, + "proTxHash": "49d94e4c584929320cfe159faf4f6e398f1b2d1fdaa413c01345ce23870d2ca9" + }, + { + "memberIndex": 29, + "proTxHash": "e8b039ce3f1016b7caf781d1b0efbc11191860ec3b131fc49591402a260ba638" + }, + { + "memberIndex": 30, + "proTxHash": "5ab82a5348b5d4c126b0c172665d364352be37c96ce442e710d4a844a6f80bf9" + }, + { + "memberIndex": 31, + "proTxHash": "05b83104eea971582c803ded305109ecb734b582da93b8e301c6f00d6be6c496" + }, + { + "memberIndex": 33, + "proTxHash": "f933d592d677f3409274646ddea2ffaaca77dfd4ceab7c54037a04e05fc7ee8b" + }, + { + "memberIndex": 34, + "proTxHash": "5d40e68f65e7263d91e114b644ff7f8c9c376db63550d5ef9bc4228870c4f053" + }, + { + "memberIndex": 36, + "proTxHash": "a36edfac56f7f1b0f58aa793115fbd53d792315857033fb32a862507a3f060ff" + }, + { + "memberIndex": 37, + "proTxHash": "c9d43a69bd9effdaed579edc901c5d848711481047c9cc76bad8232d8f329dcd" + }, + { + "memberIndex": 38, + "proTxHash": "d82152084615c73d79f3eb8b0ec6a61e6d0f94c4cdcf26f773f0e42b72176f6f" + }, + { + "memberIndex": 39, + "proTxHash": "869f7f2054a6ed4241967afb74c3b1a07701d2772b368eb0bbfd2e3365adf6f3" + }, + { + "memberIndex": 40, + "proTxHash": "5f1a70a350d21f673d93fae45a50c0362947366e46c96bade51b7933f0cada3e" + }, + { + "memberIndex": 41, + "proTxHash": "024608d03beb6a6065f14a29a837c68ae449ac1e17056819366ca0b72b6dd81f" + }, + { + "memberIndex": 43, + "proTxHash": "254bcd3b28d696ce9d468cd521e6be3f7eb01da32d8bf9fdf34868baaf09d9e7" + }, + { + "memberIndex": 44, + "proTxHash": "0ae626ed4ee06c1f042b2eaa9669302a2e60a0df8137843b39de53f2c3e265aa" + }, + { + "memberIndex": 45, + "proTxHash": "cfa6f7b58c78f827c15e8f1b6a5a2a3a92140101719006d8226a363e2c0c8e5c" + }, + { + "memberIndex": 46, + "proTxHash": "03811a53a20289799f56227f576915492d2cede48522cd1b3f67c6c89cdacf83" }, { "memberIndex": 47, - "proTxHash": "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1" + "proTxHash": "f989866b2fadb674a1ca63746ff8bb97232d6843c95f9e805b8bc2a5ae8e768d" }, { "memberIndex": 48, - "proTxHash": "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2" + "proTxHash": "9de76b8291d00026ab0af86306023c7b90f8e9229dc04916fe1335bf5e11f15d" }, { "memberIndex": 49, - "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + "proTxHash": "e441bbb2f056d471ae9fad83b4dd0fa691a0574eb4a373a0e59d6108614ee07e" } ], "receivedJustifications": [ @@ -735,46 +1184,244 @@ Result (truncated): "receivedPrematureCommitments": [ { "memberIndex": 0, - "proTxHash": "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5" + "proTxHash": "a6670caf2842a4ae5cb4bb78b3c10343456922b500693f6da043af541d58d9cb" }, { "memberIndex": 1, - "proTxHash": "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121" + "proTxHash": "77c0615fb5eb946f7f731a44eb36dc37ee77bf959e7205937d88186cacfbdc7e" }, { "memberIndex": 2, - "proTxHash": "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4" + "proTxHash": "8070c631ce9ac8850d2e95d4ed7be70171ead22ccd7f4bc9c3aee0a227f323c9" }, { "memberIndex": 3, - "proTxHash": "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb" + "proTxHash": "596be0851532a66037744afa694e4de6485f326f4638e704db93cc726866cda3" + }, + { + "memberIndex": 4, + "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + }, + { + "memberIndex": 5, + "proTxHash": "9f4f9f83ecbcd5739d7f1479ee14b508f2414d044a717acba0960566c4e6091d" + }, + { + "memberIndex": 6, + "proTxHash": "21c0923badd20f953360c586edfcbb1a830be83206e30b3f65765f7794f2a640" + }, + { + "memberIndex": 7, + "proTxHash": "cc36055f36345b85a2b8176e79feff0ff822c490691c7f8e8d3348b4b1a1d8ac" + }, + { + "memberIndex": 8, + "proTxHash": "4636ed7acbacbc76aba60aa7a1011688fe9ad5fd701d0bf8fc42a502ea3e6543" + }, + { + "memberIndex": 9, + "proTxHash": "32e5ad5cf9a06eb13e0f65cb7ecde1a93ef24995d07355fac2ff05ebd5b9ddbf" + }, + { + "memberIndex": 10, + "proTxHash": "0022afbe93054ca11ce9b67892661af4558597bacff0ab82bff05a2b4a89ca2d" + }, + { + "memberIndex": 11, + "proTxHash": "2523dc6e034911b9004862e87b4d23a32ed6198aec177915df7893f51cd645bd" + }, + { + "memberIndex": 12, + "proTxHash": "abe5d16432915b201cf6f11299a1abd62e5f69a2c4e8717694d1e42d96dbd580" + }, + { + "memberIndex": 14, + "proTxHash": "6a5be5c068a0be432b7db0772b25094a59ce1f433dd2df0d410511ac641c3768" + }, + { + "memberIndex": 15, + "proTxHash": "84435c41688c8021a25a644e6b94c9f5159aff5658ee2e12f5cea5c714c21aa3" + }, + { + "memberIndex": 16, + "proTxHash": "2db238aa40837319ca13e27aae4333d1248475546be6cfad985a3785c0ac9bd6" + }, + { + "memberIndex": 17, + "proTxHash": "cefb7c69f75d9fbba21f648c6205bebf9b16325956404c70af03144c1135c7d7" + }, + { + "memberIndex": 18, + "proTxHash": "cc7041c869c7c1c0bae7c137f0cda708ad492bc89c4b8f7a40a353d90335febf" + }, + { + "memberIndex": 19, + "proTxHash": "24e642275f5d5f17f67db502d905153cfd83ffbd3d49c90196ec01200917fb31" + }, + { + "memberIndex": 20, + "proTxHash": "bc5c77926b0ccfcb742123a1edf2c27147888f694701df399982a862309921c8" + }, + { + "memberIndex": 21, + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63" + }, + { + "memberIndex": 24, + "proTxHash": "d567ac9cc7437848210365a0225271ec26a6a6c7d852544a6e9cbd40756075b3" + }, + { + "memberIndex": 25, + "proTxHash": "16ef804605595f67a0e078f7ffbdd93ac55bcd22d9094cb8b61ef527c48f4c44" + }, + { + "memberIndex": 26, + "proTxHash": "f51b426420ac4c518ad07c2bb03e434389337b4e2977d39233114d5e8ef21f69" + }, + { + "memberIndex": 27, + "proTxHash": "2460848868c210d23c68460050f83f47a7ad00db2c47ad6f223a9b1eb04c8d54" + }, + { + "memberIndex": 28, + "proTxHash": "49d94e4c584929320cfe159faf4f6e398f1b2d1fdaa413c01345ce23870d2ca9" + }, + { + "memberIndex": 29, + "proTxHash": "e8b039ce3f1016b7caf781d1b0efbc11191860ec3b131fc49591402a260ba638" + }, + { + "memberIndex": 30, + "proTxHash": "5ab82a5348b5d4c126b0c172665d364352be37c96ce442e710d4a844a6f80bf9" + }, + { + "memberIndex": 31, + "proTxHash": "05b83104eea971582c803ded305109ecb734b582da93b8e301c6f00d6be6c496" + }, + { + "memberIndex": 33, + "proTxHash": "f933d592d677f3409274646ddea2ffaaca77dfd4ceab7c54037a04e05fc7ee8b" + }, + { + "memberIndex": 34, + "proTxHash": "5d40e68f65e7263d91e114b644ff7f8c9c376db63550d5ef9bc4228870c4f053" + }, + { + "memberIndex": 36, + "proTxHash": "a36edfac56f7f1b0f58aa793115fbd53d792315857033fb32a862507a3f060ff" + }, + { + "memberIndex": 37, + "proTxHash": "c9d43a69bd9effdaed579edc901c5d848711481047c9cc76bad8232d8f329dcd" + }, + { + "memberIndex": 38, + "proTxHash": "d82152084615c73d79f3eb8b0ec6a61e6d0f94c4cdcf26f773f0e42b72176f6f" + }, + { + "memberIndex": 39, + "proTxHash": "869f7f2054a6ed4241967afb74c3b1a07701d2772b368eb0bbfd2e3365adf6f3" + }, + { + "memberIndex": 40, + "proTxHash": "5f1a70a350d21f673d93fae45a50c0362947366e46c96bade51b7933f0cada3e" + }, + { + "memberIndex": 41, + "proTxHash": "024608d03beb6a6065f14a29a837c68ae449ac1e17056819366ca0b72b6dd81f" + }, + { + "memberIndex": 43, + "proTxHash": "254bcd3b28d696ce9d468cd521e6be3f7eb01da32d8bf9fdf34868baaf09d9e7" + }, + { + "memberIndex": 44, + "proTxHash": "0ae626ed4ee06c1f042b2eaa9669302a2e60a0df8137843b39de53f2c3e265aa" + }, + { + "memberIndex": 45, + "proTxHash": "cfa6f7b58c78f827c15e8f1b6a5a2a3a92140101719006d8226a363e2c0c8e5c" + }, + { + "memberIndex": 46, + "proTxHash": "03811a53a20289799f56227f576915492d2cede48522cd1b3f67c6c89cdacf83" }, { "memberIndex": 47, - "proTxHash": "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1" + "proTxHash": "f989866b2fadb674a1ca63746ff8bb97232d6843c95f9e805b8bc2a5ae8e768d" }, { "memberIndex": 48, - "proTxHash": "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2" + "proTxHash": "9de76b8291d00026ab0af86306023c7b90f8e9229dc04916fe1335bf5e11f15d" }, { "memberIndex": 49, - "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + "proTxHash": "e441bbb2f056d471ae9fad83b4dd0fa691a0574eb4a373a0e59d6108614ee07e" } ], "allMembers": [ - "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5", - "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121", - "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4", - "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb", - "...", - "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1", - "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2", - "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + "a6670caf2842a4ae5cb4bb78b3c10343456922b500693f6da043af541d58d9cb", + "77c0615fb5eb946f7f731a44eb36dc37ee77bf959e7205937d88186cacfbdc7e", + "8070c631ce9ac8850d2e95d4ed7be70171ead22ccd7f4bc9c3aee0a227f323c9", + "596be0851532a66037744afa694e4de6485f326f4638e704db93cc726866cda3", + "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239", + "9f4f9f83ecbcd5739d7f1479ee14b508f2414d044a717acba0960566c4e6091d", + "21c0923badd20f953360c586edfcbb1a830be83206e30b3f65765f7794f2a640", + "cc36055f36345b85a2b8176e79feff0ff822c490691c7f8e8d3348b4b1a1d8ac", + "4636ed7acbacbc76aba60aa7a1011688fe9ad5fd701d0bf8fc42a502ea3e6543", + "32e5ad5cf9a06eb13e0f65cb7ecde1a93ef24995d07355fac2ff05ebd5b9ddbf", + "0022afbe93054ca11ce9b67892661af4558597bacff0ab82bff05a2b4a89ca2d", + "2523dc6e034911b9004862e87b4d23a32ed6198aec177915df7893f51cd645bd", + "abe5d16432915b201cf6f11299a1abd62e5f69a2c4e8717694d1e42d96dbd580", + "f443dd87ec7981e8630ae957f295d9d226d4bd3895f59dbd80b30137a92b3735", + "6a5be5c068a0be432b7db0772b25094a59ce1f433dd2df0d410511ac641c3768", + "84435c41688c8021a25a644e6b94c9f5159aff5658ee2e12f5cea5c714c21aa3", + "2db238aa40837319ca13e27aae4333d1248475546be6cfad985a3785c0ac9bd6", + "cefb7c69f75d9fbba21f648c6205bebf9b16325956404c70af03144c1135c7d7", + "cc7041c869c7c1c0bae7c137f0cda708ad492bc89c4b8f7a40a353d90335febf", + "24e642275f5d5f17f67db502d905153cfd83ffbd3d49c90196ec01200917fb31", + "bc5c77926b0ccfcb742123a1edf2c27147888f694701df399982a862309921c8", + "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", + "11eabc1e72394af02bbe86815975d054816fe69006fdc64c6d7a06b585e5c311", + "71cf5017c4c5f69db5c17a8cfb4c28ffc14ad1715dba2a83f0c30e534291f828", + "d567ac9cc7437848210365a0225271ec26a6a6c7d852544a6e9cbd40756075b3", + "16ef804605595f67a0e078f7ffbdd93ac55bcd22d9094cb8b61ef527c48f4c44", + "f51b426420ac4c518ad07c2bb03e434389337b4e2977d39233114d5e8ef21f69", + "2460848868c210d23c68460050f83f47a7ad00db2c47ad6f223a9b1eb04c8d54", + "49d94e4c584929320cfe159faf4f6e398f1b2d1fdaa413c01345ce23870d2ca9", + "e8b039ce3f1016b7caf781d1b0efbc11191860ec3b131fc49591402a260ba638", + "5ab82a5348b5d4c126b0c172665d364352be37c96ce442e710d4a844a6f80bf9", + "05b83104eea971582c803ded305109ecb734b582da93b8e301c6f00d6be6c496", + "c98c6303af03f7f3b2673ceece962134088e5dcc3c69a0977069c6201b26dc9b", + "f933d592d677f3409274646ddea2ffaaca77dfd4ceab7c54037a04e05fc7ee8b", + "5d40e68f65e7263d91e114b644ff7f8c9c376db63550d5ef9bc4228870c4f053", + "c24aea30305d539887223fd923df775644b1d86db0aac8c654026e823b549cd7", + "a36edfac56f7f1b0f58aa793115fbd53d792315857033fb32a862507a3f060ff", + "c9d43a69bd9effdaed579edc901c5d848711481047c9cc76bad8232d8f329dcd", + "d82152084615c73d79f3eb8b0ec6a61e6d0f94c4cdcf26f773f0e42b72176f6f", + "869f7f2054a6ed4241967afb74c3b1a07701d2772b368eb0bbfd2e3365adf6f3", + "5f1a70a350d21f673d93fae45a50c0362947366e46c96bade51b7933f0cada3e", + "024608d03beb6a6065f14a29a837c68ae449ac1e17056819366ca0b72b6dd81f", + "f0567069d4f2a2e536e46173a097b318daf03edef989f6875ca06f5c4d49abc9", + "254bcd3b28d696ce9d468cd521e6be3f7eb01da32d8bf9fdf34868baaf09d9e7", + "0ae626ed4ee06c1f042b2eaa9669302a2e60a0df8137843b39de53f2c3e265aa", + "cfa6f7b58c78f827c15e8f1b6a5a2a3a92140101719006d8226a363e2c0c8e5c", + "03811a53a20289799f56227f576915492d2cede48522cd1b3f67c6c89cdacf83", + "f989866b2fadb674a1ca63746ff8bb97232d6843c95f9e805b8bc2a5ae8e768d", + "9de76b8291d00026ab0af86306023c7b90f8e9229dc04916fe1335bf5e11f15d", + "e441bbb2f056d471ae9fad83b4dd0fa691a0574eb4a373a0e59d6108614ee07e" ] } }, "minableCommitments": { + "llmq_50_60": { + "version": 1, + "llmqType": 1, + "quorumHash": "000000000122768294b19a5f6750094f6e9caa135c0826372d0538d4ceb910bc", + "signersCount": 0, + "validMembersCount": 0, + "quorumPublicKey": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } } } {% endhighlight %} diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index d72f733f..ca524ae7 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -2963,21 +2963,75 @@ contributions to all other members. | 32 | proTxHash | uint256 | The ProRegTx hash of the complaining member | 1-9 | vvecSize | compactSize uint | The size of the verification vector | 48 * `vvecSize` | vvec | BLSPubKey[] | The verification vector +| 48 | ephemeralPubKey | BLSPubKey | Ephemeral BLS public key used to encrypt secret key contributions +| 32 | iv | uint256 | Initialization vector | 1-9 | skCount | compactSize uint | Number of encrypted secret key contributions -| 32 * `skCount` | skContributions | byte[] | Secret key contributions encrypted to recipient masternodes’ BLS public operator key +| (1 + 32) * (`skCount`) | skContributions | byte[] | Secret key contributions encrypted to recipient masternodes’ BLS public operator key.

    Each contribution consists of:
    - Size: 1 byte
    - Secret Key: 32 bytes | 96 | sig | byte[] | BLS signature, signed with the operator key of the contributing masternode More information can be found in the [Contribution phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#2-contribution-phase). + The following annotated hexdump shows a `qcontrib` message. (The message header has been omitted.) {% highlight text %} +01 ........................................ LLMQ Type: 1 (LLMQ_50_60) +cb9a1552340175a8232437eb8ceceaea +4b90a0f75caff20ee12d230b00000000 ........... Quorum Hash + +cd1c97c52ccf163ee5dc264d411efc90 +b07729cd34d9d2e7c7b3ca4b2a4e77cf ........... ProRegTx Hash + +1e ......................................... Verification Vector Size: 30 + +Verification Vector (Truncated) +| 8da71ba5030e28c6c4de5e0eb1660d0f +| a9fd21ef4fef700a556f10286c9c34fb +| beb36fffb5b2a552a40d6c8e27aac338 +| [...] +| 99d8649d226261162bcb5a11617d1732 +| 553b8358d85b1d9e12a88eb3e979fb7c +| e49b5a21a82a74e9d06233199cb73db4 ......... Verification Vector (1440 bytes) + +8d664929b596cdc8eb835d652944d61b +7fd21fd60ba0288af4f9e3a10658c8a8 +56467082c728e2037791166705ada03a ........... Ephemeral BLS Public Key + +93037a05b65adad6f5d44edc43500bff +71605f0e5f90ab92e3e0b46461c1c64d ........... IV Seed + +32 ......................................... Contribution count: 50 +Contributions +| Secret Key Contribution #1 +| | 20 ..................................... Contribution Size: 32 bytes +| | | 31f3e8e5b2cc2063ee7fd1dd469dca12 +| | | 4bdf506ee46fe825d5537aa3ce838225 ..... Encrypted Secret Key contribution +| +| Secret Key Contribution #2 +| | 20 ..................................... Contribution Size: 32 bytes +| | | a6b3ff696ffc5e0c0a9b444c515edc48 +| | | 5a9ccea0268c2a445fac5e24feda51a9 ..... Encrypted Secret Key contribution +| +| [...] .................................... 47 contributions omitted +| +| Secret Key Contribution #50 +| | 20 ..................................... Contribution Size: 32 bytes +| | | 25f54cff411a577db9a416a60067f512 +| | | 0750c77720207eb1484c90767b72faf8 ..... Encrypted Secret Key contribution + +81f1003546f6735849c5691af93d324d +3a719fc4bb6d719907de3bce9833228e +648d03cd80666d70600fa8c936d30046 +07bd444af3e494fb2a21273fcfa51986 +3c4e139c67d2ffe0df07ac27ae63a0c8 +e000da1aeda5f98ec9e64b801681bfc1 ........... BLS signature (Operator Key) {% endhighlight %} ---> {% endautocrossref %} @@ -2992,7 +3046,7 @@ message header has been omitted.) intra-quorum communication and is only sent to the masternodes in the LLMQ and nodes that are monitoring in Watch Mode for auditing/debugging purposes. -The `qcomplaint` message is used to notify other members of the DKG process of +The `qcomplaint` message is used to notify other members in the DKG process of any members that provided an invalid secret key contribution. | Bytes | Name | Data type | Description | @@ -3009,14 +3063,35 @@ any members that provided an invalid secret key contribution. More information can be found in the [Complaining phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#3-complaining-phase). + The following annotated hexdump shows a `qcomplaint` message. (The message header has been omitted.) {% highlight text %} +01 ......................................... LLMQ Type: 1 (LLMQ_50_60) +bc10b9ced438052d3726085c13aa9c6e +4f0950675f9ab1948276220100000000 ........... Quorum Hash + +cbd9581d54af43a06d3f6900b5226945 +4303c1b378bbb45caea44228af0c67a6 ........... ProRegTx hash + +32 ......................................... Bad member bitvector size: 50 +00000000000400 ............................. Bad members + +32 ......................................... Complaints bitvector size: 50 +00000000000000 ............................. Complaints + +98e148f112fc46d233eeee230472b305 +0b80b2a675cf7699f97412cce3606a3c +863c89aa68ed1608ed9a6503dfd1d8aa +01c7a15e70cdc45afe653beaaf399aeb +9b4f44cdf5eaafe223807f30c35a97fd +e9015178f6d642b7b25c4fd7c4ef3030 ........... BLS signature (Operator Key) {% endhighlight %} ---> {% endautocrossref %} @@ -3051,15 +3126,39 @@ An `SKContribution` consists of: More information can be found in the [Justification phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#4-justification-phase). - {% endautocrossref %} @@ -3085,18 +3184,51 @@ verification and selection of the final commitment. | 1-9 | validMembersSize | compactSize uint | Bit size of the `validMembers` bitvector | (`valid`
    `MembersSize` + 7) / 8 | validMembers | byte[] | Bitset of valid members in this commitment | 48 | quorumPublicKey | uint256 | The quorum public key -| (`complaints`
    `BitSize` + 7) / 8 | quorumVvecHash | byte[] | The complaints bitvector +| 32 | quorumVvecHash | byte[] | The hash of the quorum verification vector | 96 | quorumSig | BLSSig | Threshold signature, signed with the threshold signature share of the committing member | 96 | sig | byte[] | BLS signature, signed with the operator key of the contributing masternode More information can be found in the [Commitment phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#5-commitment-phase). + The following annotated hexdump shows a `qpcommit` message. (The message header has been omitted.) {% highlight text %} +01 ......................................... LLMQ Type: 1 (LLMQ_50_60) +cb9a1552340175a8232437eb8ceceaea +4b90a0f75caff20ee12d230b00000000 ........... Quorum Hash + +59c38b8d6a0664411f92a6326e8ef070 +7ecf185405252854ddb477d89127a32d ........... ProRegTx hash + +32 ......................................... Valid member bitvector size: 50 +ffffffffffff03 ............................. Valid members + +102809b8649209a15fceb3984014eb39 +70ca9bd2464b2f84353a3353f4d612eb +7ca6daaf723170cdbdad40c5cf44f87b ........... Quorum BLS Public Key + +17431ce7dfecb9bba4ccba5921514d24 +fe267c61078bdfe29d90774a3b766ad5 ........... Quorum Verification Vector Hash + +94f7417e0ed56ada7116cf4f1e400748 +deb2e2040babd540f21925b2eec8d4df +75d3e0fc3323d083db76f66ce6128a13 +0f1b2c4725076dae2283bbecbf2e1230 +72cc9cec244337008bf82a670ab9e2ee +6220dd736a1a70c9ca87867ca55f8665 ........... BLS Threshold signature + +85723fe503bba8ac814eab0f28f1fd07 +49927528c01b635d11d3f2843ce3f7e1 +6223c7e9a9e1f70916159c965acae8bf +09d16dc85267ec4081907adc966eae69 +b6a5077267fdc61cdb192faffa27bed9 +2883559bab2ab81cef6253452622b30c ........... BLS signature (Operator Key) {% endhighlight %} --> @@ -3139,14 +3271,47 @@ valid final commitment. More information can be found in the [Finalization phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#6-finalization-phase). + The following annotated hexdump shows a `qfcommit` message. (The message header has been omitted.) {% highlight text %} +0100 ....................................... Message Version: 1 +01 ......................................... LLMQ Type: 1 (LLMQ_50_60) +cb9a1552340175a8232437eb8ceceaea +4b90a0f75caff20ee12d230b00000000 ........... Quorum Hash + +32 ......................................... Signer bitvector size: 50 +ffffffffffff03 ............................. Signers + +32 ......................................... Valid member bitvector size: 50 +ffffffffffff03 ............................. Valid members + +102809b8649209a15fceb3984014eb39 +70ca9bd2464b2f84353a3353f4d612eb +7ca6daaf723170cdbdad40c5cf44f87b ........... Quorum BLS Public Key + +17431ce7dfecb9bba4ccba5921514d24 +fe267c61078bdfe29d90774a3b766ad5 ........... Quorum Verification Vector Hash + +083388b91a2f8f7f4ea35469f25ee16a +21b3e03b02936675897f74424d6de748 +66b34dcc5861fd3f5f661ea1ed124a08 +0b165f21b1f2db18c4c37c82f8a8d350 +9a6f52a14c643dab71a4dced78ae9a42 +dc982e89a92606df537b8918881e9c95 ........... Quorum BLS Recovered Threshold Sig + +0d131c7062253671f9c8ebb39a9b0057 +d78dc67e236b55086cbb0624c7f4abcc +0a26557bfad3092bd38ded4e3cca6c43 +0dda2e73a99ca3d359631cb99a121c5e +92cea06ef4c03bb18ad9e90559104550 +c8a042dc51aa58a26c134405fc3234ff ........... Quorum Aggregate BLS Sig {% endhighlight %} ---> {% endautocrossref %} From 2cd30414e7bdcb1222893510442b604860d4901d Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 16 Apr 2019 13:34:37 -0400 Subject: [PATCH 063/117] V0.14.0 DIP4 CbTx and mnlistdiff updates (#119) * P2P - Add quorum merkle root to CbTx - Update hexdump - Add table for version history * P2P - Add mnlistdiff quorum info * P2P - Update mnlistdiff hexdump (mocked) --- _includes/devdoc/ref_p2p_networking.md | 9 ++++++ _includes/devdoc/ref_transactions.md | 45 ++++++++++++++++---------- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index ca524ae7..648af8e9 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -916,8 +916,13 @@ requested either a full masternode list or a diff for a range of blocks. | 1-9 | merkleFlagsCount | compactSize uint | Required | Number of Merkle flag bytes | variable | merkleFlags | vector | Required | Merkle flag bits, packed per 8 in a byte, least significant bit first | variable | cbTx | CTransaction | Required | The fully serialized coinbase transaction of `blockHash` +| 1-9 | deletedMNsCount | compactSize uint | Required | Number of ProRegTx hashes which were deleted after baseBlockHash | variable | deletedMNs | vector | Required | A list of ProRegTx hashes for masternode which were deleted after `baseBlockHash` | variable | mnList | vector | Required | The list of Simplified Masternode List (SML) entries which were added or updated since `baseBlockHash` +| 1-9 | deletedQuorumsCount | compactSize uint | Required | *Added in protocol version 70214*

    Number of LLMQs which were deleted from the active set after `baseBlockHash` | +| variable | deletedQuorums | (uint8_t+uint256)[] | Required | *Added in protocol version 70214*

    A list of LLMQ type and quorum hashes for LLMQs which were deleted after `baseBlockHash` | +| 1-9 | newQuorumsCount | compactSize uint | Required | *Added in protocol version 70214*

    Number of new LLMQs which were added to the active set since `baseBlockHash` | +| variable | newQuorums | qfcommit[] | Required | *Added in protocol version 70214*

    The list of LLMQ commitments for the LLMQs which were added since `baseBlockHash` | Simplified Masternode List (SML) Entry @@ -963,6 +968,10 @@ d12ad401c19089f0affcabd423deef67 ........... Merkle hash 3 02 ......................................... Masternode list entries: 2 +00 ......................................... Deleted quorums: 0 + +00 ......................................... New quorums: 0 + Masternode List | Masternode 1 | | 01040eb32f760490054543356cff4638 diff --git a/_includes/devdoc/ref_transactions.md b/_includes/devdoc/ref_transactions.md index d2a95deb..cca7a22b 100644 --- a/_includes/devdoc/ref_transactions.md +++ b/_includes/devdoc/ref_transactions.md @@ -908,10 +908,18 @@ payload consists of the following data: | 2 | version | uint_16 | CbTx version number. Currently set to 1. | 4 | height | uint32_t | Height of the block | 32 | merkleRootMNList | uint256 | Merkle root of the masternode list +| 32 | merkleRootQuorums | uint256 | *Added by CbTx version 2 in v0.14.0*

    Merkle root of currently active LLMQs + +Version History + +| CbTx Version | First Supported Protocol Version | Dash Core Version | Notes | +| ---------- | ----------- | -------- | -------- | +| 1 | 70213 | 0.13.0 | Enabled by activation of DIP3 +| 2 | 70214 | 0.14.0 | Enabled by activation of DIP8 The following annotated hexdump shows a CbTx transaction. - + An itemized coinbase transaction: @@ -924,36 +932,39 @@ An itemized coinbase transaction: | 00000000000000000000000000000000 ......... Previous outpoint TXID | ffffffff ................................. Previous outpoint index | -| 05 ....................................... Bytes in coinbase: 5 +| 4c ....................................... Bytes in coinbase: 76 | | -| | 02 ..................................... Bytes in height -| | | 0608 ................................. Height: 2054 +| | 03 ..................................... Bytes in height +| | | 393d01 ............................... Height: 81209 | | -| | 0101 ................................... Arbitrary data -| ffffffff ................................. Sequence +| | 04b9...6d2f ............................ Arbitrary data (truncated) +| 00000000 ................................. Sequence 02 ......................................... Output count | Transaction Output 1 -| | 00902f5009000000 ....................... Duffs (400 DASH) -| | 2102c633b7022b4dab169c8a8459d83b7e0 -| | 6e0f8da0f89bf7e788ec98c8038107989ac .... Script +| | 40230e4300000000 ....................... Duffs (11.25 DASH) +| | 1976a914b7ce0ea9ce2010f58ba4aaa6 +| | caa76671c438e89088ac ................... Script | | Transaction Output 2 -| | 00e40b5402000000 ....................... Duffs (100 DASH) -| | 1976a914ebafa153cffbb5b37c30fb93 -| | 886f2fe0f1d549ed88ac ................... P2PKH script +| | 40230e4300000000 ....................... Duffs (11.25 DASH) +| | 1976a91405ea03a6c9dfa67e1837b3c1 +| | 4965ba3cb53bce7288ac ................... P2PKH script 00000000 ................................... Locktime -26 ......................................... Extra payload size (38) +46 ......................................... Extra payload size (38) Coinbase Transaction Payload -| 0100 ..................................... Version (1) +| 0200 ..................................... Version (2) | -| 06080000 ................................. Block height: 2054 +| 393d0100 ................................. Block height: 81209 | -| 69010fa8b729b53c78a1e209946c82e2 -| 3159439022ea4055aa60d4393fffba46 ......... MN List merkle root +| e2dd012c5b0b1753cef0e32f978917ef +| e7a484c5080b31b4e3f966ccc0e0f8dd ......... MN List merkle root +| +| 2ef709f55fa42cb53d29d75dad77d212 +| fb0bd72a47ecfe0e8aa6f660fb96396e ......... Active LLMQ merkle root {% endhighlight %} {% endautocrossref %} From 0d26ece0074758a73597457ef8ea7135b2ce5d7a Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 17 Apr 2019 15:24:31 -0400 Subject: [PATCH 064/117] V0.14.0 Guide updates (#120) * Guide - PrivateSend updates - Variable paticipant count - Link updates * Guide - MN sync reorg - Move all content regarding old mn sync system to a subsection * Guide - Governance sync update - Related to dashpay/dash#2124 * Content - Remove governance watchdog references - Related to dashpay/dash#2816 * Content - Governance sync update * Content - Update Dash Core version and protocol number * Formatting fix * Content - Disclaimer and roadmap link * Content - Update Sentinel info to indicate deprecation of sentinelping * Formatting fix --- .../devdoc/dash-core/rpcs/rpcs/gobject.md | 6 +- _includes/devdoc/guide_dash_features.md | 222 ++++++++++-------- _includes/devdoc/ref_p2p_networking.md | 19 +- _includes/helpers/vars.md | 2 +- 4 files changed, 138 insertions(+), 111 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md index 393fbb04..6b6323e5 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md @@ -604,7 +604,7 @@ The `gobject get` RPC returns a governance object by hash. - n: "→
    `ObjectType`" t: "number" p: "Required
    (exactly 1)" - d: "Object types:
    `1` - Unknown
    `2` - Proposal
    `3` - Trigger
    `4` - Watchdog" + d: "Object types:
    `1` - Unknown
    `2` - Proposal
    `3` - Trigger" - n: "→
    `CreationTime`" t: "number" @@ -880,7 +880,7 @@ The `gobject list` RPC Lists governance objects (can be filtered by signal and/o - n: "`type`" t: "string (hex)" p: "Optional
    (exactly 1)" - d: "Type of governance object signal:
    • `proposals`
    • `triggers`
    • `watchdogs`
    • `all` (_DEFAULT_)" + d: "Type of governance object signal:
    • `proposals`
    • `triggers`
    • `all` (_DEFAULT_)" {% enditemplate %} @@ -963,7 +963,7 @@ The `gobject diff` RPC Lists governance objects differences since last diff. - n: "`type`" t: "string (hex)" p: "Optional
    (exactly 1)" - d: "Type of governance object signal:
    • `proposals`
    • `triggers`
    • `watchdogs`
    • `all` (_DEFAULT_)" + d: "Type of governance object signal:
    • `proposals`
    • `triggers`
    • `all` (_DEFAULT_)" {% enditemplate %} diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 17d9ab87..be6ac67e 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -15,8 +15,7 @@ Dash aims to be the most user-friendly and scalable payments-focused cryptocurrency in the world. The Dash network features instant transaction confirmation, double spend protection, anonymity equal to that of physical cash, a self-governing, self-funding model driven by incentivized full nodes and a -clear roadmap for on-chain scaling to up to 400MB blocks using custom-developed -open source hardware. +clear [roadmap](https://www.dash.org/roadmap/) for future development. While Dash is based on Bitcoin and compatible with many key components of the Bitcoin ecosystem, its two-tier network structure offers significant @@ -229,19 +228,18 @@ mixing pool. * The `dsa` message contains a collateral transaction * This transaction uses a collateral input created in the [Wallet Preparation](#privatesend-wallet-preparation) phase * The collateral is a signed transaction that pays the collateral back to a client address minus a fee of 0.001 DASH - * As of protocol version 70209, the `dsa` message indicates how many inputs will be provided to the pool when Spork 6 is active _**Step 3 - Queue**_ * A masternode broadcasts `dsq` messages when it starts a new queue. These message are relayed by all peers. - * As of protocol version 70209, when Spork 6 is active the `dsq` message indicates how many inputs must be provided to participate in the pool. - * Once the masternode has received valid `dsa` messages from 3 clients (`nPoolMaxTransactions`), it sends a `dsq` message with the ready bit set ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/chainparams.cpp#L173)) - * Clients must respond to the Queue ready within 30 seconds or risk forfeiting the collateral they provided in the `dsa` message (Step 1) ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend.h#L22)) + * As of protocol version 70214, mixing sessions have a variable number of participants defined by the range `nPoolMinParticipants` (3) to `nPoolMaxParticipants` (5). Prior protocol version mixing sessions always contained exactly 3 participants + * Once the masternode has received valid `dsa` messages from the appropriate number of clients (`nSessionMaxParticipants`), it sends a `dsq` message with the ready bit set + * Clients must respond to the Queue ready within 30 seconds or risk forfeiting the collateral they provided in the `dsa` message (Step 1) ([Dash Core Reference](https://github.com/dashpay/dash/blob/e9f7142ed01c0d7b53ef8b5f6f3f6375a68ef422/src/privatesend.h#L23)) _**Step 4 - Inputs**_ * The collateral transaction can be the same in the `dsi` message as the one in the `dsa` message (Step 1) as long as it has not been spent - * Each client can provide up to 9 (`PRIVATESEND_ENTRY_MAX_SIZE`) inputs (and an equal number of outputs) to be mixed ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend.h#L28)) + * Each client can provide up to 9 (`PRIVATESEND_ENTRY_MAX_SIZE`) inputs (and an equal number of outputs) to be mixed ([Dash Core Reference](https://github.com/dashpay/dash/blob/e9f7142ed01c0d7b53ef8b5f6f3f6375a68ef422/src/privatesend.h#L29)) * This is the only message in the PrivateSend process that contains enough information to link a wallet's PrivateSend inputs with its outputs * This message is sent directly between a client and the mixing masternode (not relayed across the Dash network) so no other clients see it @@ -249,7 +247,7 @@ mixing pool. * Once the masternode has received valid `dsi` messages from all clients, it creates the final transaction and sends a `dsf` message * Inputs/outputs are ordered deterministically as defined by [BIP-69](https://github.com/quantumexplorer/bips/blob/master/bip-0069.mediawiki#Abstract) to avoid leaking any data ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend-server.cpp#L321-#L322)) - * Clients must sign their inputs to the Final Transaction within 15 seconds or risk forfeiting the collateral they provided in the `dsi` message (Step 4) ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend.h#L23)) + * Clients must sign their inputs to the Final Transaction within 15 seconds or risk forfeiting the collateral they provided in the `dsi` message (Step 4) ([Dash Core Reference](https://github.com/dashpay/dash/blob/e9f7142ed01c0d7b53ef8b5f6f3f6375a68ef422/src/privatesend.h#L24)) _**Step 10 - Final Transaction broadcast**_ @@ -327,7 +325,7 @@ network. The payee is selected from a subset of masternodes made up of 10% of eligible nodes that have been waiting the longest since their last payment. The winner is then determined based on a number of parameters including the distance between the its hash and the block's proof of work. For additional -detail, reference this [Official Documentation Payment Logic page](https://docs.dash.org/en/latest/masternodes/understanding.html#payment-logic). +detail, reference this [Official Documentation Payment Logic page](https://docs.dash.org/en/0.12.3/masternodes/understanding.html#payment-logic). Nodes receiving a `mnw` message verify the validity of the message before relaying it to their peers. If the message is invalid, the sending node may be @@ -353,7 +351,88 @@ several conditions that initiate a start/restart the sync process: #### Initial Masternode Sync {% include helpers/subhead-links.md %} -##### Before DIP3 Activation +{% autocrossref %} + +The deterministic masternode lists introduced by DIP3 eliminated several steps +of the sync process related to the masternode list and masternode payments. +Since that information is now available on-chain, P2P messages related to those +steps were deprecated. + +This diagram shows the order in which P2P messages are sent to perform +masternode synchronization initially after startup. + +![Masternode Sync (Initial)](/img/dev/en-masternode-sync-initial-dip3.svg) + +The following table details the data flow of P2P messages exchanged during +initial masternode synchronization after the activation of DIP3 and Spork 15. + +| **Syncing Node Message** | **Direction** | **Masternode Response** | **Description** | +| **1. Sporks** | | | | +| `getsporks` message | → | | Syncing node requests sporks +| | ← | `spork` message(s) | +| **2. Governance** | | | See [Governance sync](#governance) | + +*Masternode Sync Status* + +There are several status values used to track masternode synchronization. They +are used in both `ssc` messages and the `mnsync` RPC. + +| **Value** | **Status** | **Description** | +| -1 | `MASTERNODE_SYNC_FAILED` | Synchronization failed | +| 0 | `MASTERNODE_SYNC_INITIAL` | Synchronization just started, was reset recently, or is still in IBD | +| 1 | `MASTERNODE_SYNC_WAITING` | Synchronization pending - waiting after initial to check for more headers/blocks | +| 2 | `MASTERNODE_SYNC_LIST` | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Synchronizing masternode list | +| 3 | `MASTERNODE_SYNC_MNW` | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Synchronizing masternode payments | +| 4 | `MASTERNODE_SYNC_GOVERNANCE` | Synchronizing governance objects | +| 999 | `MASTERNODE_SYNC_FINISHED` | Synchronization finished | + +#### Ongoing Masternode Sync +{% include helpers/subhead-links.md %} + +Once a masternode completes an initial full sync, continuing synchronization is +maintained by the exchange of P2P messages with other nodes. This diagram shows +an overview of the messages exchanged to keep the masternode list, masternode +payments, and governance objects synchronized between masternodes. + +![Masternode Sync (Ongoing)](/img/dev/en-masternode-sync-ongoing.svg) + +**Governance** + +After the initial governance synchronization, governance information is kept +current by the `govobj` messages and `govobjvote` messages relayed on the +network. Unsynchronized peers may send `govsync` messages to request governance +sync. + +#### Masternode Sync Schedule +{% include helpers/subhead-links.md %} + +The following tables detail the timing of various functions used to keep the +masternodes in sync with each other. This information is derived from the +scheduler section of `AppInitMain` in `src/init.cpp`. + +| **Period (seconds)** | **Action** | **Description** | +| 6 | MN Sync | Synchronizes sporks, masternode list, masternode payments, and governance objects (masternode-sync.cpp) | + +The following actions only run when the masternode sync is past `MASTERNODE_SYNC_WAITING` status. + +| **Period (seconds)** | **Action** | **Description** | +| 60 | Process MN Connections | Disconnects some masternodes (masternodeman.cpp) | +| 60 | InstantSend Check/Remove | Remove expired/orphaned/invalid InstantSend candidates and votes (instantx.cpp) | +| 300 | Maintenance | Check/remove/reprocess governance objects (governance.cpp) | + +{% endautocrossref %} + +#### Previous System + + +![Warning icon](/img/icons/icon_warning.svg) **The following information is for +historical reference only. It describes the masternode sync process that was +used prior to the deterministic masternode list update in Dash Core v0.13 that +implemented DIP3.** + +Please see [here for details of the current system](#masternode-sync) + +##### Initial Sync {% autocrossref %} @@ -387,48 +466,8 @@ initial masternode synchronization before the activation of DIP3 and Spork 15. | | ← | `mnw` message(s) | (If requested) Masternode payment vote message | **4. Governance** | | | See [Governance sync](#governance) | -{% endautocrossref %} -##### After DIP3 Activation - - -{% autocrossref %} - -The deterministic masternode lists introduced by DIP3 make the masternode -list and masternode payments steps of the sync process obsolete. Since the -information is available on-chain, the P2P messages related to those steps -are no longer required. - -This diagram shows the order in which P2P messages are sent to perform -masternode synchronization initially after startup. - -![Masternode Sync (Initial)](/img/dev/en-masternode-sync-initial-dip3.svg) - -The following table details the data flow of P2P messages exchanged during -initial masternode synchronization after the activation of DIP3 and Spork 15. - -| **Syncing Node Message** | **Direction** | **Masternode Response** | **Description** | -| **1. Sporks** | | | | -| `getsporks` message | → | | Syncing node requests sporks -| | ← | `spork` message(s) | -| **2. Governance** | | | See [Governance sync](#governance) | - -*Masternode Sync Status* - -There are several status values used to track masternode synchronization. They -are used in both `ssc` messages and the `mnsync` RPC. - -| **Value** | **Status** | **Description** | -| -1 | `MASTERNODE_SYNC_FAILED` | Synchronization failed | -| 0 | `MASTERNODE_SYNC_INITIAL` | Synchronization just started, was reset recently, or is still in IBD | -| 1 | `MASTERNODE_SYNC_WAITING` | Synchronization pending - waiting after initial to check for more headers/blocks | -| 2 | `MASTERNODE_SYNC_LIST` | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Synchronizing masternode list | -| 3 | `MASTERNODE_SYNC_MNW` | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Synchronizing masternode payments | -| 4 | `MASTERNODE_SYNC_GOVERNANCE` | Synchronizing governance objects | -| 999 | `MASTERNODE_SYNC_FINISHED` | Synchronization finished | - - -#### Ongoing Masternode Sync +##### Ongoing Sync {% include helpers/subhead-links.md %} Once a masternode completes an initial full sync, continuing synchronization is @@ -440,8 +479,8 @@ payments, and governance objects synchronized between masternodes. **Recurring Ping** -![Warning icon](/img/icons/icon_warning.svg) NOTE: This will be deprecated -following activation of DIP3 which implements deterministic masternode lists. +![Warning icon](/img/icons/icon_warning.svg) NOTE: Deprecated following +activation of DIP3. Each masternode issues a ping (`mnp` message) periodically to notify the network that it is still online. Masternodes that do not issue a ping for 3 hours will @@ -450,8 +489,8 @@ masternode announce (`mnb` message). **Masternode List** -![Warning icon](/img/icons/icon_warning.svg) NOTE: This will be deprecated -following activation of DIP3 which implements deterministic masternode lists. +![Warning icon](/img/icons/icon_warning.svg) NOTE: Deprecated following +activation of DIP3. After the initial masternode list has been received, it is kept current by a combination of the periodic `mnp` messages received from other masternodes, @@ -467,42 +506,27 @@ Unsynchronized peers may send a `dseg` message to request the entire masternode **Masternode Payment** -![Warning icon](/img/icons/icon_warning.svg) NOTE: This will be deprecated -following activation of DIP3 which implements deterministic masternode lists. +![Warning icon](/img/icons/icon_warning.svg) NOTE: Deprecated following +activation of DIP3. After the initial masternode payment synchronization, payment information is kept current via the `mnw` messages relayed on the network. Unsynchronized peers may send a `mnget` message to request masternode payment sync. -**Governance** - -After the initial governance synchronization, governance information is kept -current by the `govobj` messages and `govobjvote` messages relayed on the -network. Unsynchronized peers may send `govsync` messages to request governance -sync. - -#### Masternode Sync Schedule +##### Sync Schedule {% include helpers/subhead-links.md %} -The following tables detail the timing of various functions used to keep the -masternodes in sync with each other. This information is derived from the -scheduler section of `AppInitMain` in `src/init.cpp`. - -| **Period (seconds)** | **Action** | **Description** | -| 6 | MN Sync | Synchronizes sporks, masternode list, masternode payments, and governance objects (masternode-sync.cpp) | - -The following actions only run when the masternode sync is past `MASTERNODE_SYNC_WAITING` status. +Prior to the deterministic masternode system introduced by DIP3 in Dash Core 0.13, +the following additional sync actions were also required. | **Period (seconds)** | **Action** | **Description** | | 1 | MN Check | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Check the state of each masternode that is still funded and not banned. The action occurs once per second, but individual masternodes are only checked at most every 5 seconds (only a subset of masternodes are checked each time it runs) (masternodeman.cpp) | -| 60 | Process MN Connections | Disconnects some masternodes (masternodeman.cpp) | | 60 | MN Check/Remove | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Remove spent masternodes and check the state of inactive ones (masternodeman.cpp) | | 60 | MN Payment Check/Remove | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Remove old masternode payment votes/blocks (masternode-payments.cpp) | -| 60 | InstantSend Check/Remove | Remove expired/orphaned/invalid InstantSend candidates and votes (instantx.cpp) | | 300 | Full verification | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Verify masternodes via direct requests (`mnv` messages - note time constraints in the Developer Reference section) (masternodeman.cpp) | -| 300 | Maintenance | Check/remove/reprocess governance objects (governance.cpp) | | 600 | Manage State | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Sends masternode pings (`mnp` message). Also sends initial masternode broadcast (`mnb` message) for local masternodes. (activemasternode.cpp) | + {% endautocrossref %} ### Governance @@ -539,13 +563,21 @@ requested. Frequent requests will result in the node being banned. Masternodes respond to the `govsync` message with several items: -* First, the Masternode sends one `ssc` message (Sync Status Count) for `govobj` -objects and one for `govobjvote` objects. These messages indicate how many -inventory items will be sent. +For Object Sync: -* Second, the Masternode sends `inv` messages for the `govobj` and `govobjvote` +* First, the Masternode sends a `ssc` message (Sync Status Count) for `govobj` +objects. This message indicates how many inventory items will be sent. + +* Second, the Masternode sends an `inv` message for the `govobj` and `govobjvote` objects. +For Vote Sync: + +* First, the Masternode sends a `ssc` message (Sync Status Count) for `govobjvote` +objects. This message indicates how many inventory items will be sent. + +* Second, the Masternode sends an `inv` message for the `govobjvote` object(s). + Once the syncing node receives the counts and inventories, it may request any `govobj` and `govobjvote` objects from the masternode via a `getdata` message. @@ -556,19 +588,14 @@ Once the syncing node receives the counts and inventories, it may request any | **Initial request** | | | **Requests all governance objects (without votes)** | | `govsync` message | → | | Syncing node initiates governance sync (hash set to all zeros) | | ← | `ssc` message (govobj) | Number of governance objects (0 or more) -| | ← | `ssc` message (govobjvote)| Number of governance object votes *(0 since votes are only returned if a specific hash is provided with the `govsync` message)* | | ← | `inv` message (govobj) | Governance object inventories | `getdata` message (govobj) | → | | (Optional) Syncing node requests govobj | | ← | `govobj` message | (If requested) Governance object | | | | | | **Follow up requests** | | | **Requests governance object (with votes)** | | `govsync` message | → | | Syncing node requests governance sync for a specific governance object -| | ← | `ssc` message (govobj) | Number of governance objects (1) | | ← | `ssc` message (govobjvote)| Number of governance object votes (0 or more) -| | ← | `inv` message (govobj) | Governance object inventory | | ← | `inv` message (govobjvote)| Governance object vote inventories -| `getdata` message (govobj) | → | | (Optional) Syncing node requests govobj -| | ← | `govobj` message | (If requested) Governance object | `getdata` message (govobjvote) | → | | (Optional) Syncing node requests govobjvote | | ← | `govobjvote` message | (If requested) Governance object vote @@ -583,8 +610,8 @@ the future. This will allow the integration between Evolution and Dash Core to proceed more smoothly and enable new governance object additions with minimal impact to Dash Core. -Sentinel runs periodically and performs four main tasks as described below: -governance sync, ping, governance object pruning, and superblock management. +Sentinel runs periodically and performs three main tasks as described below: +governance sync, governance object pruning, and superblock management. The governance object data is stored in a SQLite database. ##### Sentinel Sync @@ -594,15 +621,6 @@ Sentinel issues a `gobject list` RPC command and updates its database with the results returned from dashd. When objects are removed from the network, they are purged from the Sentinel database. -##### Sentinel Ping -{% include helpers/subhead-links.md %} - -In Dash Core 12.2, use of the `watchdog` governance object type was replaced -by integrating sentinel information into the masternode ping (`mnp` message) -via [Pull Request #1491](https://github.com/dashpay/dash/pull/1491). -Sentinel calls the `sentinelping` RPC which updates the masternode info to -prevent it from entering a `MASTERNODE_WATCHDOG_EXPIRED` state. - ##### Sentinel Prune {% include helpers/subhead-links.md %} @@ -618,6 +636,18 @@ voted to delete them. Sentinel manages superblock creation, voting, and submission to dashd for network propagation. +##### Sentinel Ping +{% include helpers/subhead-links.md %} + +![Warning icon](/img/icons/icon_warning.svg) NOTE: Deprecated by [Dash Core v0.14](https://github.com/dashpay/sentinel/pull/64) + +In Dash Core 12.2, use of the `watchdog` governance object type was replaced +by integrating sentinel information into the masternode ping (`mnp` message) +via [Pull Request #1491](https://github.com/dashpay/dash/pull/1491). + +From Dash Core 0.12.2 through Dash Core 0.13, Sentinel used the `sentinelping` RPC +to update the masternode info and prevent it from entering a `MASTERNODE_WATCHDOG_EXPIRED` state. + {% endautocrossref %} diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 648af8e9..2f4d3093 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -66,7 +66,7 @@ with the most recent versions listed first. (If you know of a protocol version that implemented a major change but which is not listed here, please [open an issue][docs issue].) -As of Dash Core 0.13.0.0, the most recent protocol version is 70213. +As of Dash Core 0.14.0, the most recent protocol version is 70214. | Version | Initial Release | Major Changes |---------|------------------------------------|-------------- @@ -3676,9 +3676,9 @@ contract, or setting. Masternodes ignore this request if they are not fully sync | 32 | nHashParent | uint256 | Required | Parent object (a hash of all zeros here indicates this is the root object, not a child object). | 4 | nRevision | int | Required | Object revision in the system | 8 | nTime | int64_t | Required | Time which this object was created -| 32 | nCollateralHash | uint256 | Required* | Hash of the collateral fee transaction for proposals.

    Set to all zeros for Triggers/Watchdogs. +| 32 | nCollateralHash | uint256 | Required* | Hash of the collateral fee transaction for proposals.

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

    Set to all zeros for proposals since they can be created by non-masternodes. | 97 | vchSig | char[] | Required* | _ECDSA signature (65 bytes) prior to DIP3 activation_

    BLS Signature of the masternode (Length (1 byte) + Signature (96 bytes))

    Not required for proposals - they will have a length of 0x00 and no Signature. @@ -3689,7 +3689,6 @@ Governance Object Types (defined by src/governance-object.h) | 0 | `GOVERNANCE_OBJECT_UNKNOWN` | | 1 | `GOVERNANCE_OBJECT_PROPOSAL` | Submitted proposal (requires collateral transaction - currently 5 Dash) | 2 | `GOVERNANCE_OBJECT_TRIGGER` | Masternode generated. Removed after activation/execution. Used for superblocks. -| 3 | `GOVERNANCE_OBJECT_WATCHDOG` | Masternode generated. Two hour expiration time.

    DEPRECATED since 12.2. The following annotated hexdump shows a `govobj` message for a Proposal object. Notice the presence of a non-zero collateral hash, a masternodeOutPoint that is an @@ -3840,16 +3839,14 @@ request if they are not fully synced. This message responds in one of two ways depending on the request: 1. Object Sync - When a masternode receives a `govsync` message with a hash of all zeros, it -responds with one `ssc` message for `govobj` objects and one for `govobjvote` -objects. The masternode also sends an `inv` message (MSG_GOVERNANCE_OBJECT - 0x17) -for all valid `govobj` governance objects. +responds with a `ssc` message for `govobj` objects. The masternode also sends an +`inv` message (MSG_GOVERNANCE_OBJECT - 0x17) for all valid `govobj` governance objects. *Governance object votes are excluded in this type of response.* 2. Vote Sync - When a masternode receives a `govsync` message with a specific hash, it -responds with one `ssc` message for `govobj` objects and one for `govobjvote` -objects. The masternode also sends both a `govobj` inventory message -(MSG_GOVERNANCE_OBJECT - 0x17) and `govobjvote` inventory messages -(MSG_GOVERNANCE_OBJECT_VOTE - 0x18) for the single governance object requested. +responds with an `ssc` message for `govobjvote` objects. The masternode also +sends a `govobjvote` inventory messages (MSG_GOVERNANCE_OBJECT_VOTE - 0x18) for +the object requested. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index b600331f..8c2aea55 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -383,7 +383,7 @@ NOT IN DASH - n: "→ →
    `ObjectType`" t: "number" p: "Required
    (exactly 1)" - d: "Object types:
    `1` - Unknown
    `2` - Proposal
    `3` - Trigger
    `4` - Watchdog" + d: "Object types:
    `1` - Unknown
    `2` - Proposal
    `3` - Trigger" - n: "→ →
    `CreationTime`" t: "number" From e2e2119ec879132836b08b54a4fbd12d4528ef23 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 22 Apr 2019 11:11:38 -0400 Subject: [PATCH 065/117] RPC - Minor fixes --- _includes/devdoc/dash-core/rpcs/rpcs/masternode.md | 2 +- _includes/devdoc/dash-core/rpcs/rpcs/quorum.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md index 69d21357..74a710ee 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md @@ -266,7 +266,7 @@ The `masternode status` RPC prints masternode status information. p: "Required
    (exactly 1)" d: "Deterministic Masternode State" -- n: "→
    `service`" +- n: "→ →
    `service`" t: "string" p: "Required
    (exactly 1)" d: "The IP address/port of the masternode" diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md index 58489f86..5e054a4d 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md @@ -32,7 +32,7 @@ The `quorum list` RPC displays a list of on-chain quorums. - n: "`count`" t: "number" p: "Optional
    (0 or 1)" - d: "Number of quorums to list (default: 10)" + d: "Number of quorums to list. Will list active quorums if `count` is not specified." {% enditemplate %} *Result---a list of quorums* @@ -244,7 +244,7 @@ The `quorum list` RPC displays a list of on-chain quorums. - n: "`proTxHash`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "The Provider Registration transaction hash of the masternode to show status for. If set to an empty string, the local status is shown." + d: "The Provider Registration transaction hash of the masternode to show status for. If set to an empty string, the local status is shown.
    **Note: An empty string must be used unless Spork 18 (Quorum Debug Enabled) is active**" {% enditemplate %} *Parameter #2---detail level* From aa254c489caf52cfe34baddf5bd4efb2dbd9091d Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 23 Apr 2019 10:57:52 -0400 Subject: [PATCH 066/117] V0.14.0 Guide - LLMQs (#122) * Guide - Start adding LLMQ DKG data flow details * Guide - Add Quorum description * Content - Add descriptions for LLMQ messages * Content - Add qjustify description * Formatting fix * Guide - placeholder for LLMQ signing session details * Guide - Add LLMQ signing session data flow draft * Guide - Minor quorum adjustments * Guide - cross ref fixes * Guide - Add ChainLocks info * Content - Add DIP8 references * Content - DIP Table update --- _autocrossref.yaml | 7 ++ _config.yml | 3 +- _includes/devdoc/guide_dash_features.md | 122 ++++++++++++++++++++++-- _includes/devdoc/ref_p2p_networking.md | 6 +- _includes/layout/base/dip-table.html | 13 ++- _includes/references.md | 23 ++--- 6 files changed, 152 insertions(+), 22 deletions(-) diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 22751ece..e860fe02 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -290,6 +290,13 @@ CVE-2012-2459: ## DIPs in numerical order; don't use padding zeros (e.g. DIP1 not DIP0001) DIP1: +DIP2: +DIP3: +DIP4: +DIP5: +DIP6: +DIP7: +DIP8: ## RPCs '`abandontransaction`': rpc abandontransaction diff --git a/_config.yml b/_config.yml index 58cf2ff6..ab112b6a 100644 --- a/_config.yml +++ b/_config.yml @@ -517,6 +517,7 @@ devsearches: - "DIP5: Blockchain Users": "https://github.com/dashpay/dips/blob/master/dip-0005.md" - "DIP6: Long-Living Masternode Quorums": "https://github.com/dashpay/dips/blob/master/dip-0006.md" - "DIP7: LLMQ Signing Requests / Sessions": "https://github.com/dashpay/dips/blob/master/dip-0007.md" + - "DIP8: ChainLocks": "https://github.com/dashpay/dips/blob/master/dip-0008.md" ## Bitcoin P2P Protocol messages documented on Bitcoin.org "P2P Messages": @@ -577,7 +578,7 @@ devsearches: # Dash - quorums - "qbsigs": "/en/developer-reference#qbsigs" - "qcomplaint": "/en/developer-reference#qcomplaint" - - "qcontrib": "/en/developer-reference#qcontrib" + - "qcontrib": "/en/developer-reference#qcontrib" - "qdebugstatus": "/en/developer-reference#qdebugstatus" - "qfcommit": "/en/developer-reference#qfcommit" - "qgetsigs": "/en/developer-reference#qgetsigs" diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index be6ac67e..ec7b9cd9 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -295,6 +295,33 @@ value of only 0.00000546 DASH as shown by the calculation below. [Example Testnet PrivateSend transaction spending 546 duffs](https://testnet-insight.dashevo.org/insight/address/yWWNYVEQ84RM1xXJekj62wJPF3h1TKh9fS) +### ChainLocks +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +Dash's ChainLock feature leverages [LLMQ Signing Requests/Sessions](#llmq-signing-session) +to reduce uncertainty when receiving funds and remove the possibility of 51% +mining attacks. + +For each block, an LLMQ of a few hundred masternodes is selected and each +participating member signs the first block that it sees extending the active +chain at the current height. If enough members (e.g. >= 60%) see the same block +as the first block, they will be able to create a `clsig` message and propagate +it to all nodes in the network. + +If a valid `clsig` message is received by a node, it must reject all blocks (and +any descendants) at the same height that do not match the block specified in the +`clsig` message. This makes the decision on the active chain quick, easy and +unambiguous. It also makes reorganizations below this block impossible. + +Please read [DIP8 ChainLocks](https://github.com/dashpay/dips/blob/master/dip-0008.md) +for additional details. + + +{% endautocrossref %} + + ### Masternode Payment {% include helpers/subhead-links.md %} @@ -651,18 +678,101 @@ to update the masternode info and prevent it from entering a `MASTERNODE_WATCHDO {% endautocrossref %} -### Quorum Selection +### Masternode Quorums +{% include helpers/subhead-links.md %} + +Dash's masternode quorums are used to facilitate the operation of masternode provided +features in a decentralized, deterministic way. The original quorums (used +largely for InstantSend and masternode payments) were ephemeral and used for a +single purpose (e.g. voting on one specific InstantSend transaction). + +Dash Core 0.14 (protocol version 70214) introduced the Long Living Masternode +Quorums (LLMQ) that are described in detail by [DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md). +These LLMQs are deterministic subsets of the global deterministic masternode +list that are formed via a distributed key generation (DKG) protocol and remain +active for a long periods of time (e.g. hours to days). + +The main task of LLMQs is to perform threshold signing of consensus-related +messages (e.g. ChainLocks). + +##### LLMQ Creation (DKG) + + +{% autocrossref %} + +The following table details the data flow of P2P messages exchanged during +the distributed key generation (DKG) protocol used to establish an LLMQ. + +NOTE: With the exception of the final step (`qfcommit` message broadcast), the message +exchanges happen only between masternodes participating in the DKG process via +the Intra-Quorum communication process described in the DIP. + +*Quorum DKG Data Flow* + +| **Masternode** | **Direction** | **Peers** | **Description** | +| **[Initialization Phase](https://github.com/dashpay/dips/blob/master/dip-0006.md#1-initialization-phase)**| | | **Deterministically evaluate if quorum participation necessary** | +| | | | Each quorum participant establishes connections to a set of quorum participants [as described in DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#building-the-set-of-deterministic-connections) | +| **[Contribution Phase](https://github.com/dashpay/dips/blob/master/dip-0006.md#2-contribution-phase)** | | | **Send quorum contributions (intra-quorum communication)** | +|`inv` message (qcontrib) | → | | Masternode sends inventory for its quorum contribution _to other masternodes in the quorum_ +| | ← | `getdata` message (qcontrib) | Peer(s) respond with request for quorum contribution +| `qcontrib` message | → | | Masternode sends the requested quorum contribution +| **[Complaining Phase](https://github.com/dashpay/dips/blob/master/dip-0006.md#3-complaining-phase)** | | | **Send complaints for any peers with invalid or missing contributions (intra-quorum communication)** | +|`inv` message (qcomplaint) | → | | Masternode sends inventory for any complaints _to other masternodes in the quorum_ +| | ← | `getdata` message (qcomplaint) | Peer(s) respond with request for quorum complaints +| `qcomplaint` message | → | | Masternode sends the requested complaints +| **[Justification Phase](https://github.com/dashpay/dips/blob/master/dip-0006.md#4-justification-phase)** | | | **Send justification responses for any complaints against own contributions (intra-quorum communication)** | +|`inv` message (qjustify) | → | | Masternode sends inventory for any justifications _to other masternodes in the quorum_ +| | ← | `getdata` message (qjustify) | Peer(s) respond with request for quorum justifications +| `qjustify` message | → | | Masternode sends the requested justifications +| **[Commitment Phase](https://github.com/dashpay/dips/blob/master/dip-0006.md#5-commitment-phase)** | | | **Send premature commitment containing the quorum public key (intra-quorum communication)** | +|`inv` message (qpcommit) | → | | Masternode sends inventory for its premature commitment _to other masternodes in the quorum_ +| | ← | `getdata` message (qpcommit) | Peer(s) respond with request for quorum premature commitment +| `qpcommit` message | → | | Masternode sends the requested premature commitment +| **[Finalization Phase](https://github.com/dashpay/dips/blob/master/dip-0006.md#6-finalization-phase)** | | | **Send final commitment containing the quorum public key** | +|`inv` message (qfcommit) | → | | Masternode sends inventory for its premature commitment **to all peers** +| | ← | `getdata` message (qfcommit) | Peer(s) respond with request for quorum final commitment +| `qfcommit` message | → | | Masternode sends the requested final commitment + +{% endautocrossref %} + + +##### LLMQ Signing Session + + +{% autocrossref %} + +The following table details the data flow of P2P messages exchanged during +an LLMQ signing session. These sessions take advantage of BLS threshold signatures +to enable quorums to sign arbitrary messages. For example, Dash Core 0.14 uses +this capability to create the quorum signature found in the `clsig` message that +enables ChainLocks. + +Please read [DIP7 LLMQ Signing Requests / Sessions](https://github.com/dashpay/dips/blob/master/dip-0007.md) +for additional details. + +*LLMQ Signing Session Data Flow* + +| **Masternode** | **Direction** | **Peers** | **Description** | +| **[Siging Request Phase](https://github.com/dashpay/dips/blob/master/dip-0007.md#signing-request)** | | | Request quorum signing of a message (e.g. InstantSend transaction input) (intra-quorum communication) | +| `qsigsesann` message | → | | Masternode sends a signing session announcement _to other masternodes in the quorum_ +| **[Share Propagation Phase](https://github.com/dashpay/dips/blob/master/dip-0007.md#propagating-signature-shares)** | | | Members exchange signature shares within the quorum (intra-quorum communication) | +| `qsigsinv` message | → | | Masternode sends one or more quorum signature share inventories _to other masternodes in the quorum_
    _May occur multiple times in this phase_ +| | ← | `qgetsigs` message (qcontrib) | Peer(s) respond with request for signature shares
    _May occur multiple times in this phase_ +| `qbsigs` message | → | | Masternode sends the requested batched signature share(s)
    _May occur multiple times in this phase_ +| **[Threshold Signature Recovery Phase](https://github.com/dashpay/dips/blob/master/dip-0007.md#recovered-threshold-signatures)** | | | A recovered signature is created by a quorum member once valid signature shares from at least the threshold number of members have been received | +| `qsigrec` message | → | | Masternode sends the quorum recovered signature **to all peers** (except those that have asked to be excluded via a `qsendrecsigs` message) + +{% endautocrossref %} + +#### Quorum Selection {% include helpers/subhead-links.md %} {% autocrossref %} -Dash quorums are used to facilitate the operation of masternode provided -features in a decentralized, deterministic way. - | Quorum Type | Members | Consensus | Description | | ----------- | ------- | --------- | ----------- | -| InstantSend | 10 | Majority | A set of 10 masternodes are selected for _each_ input of the InstantSend transaction. A majority (6+) of them must agree to lock the input. If all inputs in the transaction can be locked, it becomes a successful InstantSend. +| Classic
    (non-LLMQ) InstantSend | 10 | Majority | A set of 10 masternodes are selected for _each_ input of the InstantSend transaction. A majority (6+) of them must agree to lock the input. If all inputs in the transaction can be locked, it becomes a successful InstantSend. | MN Payments | 10 | Majority | A set of 10 masternodes are selected for each block. A majority (6+) of them must agree on the masternode payee for the next block. -| MN Broadcast | 10 | Majority | If a majority (6+) of nodes agree, a new `mnb` message is not required. +| MN Broadcast | 10 | Majority | _Deprecated by DIP3 (deterministic masternode list) in Dash Core 0.13._

    If a majority (6+) of nodes agree, a new `mnb` message is not required. {% endautocrossref %} diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 2f4d3093..0011777a 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -3115,7 +3115,11 @@ e9015178f6d642b7b25c4fd7c4ef3030 ........... BLS signature (Operator Key) intra-quorum communication and is only sent to the masternodes in the LLMQ and nodes that are monitoring in Watch Mode for auditing/debugging purposes. -The `qjustify` message is used to... +The `qjustify` message is used to respond to complaints. This provides a way for +nodes that have been complained about to offer proof of correct behavior. If +a valid justification is not provided, all other nodes mark it as a bad. If a +valid justification is provided, the complaining node is marked as bad instead +(since it submitted a bad complaint). | Bytes | Name | Data type | Description | | --- | --- | --- | --- | diff --git a/_includes/layout/base/dip-table.html b/_includes/layout/base/dip-table.html index 1cad1b7e..cf2faef1 100644 --- a/_includes/layout/base/dip-table.html +++ b/_includes/layout/base/dip-table.html @@ -35,21 +35,21 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Consensus Special Transactions Standard - Proposed + Active 3 Consensus Deterministic Masternode Lists Standard - Proposed + Active 4 Consensus Simplified Verification of Deterministic Masternode Lists Standard - Proposed + Active 5 @@ -72,6 +72,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Standard Proposed + + 8 + Consensus + ChainLocks + Standard + Proposed +
    diff --git a/_includes/references.md b/_includes/references.md index 83022c0a..aba58606 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -266,18 +266,18 @@ http://opensource.org/licenses/MIT. [notfound message]: /en/developer-reference#notfound "A P2P protocol message sent to indicate that the requested data was not available" [ping message]: /en/developer-reference#ping "A P2P network message used to see if the remote host is still connected" [pong message]: /en/developer-reference#pong "A P2P network message used to reply to a P2P network ping message" -[qbsigs message]: /en/developer-reference#qbsigs "A P2P network message used to ..." -[qcomplaint message]: /en/developer-reference#qcomplaint "A P2P network message used to ..." -[qcontrib message]: /en/developer-reference#qcontrib "A P2P network message used to ..." -[qdebugstatus message]: /en/developer-reference#qdebugstatus "A P2P network message used to ..." +[qbsigs message]: /en/developer-reference#qbsigs "A P2P network message used to to send batched LLMQ signature shares" +[qcomplaint message]: /en/developer-reference#qcomplaint "A P2P network message used to send a complaint about another masternodes DKG contribution" +[qcontrib message]: /en/developer-reference#qcontrib "A P2P network message used to send LLMQ DKG contributions" +[qdebugstatus message]: /en/developer-reference#qdebugstatus "A P2P network message used to debug quorums" [qfcommit message]: /en/developer-reference#qfcommit "A P2P network message used to finalize the members of a long-living masternode quorum (LLMQ)" -[qgetsigs message]: /en/developer-reference#qgetsigs "A P2P network message used to ..." -[qjustify message]: /en/developer-reference#qjustify "A P2P network message used to ..." -[qpcommit message]: /en/developer-reference#qpcommit "A P2P network message used to ..." -[qsigrec message]: /en/developer-reference#qsigrec "A P2P network message used to ..." -[qsigsesann message]: /en/developer-reference#qsigsesann "A P2P network message used to ..." -[qsigsinv message]: /en/developer-reference#qsigsinv "A P2P network message used to ..." -[qwatch message]: /en/developer-reference#qwatch "A P2P network message used to ..." +[qgetsigs message]: /en/developer-reference#qgetsigs "A P2P network message used to request signature shares" +[qjustify message]: /en/developer-reference#qjustify "A P2P network message used to respond to another masternodes DKG complaint" +[qpcommit message]: /en/developer-reference#qpcommit "A P2P network message used to send an LLMQ premature commitment" +[qsigrec message]: /en/developer-reference#qsigrec "A P2P network message used to send recovered quorum signatures" +[qsigsesann message]: /en/developer-reference#qsigsesann "A P2P network message used to announce signing session details" +[qsigsinv message]: /en/developer-reference#qsigsinv "A P2P network message used to announce quorum signature share inventories" +[qwatch message]: /en/developer-reference#qwatch "A P2P network message used to ask a peer to relay LLMQ DKG messages" [reject message]: /en/developer-reference#reject "A P2P network message used to indicate a previously-received message was rejected for some reason" [sendcmpct message]: /en/developer-reference#sendcmpct "A P2P network message used to request new blocks be announced as compact blocks" [senddsq message]: /en/developer-reference#senddsq "A P2P network message used to request that DSQ mixing messages be provided" @@ -381,6 +381,7 @@ http://opensource.org/licenses/MIT. [DIP5]: https://github.com/dashpay/dips/blob/master/dip-0005.md [DIP6]: https://github.com/dashpay/dips/blob/master/dip-0006.md [DIP7]: https://github.com/dashpay/dips/blob/master/dip-0007.md +[DIP8]: https://github.com/dashpay/dips/blob/master/dip-0008.md {% comment %}{% endcomment %} [#bitcoin]: https://webchat.freenode.net/?channels=bitcoin&uio=d4 From 6ee3f06b3258f2c160e9692abad3138ce0950e41 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 24 Apr 2019 11:38:05 -0400 Subject: [PATCH 067/117] V0.14.0 P2P/RPC updates (#123) * P2P - LLMQ debug messages - Move below DKG and signing - Don't show qdebugstatus * P2P - Update qbsigs and qsigsinv * Content - add details related to some Dash Core constants * RPC - Add DKG phases to quorum status * P2P - Update version msg with mnauth challenge * P2P - Update version hexdump - Include mn auth challenge * Content - Minor updates - Fix filterload cross ref url - Add note about special tx bloom filter support * Content - update RPC examples based on added CbTx quorum merkle field --- _autocrossref.yaml | 4 +- _config.yml | 2 +- .../rpcs/rpcs/decoderawtransaction.md | 55 +++--- .../devdoc/dash-core/rpcs/rpcs/getblock.md | 125 ++++++------ .../dash-core/rpcs/rpcs/getrawtransaction.md | 69 +++---- .../dash-core/rpcs/rpcs/getspecialtxes.md | 64 ++---- .../devdoc/dash-core/rpcs/rpcs/quorum.md | 2 +- _includes/devdoc/guide_dash_features.md | 7 + _includes/devdoc/ref_p2p_networking.md | 186 ++++++++++-------- _includes/references.md | 4 +- 10 files changed, 264 insertions(+), 254 deletions(-) diff --git a/_autocrossref.yaml b/_autocrossref.yaml index e860fe02..b71e28fa 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -188,8 +188,8 @@ public key infrastructure: pki '`qcomplaint` messages': qcomplaint message '`qcontrib` message': qcontrib message '`qcontrib` messages': qcontrib message -'`qdebugstatus` message': qdebugstatus message -'`qdebugstatus` messages': qdebugstatus message +#'`qdebugstatus` message': qdebugstatus message +#'`qdebugstatus` messages': qdebugstatus message '`qfcommit` message': qfcommit message '`qfcommit` messages': qfcommit message '`qgetsigs` message': qgetsigs message diff --git a/_config.yml b/_config.yml index ab112b6a..c8d77492 100644 --- a/_config.yml +++ b/_config.yml @@ -579,7 +579,7 @@ devsearches: - "qbsigs": "/en/developer-reference#qbsigs" - "qcomplaint": "/en/developer-reference#qcomplaint" - "qcontrib": "/en/developer-reference#qcontrib" - - "qdebugstatus": "/en/developer-reference#qdebugstatus" + #- "qdebugstatus": "/en/developer-reference#qdebugstatus" - "qfcommit": "/en/developer-reference#qfcommit" - "qgetsigs": "/en/developer-reference#qgetsigs" - "qjustify": "/en/developer-reference#qjustify" diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md index 11101227..9fc6f77d 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md @@ -3,6 +3,7 @@ This file is licensed under the MIT License (MIT) available on http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md" %} + ##### DecodeRawTransaction {% include helpers/subhead-links.md %} @@ -106,67 +107,69 @@ Decode a coinbase special transaction (CbTx): {% highlight bash %} dash-cli decoderawtransaction 03000500010000000000000000000000000000000000\ -000000000000000000000000000000ffffffff4b02953d045e572a5c08fabe6d6d66663734\ -36333636333230616162346432366264616530386339366263623534010000000000000010\ -00000eaf0000000d2f6e6f64655374726174756d2f0000000002b4e32237010000001976a9\ -14cb594917ad4e5849688ec63f29a0f7f3badb5da688acaae32237010000001976a914a3c5\ -284d3cd896815ac815f2dd76a3a71cb3d8e688ac00000000260100953d00007b8577a1c051\ -bcab40e08c72209f3eddc476d859c8054c57a7287700b2de2db4 +000000000000000000000000000000ffffffff2703ae50011a4d696e656420627920416e74\ +506f6f6c2021000b01201da9196f0000000007000000ffffffff02809e4730000000001976\ +a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac809e4730000000001976a91488\ +a060bc2dfe05780ae4dcb6c98b12436c35a93988ac00000000460200ae50010078e5c08b39\ +960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f92\ +45e20cfd5d830382ac634d434725ca6349ab5db920a3 {% endhighlight %} Result: {% highlight json %} { - "txid": "414a3911a274053beb867c79ad9a19bf508041554f147a1a2c73f8f9bc029717", - "size": 233, + "txid": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56", + "size": 229, "version": 3, "type": 5, "locktime": 0, "vin": [ { - "coinbase": "02953d045e572a5c08fabe6d6d666637343633363633323061616234643236626461653038633936626362353401000000000000001000000eaf0000000d2f6e6f64655374726174756d2f", - "sequence": 0 + "coinbase": "03ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000", + "sequence": 4294967295 } ], "vout": [ { - "value": 52.20000692, - "valueSat": 5220000692, + "value": 8.10000000, + "valueSat": 810000000, "n": 0, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 cb594917ad4e5849688ec63f29a0f7f3badb5da6 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914cb594917ad4e5849688ec63f29a0f7f3badb5da688ac", + "asm": "OP_DUP OP_HASH160 cbd7bfcc50351180132b2c0698cb90ad74c473c7 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "yereyozxENB9jbhqpbg1coE5c39ExqLSaG" + "yeuGUfPMrbEqAS2Pw1wonYgEPbM4LAA9LK" ] } }, { - "value": 52.20000682, - "valueSat": 5220000682, + "value": 8.10000000, + "valueSat": 810000000, "n": 1, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 a3c5284d3cd896815ac815f2dd76a3a71cb3d8e6 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914a3c5284d3cd896815ac815f2dd76a3a71cb3d8e688ac", + "asm": "OP_DUP OP_HASH160 88a060bc2dfe05780ae4dcb6c98b12436c35a939 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "ybFPBD7hm9KVd2Dubj97K5mw2ymR8gWJre" + "yYmrsYP3XYMZr1cGtha3QzmuNB1C7CfyhV" ] } } ], - "extraPayloadSize": 38, - "extraPayload": "0100953d00007b8577a1c051bcab40e08c72209f3eddc476d859c8054c57a7287700b2de2db4", + "extraPayloadSize": 70, + "extraPayload": "0200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3", "cbTx": { - "version": 1, - "height": 15765, - "merkleRootMNList": "b42ddeb2007728a7574c05c859d876c4dd3e9f20728ce040abbc51c0a177857b" + "version": 2, + "height": 86190, + "merkleRootMNList": "877392defa24888af72aa15f92b6609e71db1b385c1895bf870896398bc0e578", + "merkleRootQuorums": "a320b95dab4963ca2547434d63ac8203835dfd0ce245924fa83dc6bab6ac57c7" }, - "instantlock": false + "instantlock": false, + "chainlock": false } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md index 4ed8b953..dcaa272c 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md @@ -285,58 +285,59 @@ Get a block in raw hex: {% highlight bash %} dash-cli -testnet getblock \ - 0000000005fdd3a647d4048f183e639310885fab7983b8e7b5079729e065d91f \ + 00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b \ 0 {% endhighlight %} Result (wrapped): {% highlight text %} -00000020354559625d75e59743370290291a5c7df72d1af739c3e2ecf7483314\ -000000002ba12397f0ae5884e623004a5e790d7c608fa013630656e61057c0e4\ -fc67a656031f9d5c3e6f221c890a5ec001030005000100000000000000000000\ -00000000000000000000000000000000000000000000ffffffff4c03bc0d0104\ -031f9d5c08fabe6d6d736170747365743a7265737574736574000c870f000008\ -308d3b4900000019730100000000000000580000004f0000000d2f6e6f646553\ -74726174756d2f000000000240230e43000000001976a914cb594917ad4e5849\ -688ec63f29a0f7f3badb5da688ac40230e43000000001976a914477a52436b94\ -4f3e9223ac8404a7717d4176fa5388ac00000000260100bc0d01001dd9fb7d61\ -1bfd2c05c7a508085d2b35053a45fe67c40c0e43be7cd87a7c9b83 +00000020272e374a06c87a0ce0e6ee1a0754c98b9ec2493e7c0ac7ba41a07300\ +00000000568b3c4156090db4d8db5447762e95dd1d4c921c96801a9086720ded\ +85266325916cc05caa94001c5caf359501030005000100000000000000000000\ +00000000000000000000000000000000000000000000ffffffff2703ae50011a\ +4d696e656420627920416e74506f6f6c2021000b01201da9196f000000000700\ +0000ffffffff02809e4730000000001976a914cbd7bfcc50351180132b2c0698\ +cb90ad74c473c788ac809e4730000000001976a91488a060bc2dfe05780ae4dc\ +b6c98b12436c35a93988ac00000000460200ae50010078e5c08b39960887bf95\ +185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f92\ +45e20cfd5d830382ac634d434725ca6349ab5db920a3 {% endhighlight %} Get the same block in JSON: {% highlight bash %} dash-cli -testnet getblock \ - 0000000005fdd3a647d4048f183e639310885fab7983b8e7b5079729e065d91f + 00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b {% endhighlight %} Result: {% highlight json %} { - "hash": "0000000005fdd3a647d4048f183e639310885fab7983b8e7b5079729e065d91f", + "hash": "00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b", "confirmations": 1, - "size": 315, - "height": 69052, + "size": 310, + "height": 86190, "version": 536870912, "versionHex": "20000000", - "merkleroot": "56a667fce4c05710e656066313a08f607c0d795e4a0023e68458aef09723a12b", + "merkleroot": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56", "tx": [ - "56a667fce4c05710e656066313a08f607c0d795e4a0023e68458aef09723a12b" + "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56" ], "cbTx": { - "version": 1, - "height": 69052, - "merkleRootMNList": "839b7c7ad87cbe430e0cc467fe453a05352b5d0808a5c7052cfd1b617dfbd91d" + "version": 2, + "height": 86190, + "merkleRootMNList": "877392defa24888af72aa15f92b6609e71db1b385c1895bf870896398bc0e578", + "merkleRootQuorums": "a320b95dab4963ca2547434d63ac8203835dfd0ce245924fa83dc6bab6ac57c7" }, - "time": 1553800963, - "mediantime": 1553800156, - "nonce": 3227388553, - "bits": "1c226f3e", - "difficulty": 7.434282417439254, - "chainwork": "000000000000000000000000000000000000000000000000003dfe3d34685d0a", - "previousblockhash": "00000000143348f7ece2c339f71a2df77d5c1a299002374397e5755d62594535", + "time": 1556114577, + "mediantime": 1556113720, + "nonce": 2503323484, + "bits": "1c0094aa", + "difficulty": 440.8261075201009, + "chainwork": "0000000000000000000000000000000000000000000000000045ab6f9403a8e7", + "previousblockhash": "000000000073a041bac70a7c3e49c29e8bc954071aeee6e00c7ac8064a372e27", "chainlock": false } {% endhighlight %} @@ -345,86 +346,88 @@ Get the same block in JSON with transaction details: {% highlight bash %} dash-cli -testnet getblock \ - 0000000005fdd3a647d4048f183e639310885fab7983b8e7b5079729e065d91f 2 + 00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b 2 {% endhighlight %} Result: {% highlight json %} { - "hash": "0000000005fdd3a647d4048f183e639310885fab7983b8e7b5079729e065d91f", + "hash": "00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b", "confirmations": 1, - "size": 315, - "height": 69052, + "size": 310, + "height": 86190, "version": 536870912, "versionHex": "20000000", - "merkleroot": "56a667fce4c05710e656066313a08f607c0d795e4a0023e68458aef09723a12b", + "merkleroot": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56", "tx": [ { - "txid": "56a667fce4c05710e656066313a08f607c0d795e4a0023e68458aef09723a12b", - "size": 234, + "txid": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56", + "size": 229, "version": 3, "type": 5, "locktime": 0, "vin": [ { - "coinbase": "03bc0d0104031f9d5c08fabe6d6d736170747365743a7265737574736574000c870f000008308d3b4900000019730100000000000000580000004f0000000d2f6e6f64655374726174756d2f", - "sequence": 0 + "coinbase": "03ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000", + "sequence": 4294967295 } ], "vout": [ { - "value": 11.25000000, - "valueSat": 1125000000, + "value": 8.10000000, + "valueSat": 810000000, "n": 0, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 cb594917ad4e5849688ec63f29a0f7f3badb5da6 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914cb594917ad4e5849688ec63f29a0f7f3badb5da688ac", + "asm": "OP_DUP OP_HASH160 cbd7bfcc50351180132b2c0698cb90ad74c473c7 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "yereyozxENB9jbhqpbg1coE5c39ExqLSaG" + "yeuGUfPMrbEqAS2Pw1wonYgEPbM4LAA9LK" ] } }, { - "value": 11.25000000, - "valueSat": 1125000000, + "value": 8.10000000, + "valueSat": 810000000, "n": 1, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 477a52436b944f3e9223ac8404a7717d4176fa53 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914477a52436b944f3e9223ac8404a7717d4176fa5388ac", + "asm": "OP_DUP OP_HASH160 88a060bc2dfe05780ae4dcb6c98b12436c35a939 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "ySqPMrmGiB5zu7TYqgdaviEsqixPJc9hNQ" + "yYmrsYP3XYMZr1cGtha3QzmuNB1C7CfyhV" ] } } ], - "extraPayloadSize": 38, - "extraPayload": "0100bc0d01001dd9fb7d611bfd2c05c7a508085d2b35053a45fe67c40c0e43be7cd87a7c9b83", + "extraPayloadSize": 70, + "extraPayload": "0200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3", "cbTx": { - "version": 1, - "height": 69052, - "merkleRootMNList": "839b7c7ad87cbe430e0cc467fe453a05352b5d0808a5c7052cfd1b617dfbd91d" + "version": 2, + "height": 86190, + "merkleRootMNList": "877392defa24888af72aa15f92b6609e71db1b385c1895bf870896398bc0e578", + "merkleRootQuorums": "a320b95dab4963ca2547434d63ac8203835dfd0ce245924fa83dc6bab6ac57c7" }, "instantlock": false, "chainlock": false } ], "cbTx": { - "version": 1, - "height": 69052, - "merkleRootMNList": "839b7c7ad87cbe430e0cc467fe453a05352b5d0808a5c7052cfd1b617dfbd91d" + "version": 2, + "height": 86190, + "merkleRootMNList": "877392defa24888af72aa15f92b6609e71db1b385c1895bf870896398bc0e578", + "merkleRootQuorums": "a320b95dab4963ca2547434d63ac8203835dfd0ce245924fa83dc6bab6ac57c7" }, - "time": 1553800963, - "mediantime": 1553800156, - "nonce": 3227388553, - "bits": "1c226f3e", - "difficulty": 7.434282417439254, - "chainwork": "000000000000000000000000000000000000000000000000003dfe3d34685d0a", - "previousblockhash": "00000000143348f7ece2c339f71a2df77d5c1a299002374397e5755d62594535", + "time": 1556114577, + "mediantime": 1556113720, + "nonce": 2503323484, + "bits": "1c0094aa", + "difficulty": 440.8261075201009, + "chainwork": "0000000000000000000000000000000000000000000000000045ab6f9403a8e7", + "previousblockhash": "000000000073a041bac70a7c3e49c29e8bc954071aeee6e00c7ac8064a372e27", "chainlock": false } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md index be25ede5..94cf58e3 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md @@ -208,14 +208,13 @@ dash-cli getrawtransaction \ Result (wrapped): {% highlight text %} -0300050001000000000000000000000000000000000000000000000000000000\ -0000000000ffffffff4b02953d045e572a5c08fabe6d6d666637343633363633\ -3230616162346432366264616530386339366263623534010000000000000010\ -00000eaf0000000d2f6e6f64655374726174756d2f0000000002b4e322370100\ -00001976a914cb594917ad4e5849688ec63f29a0f7f3badb5da688acaae32237\ -010000001976a914a3c5284d3cd896815ac815f2dd76a3a71cb3d8e688ac0000\ -0000260100953d00007b8577a1c051bcab40e08c72209f3eddc476d859c8054c\ -57a7287700b2de2db4 +030005000100000000000000000000000000000000000000000000000000000000000\ +00000ffffffff2703ae50011a4d696e656420627920416e74506f6f6c2021000b0120\ +1da9196f0000000007000000ffffffff02809e4730000000001976a914cbd7bfcc503\ +51180132b2c0698cb90ad74c473c788ac809e4730000000001976a91488a060bc2dfe\ +05780ae4dcb6c98b12436c35a93988ac00000000460200ae50010078e5c08b3996088\ +7bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f92\ +45e20cfd5d830382ac634d434725ca6349ab5db920a3 {% endhighlight %} Get the same transaction in JSON: @@ -230,61 +229,63 @@ Result: {% highlight json %} { - "hex": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff4b02953d045e572a5c08fabe6d6d666637343633363633323061616234643236626461653038633936626362353401000000000000001000000eaf0000000d2f6e6f64655374726174756d2f0000000002b4e32237010000001976a914cb594917ad4e5849688ec63f29a0f7f3badb5da688acaae32237010000001976a914a3c5284d3cd896815ac815f2dd76a3a71cb3d8e688ac00000000260100953d00007b8577a1c051bcab40e08c72209f3eddc476d859c8054c57a7287700b2de2db4", - "txid": "414a3911a274053beb867c79ad9a19bf508041554f147a1a2c73f8f9bc029717", - "size": 233, + "hex": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff2703ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000ffffffff02809e4730000000001976a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac809e4730000000001976a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac00000000460200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3", + "txid": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56", + "size": 229, "version": 3, "type": 5, "locktime": 0, "vin": [ { - "coinbase": "02953d045e572a5c08fabe6d6d666637343633363633323061616234643236626461653038633936626362353401000000000000001000000eaf0000000d2f6e6f64655374726174756d2f", - "sequence": 0 + "coinbase": "03ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000", + "sequence": 4294967295 } ], "vout": [ { - "value": 52.20000692, - "valueSat": 5220000692, + "value": 8.10000000, + "valueSat": 810000000, "n": 0, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 cb594917ad4e5849688ec63f29a0f7f3badb5da6 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914cb594917ad4e5849688ec63f29a0f7f3badb5da688ac", + "asm": "OP_DUP OP_HASH160 cbd7bfcc50351180132b2c0698cb90ad74c473c7 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "yereyozxENB9jbhqpbg1coE5c39ExqLSaG" + "yeuGUfPMrbEqAS2Pw1wonYgEPbM4LAA9LK" ] } }, { - "value": 52.20000682, - "valueSat": 5220000682, + "value": 8.10000000, + "valueSat": 810000000, "n": 1, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 a3c5284d3cd896815ac815f2dd76a3a71cb3d8e6 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914a3c5284d3cd896815ac815f2dd76a3a71cb3d8e688ac", + "asm": "OP_DUP OP_HASH160 88a060bc2dfe05780ae4dcb6c98b12436c35a939 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "ybFPBD7hm9KVd2Dubj97K5mw2ymR8gWJre" + "yYmrsYP3XYMZr1cGtha3QzmuNB1C7CfyhV" ] } } ], - "extraPayloadSize": 38, - "extraPayload": "0100953d00007b8577a1c051bcab40e08c72209f3eddc476d859c8054c57a7287700b2de2db4", + "extraPayloadSize": 70, + "extraPayload": "0200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3", "cbTx": { - "version": 1, - "height": 15765, - "merkleRootMNList": "b42ddeb2007728a7574c05c859d876c4dd3e9f20728ce040abbc51c0a177857b" + "version": 2, + "height": 86190, + "merkleRootMNList": "877392defa24888af72aa15f92b6609e71db1b385c1895bf870896398bc0e578", + "merkleRootQuorums": "a320b95dab4963ca2547434d63ac8203835dfd0ce245924fa83dc6bab6ac57c7" }, - "blockhash": "0000000005f395d62a40ef9f2a13000bd4076e2131c8671db8333a5b31e4403f", - "height": 15765, - "confirmations": 5, - "time": 1546278750, - "blocktime": 1546278750, - "instantlock": false + "blockhash": "00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b", + "height": 86190, + "confirmations": 2, + "time": 1556114577, + "blocktime": 1556114577, + "instantlock": false, + "chainlock": true } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getspecialtxes.md b/_includes/devdoc/dash-core/rpcs/rpcs/getspecialtxes.md index 7935a66e..9a2e5384 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getspecialtxes.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getspecialtxes.md @@ -3,6 +3,7 @@ This file is licensed under the MIT License (MIT) available on http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/getspecialtxes.md" %} + ##### GetSpecialTxes {% include helpers/subhead-links.md %} @@ -130,84 +131,61 @@ List of Coinbase Special Transactions (type: 5) in JSON format. {% highlight bash %} dash-cli -testnet getspecialtxes \ -0000003db0006ecaccdf5ae2cfa9d94406ef40ff65b9ec34668b87fca3da9226 5 10 0 2 +00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b 5 10 0 2 {% endhighlight %} Result: {% highlight json %} [ { - "txid": "1572a15f56307e413afe3cb7ea0017a1a3fd6d89c6c5f258cc17b2888a8e7fff", - "size": 303, + "txid": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56", + "size": 229, "version": 3, "type": 5, "locktime": 0, "vin": [ { - "coinbase": "02051c0e2f5032506f6f6c2d74444153482f", + "coinbase": "03ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000", "sequence": 4294967295 } ], "vout": [ { - "value": 68.17463792, - "valueSat": 6817463792, + "value": 8.10000000, + "valueSat": 810000000, "n": 0, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 4f79c383bc5d3e9d4d81b98f87337cedfa789536 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a9144f79c383bc5d3e9d4d81b98f87337cedfa78953688ac", + "asm": "OP_DUP OP_HASH160 cbd7bfcc50351180132b2c0698cb90ad74c473c7 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "yTZg6eePKxbJZyoaC93bVrTUq5vjhFrbst" + "yeuGUfPMrbEqAS2Pw1wonYgEPbM4LAA9LK" ] } }, { - "value": 68.85000588, - "valueSat": 6885000588, + "value": 8.10000000, + "valueSat": 810000000, "n": 1, "scriptPubKey": { - "asm": "OP_DUP OP_HASH160 a472d798c41ccb2890b1b932a2b8786c150cf440 OP_EQUALVERIFY OP_CHECKSIG", - "hex": "76a914a472d798c41ccb2890b1b932a2b8786c150cf44088ac", + "asm": "OP_DUP OP_HASH160 88a060bc2dfe05780ae4dcb6c98b12436c35a939 OP_EQUALVERIFY OP_CHECKSIG", + "hex": "76a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac", "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "ybJyF38BxTqKKL7C6VeHqbFRgViRgAfsvC" + "yYmrsYP3XYMZr1cGtha3QzmuNB1C7CfyhV" ] } - }, - { - "value": 0.67536809, - "valueSat": 67536809, - "n": 2, - "scriptPubKey": { - "asm": "047559d13c3f81b1fadbd8dd03e4b5a1c73b05e2b980e00d467aa9440b29c7de23664dde6428d75cafed22ae4f0d302e26c5c5a5dd4d3e1b796d7281bdc9430f35 OP_CHECKSIG", - "hex": "41047559d13c3f81b1fadbd8dd03e4b5a1c73b05e2b980e00d467aa9440b29c7de23664dde6428d75cafed22ae4f0d302e26c5c5a5dd4d3e1b796d7281bdc9430f35ac", - "reqSigs": 1, - "type": "pubkey", - "addresses": [ - "yb21342iADyqAotjwcn4imqjvAcdYhnzeH" - ] - } - }, - { - "value": 0.00000000, - "valueSat": 0, - "n": 3, - "scriptPubKey": { - "asm": "OP_RETURN 81b990d34ff599e8f472241357f565e6662ee8694b6ecc2fdbba384a5a08bc1e000000001e000000", - "hex": "6a2881b990d34ff599e8f472241357f565e6662ee8694b6ecc2fdbba384a5a08bc1e000000001e000000", - "type": "nulldata" - } } ], - "extraPayloadSize": 38, - "extraPayload": "0100051c0000f258bbb41563f0badab6c2dd47b0d8e73f1b1d88036855223ab0455a750b3ceb", + "extraPayloadSize": 70, + "extraPayload": "0200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3", "cbTx": { - "version": 1, - "height": 7173, - "merkleRootMNList": "eb3c0b755a45b03a22556803881d1b3fe7d8b047ddc2b6dabaf06315b4bb58f2" + "version": 2, + "height": 86190, + "merkleRootMNList": "877392defa24888af72aa15f92b6609e71db1b385c1895bf870896398bc0e578", + "merkleRootQuorums": "a320b95dab4963ca2547434d63ac8203835dfd0ce245924fa83dc6bab6ac57c7" }, "instantlock": false, "chainlock": false diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md index 5e054a4d..636428f6 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md @@ -307,7 +307,7 @@ The `quorum list` RPC displays a list of on-chain quorums. - n: "→ → →
    `phase`" t: "number" p: "Required
    (exactly 1)" - d: "The active DKG phase" + d: "The active DKG phase
    `1` - Initialized
    `2` - Contributing
    `3` - Complaining
    `4` - Justifying
    `5` - Committing
    `6` - Finalizing" - n: "→ → →
    `sentContributions`" t: "bool" diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index ec7b9cd9..55ef7e24 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -762,6 +762,13 @@ for additional details. | **[Threshold Signature Recovery Phase](https://github.com/dashpay/dips/blob/master/dip-0007.md#recovered-threshold-signatures)** | | | A recovered signature is created by a quorum member once valid signature shares from at least the threshold number of members have been received | | `qsigrec` message | → | | Masternode sends the quorum recovered signature **to all peers** (except those that have asked to be excluded via a `qsendrecsigs` message) +Note the following timeouts defined by Dash Core related to signing sessions: + +| Parameter | Timeout, sec | Description | +| `SESSION_NEW_SHARES_TIMEOUT` | 60 | Time to wait for new shares | +| `SIG_SHARE_REQUEST_TIMEOUT` | 5 | Time to wait for a requested share before requesting from a different node | +| `SESSION_TOTAL_TIMEOUT` | 300 | Time to wait for session to complete | + {% endautocrossref %} #### Quorum Selection diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 0011777a..f3868232 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1459,6 +1459,9 @@ example, TXIDs will be in internal byte order). if the `BLOOM_UPDATE_P2PUBKEY_ONLY` flag was set. See the subsection below for details.) +As of Dash Core 0.14.0, elements in the extra payload section of DIP2-based +special transactions are also compared against bloom filters. + The following annotated hexdump of a transaction is from the [raw transaction format section][raw transaction format]; the elements which would be checked by the filter are emphasized in bold. Note that this @@ -1887,6 +1890,11 @@ If a `version` message is accepted, the receiving node should send a before initializing its half of the connection by first sending a `version` message. +Protocol version 70214 added a masternode authentication (challenge/response) +system. Following the `verack` message, masternodes should send a `mnauth` message +that signs the `mnauth_challenge` with their BLS operator key. + + | Bytes | Name | Data Type | Required/Optional | Description |----------|-----------------------|------------------|------------------------------------------|------------- | 4 | version | int32_t | Required | The highest protocol version understood by the transmitting node. See the [protocol version section][section protocol versions]. @@ -1903,6 +1911,7 @@ before initializing its half of the connection by first sending a | *Varies* | user_agent | string | Required if user_agent bytes > 0 | *Renamed in protocol version 60000.*

    User agent as defined by BIP14. Previously called subVer.

    Dash Core limits the length to 256 characters. | 4 | start_height | int32_t | Required | The height of the transmitting node's best block chain or, in the case of an SPV client, best block header chain. | 1 | relay | bool | Optional | *Added in protocol version 70001 as described by BIP37.*

    Transaction relay flag. If 0x00, no `inv` messages or `tx` messages announcing new transactions should be sent to this client until it sends a `filterload` message or `filterclear` message. If the relay field is not present or is set to 0x01, this node wants `inv` messages and `tx` messages announcing new transactions. +| 32 | mnauth_challenge | uint256 | Optional | *Added in protocol version 70214*

    A challenge to be signed by the receiving masternode. The response is returned via a `mnauth` message following the `verack` message. The following service identifiers have been assigned. @@ -1919,9 +1928,9 @@ message header has been omitted and the actual IP addresses have been replaced with [RFC5737][] reserved IP addresses.) {% highlight text %} -3e120100 .................................... Protocol version: 70206 +46120100 .................................... Protocol version: 70214 0500000000000000 ............................ Services: NODE_NETWORK (1) + NODE_BLOOM (4) -bc8f5e5400000000 ............................ Epoch time: 1415483324 +9c10ad5c00000000 ............................ Epoch time: 1554845852 0100000000000000 ............................ Receiving node's services 00000000000000000000ffffc61b6409 ............ Receiving node's IPv6 address @@ -1933,11 +1942,14 @@ bc8f5e5400000000 ............................ Epoch time: 1415483324 128035cbc97953f8 ............................ Nonce -14 .......................................... Bytes in user agent string: 20 -2f4461736820436f72653a302e31322e312e352f..... User agent: /Satoshi:0.9.2.1/ +12 .......................................... Bytes in user agent string: 18 +2f4461736820436f72653a302e31322e312e352f..... User agent: /Dash Core:0.14.0/ -851f0b00 .................................... Start height: 728965 +851f0b00 .................................... Start height: 76944 01 .......................................... Relay flag: true + +5dbb5d1baade6a9afa34db708f72c0dd +b5bd82b3656493484556689640a91357 ............ Masternode Auth. Challenge {% endhighlight %} {% endautocrossref %} @@ -2873,75 +2885,6 @@ features built in to Dash. {% endautocrossref %} -#### Debugging -{% include helpers/subhead-links.md %} - - -##### qdebugstatus -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -*Added in protocol version 70214 of Dash Core* - -The `qdebugstatus` message is used to... - -| Bytes | Name | Data type | Description | -| --- | --- | --- | --- | -| 32 | proTxHash | uint256 | The ProRegTx hash -| 8 | nTime | int64_t | -| 1-9 | sessionsSize | compactSize uint | -| `sessionsSize` * <> | sessions | | -| 96 | sig | byte[] | BLS signature - -`CDKGDebugSessionStatus`: - -| Bytes | Name | Data type | Description | -| --- | --- | --- | --- | -| 1 | llmqType | uint8_t | The type of LLMQ -| 32 | quorumHash | uint256 | The quorum identifier -| 4 | quorumHeight | uint32_t | The quorum height -| 1 | phase | uint8_t | The DKG phase of the quorum -| 1-9 | membersSize | compactSize uint | -| `membersSize` * <> | members | CDKGDebugMemberStatus | - -`CDKGDebugMemberStatus`: - -| Bytes | Name | Data type | Description | -| --- | --- | --- | --- | -| 1 | statusBitset | uint8_t | -| 32 * <> | complaintsFromMembers | uint16_t | - - - -{% endautocrossref %} - - -##### qwatch -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -*Added in protocol version 70214 of Dash Core* - -The `qwatch` message tells the receiving peer to relay LLMQ messages -(`qcontrib` messages, `qcomplaint` messages, `qjustify` messages, and -`qpcommit` messages). - -There is no payload in a `qwatch` message. See the [message header -section][section message header] for an example of a message without a payload. - -{% endautocrossref %} - - #### Distributed Key Generation {% include helpers/subhead-links.md %} @@ -3353,7 +3296,7 @@ The `qbsigs` message is used to send batched signature shares in response to a `qgetsigs` message. Note: The number of messages that can be sent in a batch is limited to 400 -(as defined by `MAX_MSGS_TOTAL_BATCHED_SIGS`). +(as defined by `MAX_MSGS_TOTAL_BATCHED_SIGS` in Dash Core). | Bytes | Name | Data type | Description | | --- | --- | --- | --- | @@ -3428,13 +3371,14 @@ The `qgetsigs` message is used to request signature shares. The response to a `qgetsigs` message is a `qbsigs` message. Note: The number of inventories in a `qgetsigs` message is limited to 200 -(as defined by `MAX_MSGS_CNT_QGETSIGSHARES`). +(as defined by `MAX_MSGS_CNT_QGETSIGSHARES` in Dash Core). | Bytes | Name | Data type | Description | | --- | --- | --- | --- | | Varies | count | compactSize uint | Number of signature shares requested | | Varies | sessionId | varint | Signing session ID -| Varies | inv | | Quorum signature inventory | +| Varies | invSize | compactSize uint | Inventory size +| Varies | inv | CAutoBitSet | Quorum signature inventory | The following annotated hexdump shows a `qgetsigs` message. (The message header has been omitted.) @@ -3448,11 +3392,13 @@ message header has been omitted.) Signature share request 1 | 80db21 ................................... Session ID -| 32012900 ................................. Inventory +| 32 ....................................... Inventory size: 50 +| 012900 ................................... Inventory Signature share request 2 | 80db22 ................................... Session ID -| 32012900 ................................. Inventory +| 32 ....................................... Inventory Size: 50 +| 012900 ................................... Inventory {% endhighlight %} {% endautocrossref %} @@ -3553,7 +3499,7 @@ session. The sessionId will be used for all P2P messages related to that session. Note: The maximum number of announcements in a `qsigsesann` message is limited to -100 (as defined by `MAX_MSGS_CNT_QSIGSESANN`). +100 (as defined by `MAX_MSGS_CNT_QSIGSESANN` in Dash Core). | Bytes | Name | Data type | Description | | --- | --- | --- | --- | @@ -3622,7 +3568,7 @@ The `qsigsinv` message (quorum signature inventory) announces one or more quorum signature share inventories known by the transmitting peer. Note: The maximum number of inventories in a `qsigsinv` message is limited to -200 (as defined by `MAX_MSGS_CNT_QSIGSHARESINV`). +200 (as defined by `MAX_MSGS_CNT_QSIGSHARESINV` in Dash Core). @@ -3630,7 +3576,8 @@ Note: The maximum number of inventories in a `qsigsinv` message is limited to | --- | --- | --- | --- | | Varies | count | compactSize uint | Number of session announcements | | Varies | sessionId | varint | Signing session ID (must be less than the maximum uint32_t value) | -| Varies | inv | | Quorum signature inventory | +| Varies | invSize | compactSize uint | Inventory size +| Varies | inv | CAutoBitSet | Quorum signature inventory | The following annotated hexdump shows a `qsigsinv` message. (The message header has been omitted.) @@ -3644,15 +3591,86 @@ Match qbsigs and qsigsesann 02 ......................................... Count: 2 84d844 ..................................... Session ID -32011a040200 ............................... Inventory +32 ......................................... Inventory size: 50 +011a040200 ................................. Inventory 84d843 ..................................... Session ID -32011a0700 ................................. Inventory +32 ......................................... Inventory size: 50 +011a0700 ................................... Inventory {% endhighlight %} {% endautocrossref %} +#### Debugging +{% include helpers/subhead-links.md %} + + + +##### qwatch +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +*Added in protocol version 70214 of Dash Core* + +The `qwatch` message tells the receiving peer to relay LLMQ messages +(`qcontrib` messages, `qcomplaint` messages, `qjustify` messages, and +`qpcommit` messages). + +There is no payload in a `qwatch` message. See the [message header +section][section message header] for an example of a message without a payload. + +{% endautocrossref %} + + ### Governance Messages {% include helpers/subhead-links.md %} diff --git a/_includes/references.md b/_includes/references.md index aba58606..dcba0bb2 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -239,7 +239,7 @@ http://opensource.org/licenses/MIT. {% comment %}{% endcomment %} [filteradd message]: /en/developer-reference#filteradd "A P2P protocol message used to add a data element to an existing bloom filter." [filterclear message]: /en/developer-reference#filterclear "A P2P protocol message used to remove an existing bloom filter." -[filterload message]: /en/developer-reference#filterclear "A P2P protocol message used to send a filter to a remote peer, requesting that they only send transactions which match the filter." +[filterload message]: /en/developer-reference#filterload "A P2P protocol message used to send a filter to a remote peer, requesting that they only send transactions which match the filter." [getaddr message]: /en/developer-reference#getaddr "A P2P protool message used to request an addr message containing connection information for other nodes" [getblocks message]: /en/developer-reference#getblocks "A P2P protocol message used to request an inv message containing a range of block header hashes" [getblocktxn message]: /en/developer-reference#getblocktxn "A P2P protocol message used to request transactions from a compact block" @@ -269,7 +269,7 @@ http://opensource.org/licenses/MIT. [qbsigs message]: /en/developer-reference#qbsigs "A P2P network message used to to send batched LLMQ signature shares" [qcomplaint message]: /en/developer-reference#qcomplaint "A P2P network message used to send a complaint about another masternodes DKG contribution" [qcontrib message]: /en/developer-reference#qcontrib "A P2P network message used to send LLMQ DKG contributions" -[qdebugstatus message]: /en/developer-reference#qdebugstatus "A P2P network message used to debug quorums" +{% comment %}{% endcomment %} [qfcommit message]: /en/developer-reference#qfcommit "A P2P network message used to finalize the members of a long-living masternode quorum (LLMQ)" [qgetsigs message]: /en/developer-reference#qgetsigs "A P2P network message used to request signature shares" [qjustify message]: /en/developer-reference#qjustify "A P2P network message used to respond to another masternodes DKG complaint" From ad582d2b583e6b05e6c1c4e9a23b25ecc33b4dde Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 29 Apr 2019 09:43:13 -0400 Subject: [PATCH 068/117] Quroum Commitment tx update - add missing version field - Updated hexdump --- _includes/devdoc/ref_transactions.md | 46 +++++++++++++++------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/_includes/devdoc/ref_transactions.md b/_includes/devdoc/ref_transactions.md index cca7a22b..33235c86 100644 --- a/_includes/devdoc/ref_transactions.md +++ b/_includes/devdoc/ref_transactions.md @@ -1023,42 +1023,44 @@ fd4901 ..................................... Extra payload size (329) Quorum Commitment Transaction Payload | 0100 ..................................... Version (1) | -| 921d0000 ................................. Block height: 7570 +| 934c0100 ................................. Block height: 85139 | | Payload from the qfcommit message +| | 0100 ................................... Version (1) +| | | | 01 ..................................... LLMQ Type (1) | | -| | 8d80561839648b844ade10b6e81069fa -| | 6c4bde6166dd59242be3487a00000000 ....... Quorum hash +| | 6b2fd2c61cea32d939ee7fe185c7abc5 +| | 01aa7001d973379f46b9200500000000 ....... Quorum hash | | | | 32 ..................................... Number of signers (50) -| | ff7effffbebe02 ......................... Aggregrated signers bitvector +| | bfffffffffff03 ......................... Aggregrated signers bitvector | | | | 32 ..................................... Number of valid members (50) -| | ff7effffbebe02 ......................... Valid members bitvector +| | bfffffffffff03 ......................... Valid members bitvector | | -| | 81d0717b893b557f54daacbd060bcffa -| | 2dc341175d0b89c7974dc57ef482ae27 -| | e10fb273eda534596993999950817cd4 ....... Quorum public key (BLS) +| | 9450e90f61a24a4205c92572666ed068 +| | 40f617ac11a26d650c88769675e81197 +| | 993858d8b695f120f0af7dd38c17a67e ....... Quorum public key (BLS) | | -| | ed93bc215d15350bd7030be811cf1df2 -| | c114f6b34df9bd4095161af93608ed90 ....... Quorum verification vector hash +| | 912507814fe204c59e14720bc961c09f +| | f88a4fd1f15e9c2efd4e4f112720967d ....... Quorum verification vector hash | | | | Quorum threshold signature (BLS) -| | 8d2bbb0b9c5b8626eb852ea0ff4f2509 -| | 19becc2d24653910fb8e11cf5573062f -| | 9f64c03a5031f1d462163ce98e8bf78a -| | 1470f7074a8e6fe23ccb53d73635ecd5 -| | ad71b26a938fc21638bcae7d272af9fa -| | 919f296a17e77191e3d4c708bc6e1b9a ....... BLS Signatures (96 bytes) +| | 0281c321090c2d2e59a0d3754dcfbc11 +| | d76c26a152b50885d826915af4d95a73 +| | 120d0e1ba7e96d89f40252e24109c323 +| | 0971dda1f554d331985ca570c76b9a1a +| | ec699ec132838ae097c767d65d0a51d7 +| | 017c62e062270b60b854ae912bc07437 ....... BLS Signatures (96 bytes) | | | | Aggregated signatures from all commitments (BLS) -| | 19e702ff84ff851312cceba1de528ee7 -| | ffe33647ae28ef895b35558512901394 -| | b430c804c7c42494a3312545606b5598 -| | 0480985494fa2c49f50c65d47570380f -| | 13c2851ce33d8584b64e8b659146d732 -| | 67d821c78d09ba7caea3d03641f78c7a ....... BLS Signature (96 bytes) +| | 91f878a0ae620e2178bff06c3a3967d7 +| | 433d4b82e7879bb927dd5cb605423c84 +| | 0641fcddf3731da80d0515a172ff3666 +| | 0f4eac88ee8fd7779e32e4f0be704078 +| | df31601b87b95374cebb4b304afc543e +| | e0d4f461a2ba0e32a711197ca559dacf ....... BLS Signature (96 bytes) {% endhighlight %} {% endautocrossref %} From 9d69c14b0bb3f953fd2e21a2453851ab03fd9868 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 29 Apr 2019 16:30:40 -0400 Subject: [PATCH 069/117] V0.14.0 LLMQ InstantSend (#124) * InstantSend - Add partial LLMQ-IS details * InstantSend - Add clarification and data flow * Minor formatting change * InstantSend - Add LLMQ-IS info to ChainLock section * RPC - Add instantllock_internal field to RPCs * Formatting update * Formatting fix * Content - Clarify instantlock* descriptions --- .../rpcs/rpcs/decoderawtransaction.md | 1 + .../dash-core/rpcs/rpcs/getrawtransaction.md | 10 +- .../dash-core/rpcs/rpcs/gettransaction.md | 1 + .../dash-core/rpcs/rpcs/listsinceblock.md | 2 + .../dash-core/rpcs/rpcs/listtransactions.md | 8 +- _includes/devdoc/guide_dash_features.md | 121 ++++++++++++++---- _includes/helpers/vars.md | 7 +- 7 files changed, 119 insertions(+), 31 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md index 9fc6f77d..509493ed 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md @@ -169,6 +169,7 @@ Result: "merkleRootQuorums": "a320b95dab4963ca2547434d63ac8203835dfd0ce245924fa83dc6bab6ac57c7" }, "instantlock": false, + "instantlock_internal": false, "chainlock": false } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md index 94cf58e3..550a669c 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md @@ -98,7 +98,12 @@ deprecated. - n: "
    `instantlock`" t: "bool" p: "Required
    (exactly 1)" - d: "If set to `true`, this transaction is locked" + d: "If set to `true`, this transaction is locked (by InstantSend or a ChainLock)" + +- n: "→
    `instantlock_internal`" + t: "bool" + p: "Required
    (exactly 1)" + d: "If set to `true`, this transaction has an InstantSend lock" - n: "
    `chainlock`" t: "bool" @@ -192,7 +197,8 @@ Result: "confirmations": 1, "time": 1546278750, "blocktime": 1546278750, - "instantlock": true + "instantlock": true, + "instantlock_internal": true, "chainlock": false } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gettransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/gettransaction.md index 46382b8e..18f3a80e 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gettransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gettransaction.md @@ -130,6 +130,7 @@ Result: "fee": -0.00030000, "confirmations": 3064, "instantlock": false, + "instantlock_internal": false, "chainlock": false, "blockhash": "00000a01007be2912c3123085534b58d341cb5e5980b967e8dcc021089487a1e", "blockindex": 1, diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md b/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md index 66e9a51c..84049e19 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md @@ -97,6 +97,7 @@ Result (edited to show only two payments): "fee": -0.00000226, "confirmations": 0, "instantlock": true, + "instantlock_internal": true, "chainlock": false, "trusted": true, "txid": "cc2e6c49faae395d79cfc91d188881e479f544c220e4dfee016889cd53b32645", @@ -115,6 +116,7 @@ Result (edited to show only two payments): "vout": 0, "confirmations": 0, "instantlock": true, + "instantlock_internal": true, "chainlock": false, "trusted": true, "txid": "cc2e6c49faae395d79cfc91d188881e479f544c220e4dfee016889cd53b32645", diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listtransactions.md b/_includes/devdoc/dash-core/rpcs/rpcs/listtransactions.md index 962a9e21..6be199ec 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listtransactions.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listtransactions.md @@ -107,7 +107,12 @@ The `listtransactions` RPC {{summary_listTransactions}} - n: "→
    `instantlock`" t: "bool" p: "Required
    (exactly 1)" - d: "Current transaction lock state" + d: "Current transaction lock state (InstantSend and/or ChainLock)" + +- n: "→
    `instantlock_internal`" + t: "bool" + p: "Required
    (exactly 1)" + d: "Current InstantSend transaction lock state" - n: "
    `chainlock`" t: "bool" @@ -208,6 +213,7 @@ Result: "fee": -0.00040000, "confirmations": 3, "instantlock": true, + "instantlock_internal": true, "chainlock": false, "blockhash": "000000000327ff7785d799dde99949457ac231ef1d956a2287c2f7bb84d9738c", "blockindex": 2, diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 55ef7e24..444eb644 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -109,6 +109,100 @@ had already been confirmed to a block depth of 5 in the blockchain. {% endautocrossref %} +#### LLMQ InstantSend +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +The introduction of Long-Living Masternode Quorums in Dash Core 0.14 provides +a foundation to further scale InstantSend. LLMQ-based InstantSend removes a +number of previously required limitations and simplifies the process by decreasing +the number of P2P messages clients must use. + +During the evaluation and transition from standard InstantSend to LLMQ-based +InstantSend, Sporks 2 (`SPORK_2_INSTANTSEND_ENABLED`) and 20 (`SPORK_20_INSTANTSEND_LLMQ_BASED`) +will both be used. Spork 2 enables or disables the entire InstantSend feature, +while spork 20 determines which of the two InstantSend mechanisms is active when +InstantSend is enabled. + +There are still some limitations on LLMQ-based InstantSend transactions: + +* Transaction inputs must either: + * Be in a block that has a ChainLock + * Have at least the number confirmations (block depth) indicated by the table below + + | **Network** | **Confirmations Required** | + |---------|--------------| + | Mainnet | 6 Blocks | + | Testnet | 2 Blocks | + | Regtest | 2 Blocks | + | Devnet | 2 Blocks | + + +Improvements from the old InstantSend system: + +* Changed: Transactions can be chained if the inputs are from transactions that are also locked +* Changed: InstantSend locks are attempted for all transactions (`tx` messages) - no need to request it via the special message (`ix` message) +* Changed: Only need to receive a single `islock` message - no need to track votes (`txlvote` messages) for each input +* Removed: Limit on number of inputs +* Removed: Limit on transaction value +* Removed: Timeout for lock - transaction locks will only be removed once the transaction is confirmed in a ChainLocked block +* Removed: Custom InstantSend fee + +Note: A transaction will __not__ be included in the block template (from `getblocktemplate`) unless it: + + 1. Has been locked, or + 2. Has been in the mempool for >=10 minutes (`WAIT_FOR_ISLOCK_TIMEOUT`) + +A miner may still include any transaction, but blocks containing only locked +transactions (or ones older than the timeout) should achieve a ChainLock faster. +This is desirable to miners since it prevents any reorgs that might orphan their +block. + +*InstantSend Data Flow* + +| **InstantSend Client** | **Direction** | **Peers** | **Description** | +| `tx` message | → | | Client sends InstantSend transaction +| **LLMQ Signing Sessions** | | | Quorums internally process locking | +| | | | Quorum(s) responsible for the transaction's inputs lock the inputs via LLMQ signing sessions +| | | | Once all inputs are locked, the quorum responsible for the overall transaction creates the transaction lock (`islock`) via an LLMQ signing session +| **LLMQ Results** | | | Quorum results broadcast to the network | +| | ← | `inv` message (islock) | Quorum responds with lock inventory +| `getdata` message (islock) | → | | Client requests lock message +| | ← | `islock` message | Quorum responds with lock message + +{% endautocrossref %} + +### ChainLocks +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +Dash's ChainLock feature leverages [LLMQ Signing Requests/Sessions](#llmq-signing-session) +to reduce uncertainty when receiving funds and remove the possibility of 51% +mining attacks. + +For each block, an LLMQ of a few hundred masternodes (300-400) is selected and each +participating member signs the first block that it sees extending the active +chain at the current height. If enough members (at least 240) see the same block +as the first block, they will be able to create a `clsig` message and propagate +it to all nodes in the network. + +If a valid `clsig` message is received by a node, it must reject all blocks (and +any descendants) at the same height that do not match the block specified in the +`clsig` message. This makes the decision on the active chain quick, easy and +unambiguous. It also makes reorganizations below this block impossible. + +When LLMQ-based InstantSend is enabled, a ChainLock is only attempted once all +transactions in the block are locked via InstantSend. If a block contains +unlocked transactions, retroactive InstantSend locks are established prior to +a ChainLock. + +Please read [DIP8 ChainLocks](https://github.com/dashpay/dips/blob/master/dip-0008.md) +for additional details. + + +{% endautocrossref %} ### PrivateSend {% include helpers/subhead-links.md %} @@ -295,33 +389,6 @@ value of only 0.00000546 DASH as shown by the calculation below. [Example Testnet PrivateSend transaction spending 546 duffs](https://testnet-insight.dashevo.org/insight/address/yWWNYVEQ84RM1xXJekj62wJPF3h1TKh9fS) -### ChainLocks -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -Dash's ChainLock feature leverages [LLMQ Signing Requests/Sessions](#llmq-signing-session) -to reduce uncertainty when receiving funds and remove the possibility of 51% -mining attacks. - -For each block, an LLMQ of a few hundred masternodes is selected and each -participating member signs the first block that it sees extending the active -chain at the current height. If enough members (e.g. >= 60%) see the same block -as the first block, they will be able to create a `clsig` message and propagate -it to all nodes in the network. - -If a valid `clsig` message is received by a node, it must reject all blocks (and -any descendants) at the same height that do not match the block specified in the -`clsig` message. This makes the decision on the active chain quick, easy and -unambiguous. It also makes reorganizations below this block impossible. - -Please read [DIP8 ChainLocks](https://github.com/dashpay/dips/blob/master/dip-0008.md) -for additional details. - - -{% endautocrossref %} - - ### Masternode Payment {% include helpers/subhead-links.md %} diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index 8c2aea55..10695d64 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -51,7 +51,12 @@ http://opensource.org/licenses/MIT. - n: "→
    `instantlock`" t: "bool" p: "Required
    (exactly 1)" - d: "Current transaction lock state" + d: "Current transaction lock state (InstantSend and/or ChainLock)" + +- n: "→
    `instantlock_internal`" + t: "bool" + p: "Required
    (exactly 1)" + d: "Current InstantSend transaction lock state" - n: "
    `chainlock`" t: "bool" From 57ccbe0a8f4da276df4235872ccb27f31b20dad7 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 30 Apr 2019 10:11:16 -0400 Subject: [PATCH 070/117] RPC - Update masternodelist - Related to dashpay/dash#2887 --- .../dash-core/rpcs/rpcs/masternodelist.md | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md index ab37fe02..d181d2ec 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md @@ -66,7 +66,7 @@ Mode | Description {% enditemplate %} -*Example from Dash Core 0.13.2* +*Example from Dash Core 0.14.0* Get unfiltered Masternode list in default mode @@ -78,44 +78,36 @@ Result: {% highlight json %} { "64fbf05880cdbd35a0278ba01a5edf0c20a9c756d15f883d496f5df35b31b542-1": { + "proTxHash": "ab51b2ba4dca27658e13fea81c0764167c1466aa2d92050c67e4490ce7623da0", "address": "167.99.164.60:19999", "payee": "ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX", "status": "ENABLED", - "lastpaidtime": 1553155206, - "lastpaidblock": 65121, + "lastpaidtime": 1556615121, + "lastpaidblock": 89725, "owneraddress": "yisedvAxYga44V9bTABzoQ7KoQMugyfU1E", "votingaddress": "yVpKfQgjkRkezFS5SpZvAEVFsbv9zJedf4", "collateraladdress": "yeXE94admJeH3oKiaB7UpwWnPZD6Q8srhT", "pubkeyoperator": "8072ac9a55d1cf5bf9c4262d49e2ef1ffcd716b8983ffdc62b940fec6cb4179d6275f8b68316f29c6c2ad540db329258" }, "6ed4aa5fa90565c2331bcd22275f684ecdca5da8dd7f83ca943aadc6f44e6746-0": { + "proTxHash": "8f5d5c7c0d9232f45f3a77eef6541922f827930b1f3bb789ad1771dc4d6275c0", "address": "3.209.222.37:19999", "payee": "yiVDR2HothEwH2Ss17GntqNp1rBUthnyje", - "status": "ENABLED", - "lastpaidtime": 1553156846, - "lastpaidblock": 65140, + "status": "POSE_BANNED", + "lastpaidtime": 1554219432, + "lastpaidblock": 72365, "owneraddress": "ycAZ9adjpGfZ2WLEpyfyUWAjkF6sXdD5df", - "votingaddress": "ycAZ9adjpGfZ2WLEpyfyUWAjkF6sXdD5df", + "votingaddress": "yQrieR9S99hqnPghoj12RszMXYzc6yzyn2", "collateraladdress": "ya82BzRBhuFZAPhgXvhkzZgqiVsMdnfan7", "pubkeyoperator": "0a7fd01cfd502296cfd523d58ee9f4cff34243abb0dcc543ec237ff4d73938e69d187f0b6838bbaf9d54b89adc0d4c8e" }, - "4ee8c581255b643d805502e2997acb3c38deb57dc9483659d77332fd5a17de9d-6": { - "address": "52.50.208.53:20005", - "payee": "ybFPBD7hm9KVd2Dubj97K5mw2ymR8gWJre", - "status": "ENABLED", - "lastpaidtime": 1553168003, - "lastpaidblock": 65194, - "owneraddress": "yV97rchAqU7UGyXPZe392TNARfR93VKuU2", - "votingaddress": "ygtDvoyioQ8Dc87A3moFgBrd97QxuiMiAR", - "collateraladdress": "ySQwPov5nLCJ4qWAB31tPTyY8kDZVNZrXM", - "pubkeyoperator": "8dfa69a96f23bd77e72c1a00984bb0df5ce93a76ca1d20694e8ad20b1dfea530cb6ee0b964b78ebb2bc8bfac22f61647" - }, "4758b97bbd20024e171767b8baf4290bec1475b254180869cdfe0db75d7faefb-0": { + "proTxHash": "5cd86ed16f87819dca7b6e4e3d24947b1a6328ed8cc4c9aec7af35fa2b162220", "address": "68.183.167.16:19999", "payee": "ycZgaHNb8AQq7HnJ3rTwx2fXUd7VCWQumX", "status": "ENABLED", - "lastpaidtime": 1553157194, - "lastpaidblock": 65147, + "lastpaidtime": 1556616437, + "lastpaidblock": 89734, "owneraddress": "yPmESxMJhZYuKDLJ1oYdH6kpE8oADVAPUQ", "votingaddress": "yLvTNLDLHa3pDMbFDRBX5mVMjCshzrDD1X", "collateraladdress": "ydGCjUEVRHkQZK3ajCsGJGDE9sjrbbS56v", From d76e5b4e314254cd529ef76f95c4c994756bcd0a Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 30 Apr 2019 14:13:54 -0400 Subject: [PATCH 071/117] V0.14.0 LLMQ remove qdebugstatus and related items (#125) * P2P - Remove qdebugstatus message * Move Spork 18 and Quorum debug inv to deprecated list * RPC - Remove quorum dkgstatus protx param --- _autocrossref.yaml | 2 - _config.yml | 1 - .../devdoc/dash-core/rpcs/rpcs/quorum.md | 23 +++----- _includes/devdoc/ref_p2p_networking.md | 53 +------------------ _includes/references.md | 1 - 5 files changed, 9 insertions(+), 71 deletions(-) diff --git a/_autocrossref.yaml b/_autocrossref.yaml index b71e28fa..d0357741 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -188,8 +188,6 @@ public key infrastructure: pki '`qcomplaint` messages': qcomplaint message '`qcontrib` message': qcontrib message '`qcontrib` messages': qcontrib message -#'`qdebugstatus` message': qdebugstatus message -#'`qdebugstatus` messages': qdebugstatus message '`qfcommit` message': qfcommit message '`qfcommit` messages': qfcommit message '`qgetsigs` message': qgetsigs message diff --git a/_config.yml b/_config.yml index c8d77492..8d62f7bc 100644 --- a/_config.yml +++ b/_config.yml @@ -579,7 +579,6 @@ devsearches: - "qbsigs": "/en/developer-reference#qbsigs" - "qcomplaint": "/en/developer-reference#qcomplaint" - "qcontrib": "/en/developer-reference#qcontrib" - #- "qdebugstatus": "/en/developer-reference#qdebugstatus" - "qfcommit": "/en/developer-reference#qfcommit" - "qgetsigs": "/en/developer-reference#qgetsigs" - "qjustify": "/en/developer-reference#qjustify" diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md index 636428f6..3c61ee44 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md @@ -90,7 +90,7 @@ Result: {% autocrossref %} -The `quorum info` RPC returns information about a specific quorums. +The `quorum info` RPC returns information about a specific quorum. *Parameter #1---LLMQ Type* @@ -236,24 +236,15 @@ Result (truncated): {% autocrossref %} -The `quorum list` RPC displays a list of on-chain quorums. +The `quorum list` RPC displays the status of the current DKG process. -*Parameter #1---provider registration hash* - -{% itemplate ntpd1 %} -- n: "`proTxHash`" - t: "string (hex)" - p: "Required
    (exactly 1)" - d: "The Provider Registration transaction hash of the masternode to show status for. If set to an empty string, the local status is shown.
    **Note: An empty string must be used unless Spork 18 (Quorum Debug Enabled) is active**" -{% enditemplate %} - -*Parameter #2---detail level* +*Parameter #1---detail level* {% itemplate ntpd1 %} - n: "`detail_level`" t: "number" - p: "Required
    (exactly 1)" - d: "Detail level of output:
    `0` - Only show counts (_default_)
    `1` - Show member indexes
    `2` - Show member's ProTxHashes" + p: "Optional
    (0 or 1)" + d: "Detail level of output (default: 0):
    `0` - Only show counts (_default_)
    `1` - Show member indexes
    `2` - Show member's ProTxHashes

    _Note: Works only when Spork 17 is enabled and only displays details related to the node running the command._" {% enditemplate %} *Result (if detail level was 0 or omitted)---JSON DKG details* @@ -587,7 +578,7 @@ p *Example from Dash Core 0.14.0 (detail_level: 1)* {% highlight bash %} -dash-cli -testnet quorum dkgstatus "" 1 +dash-cli -testnet quorum dkgstatus 1 {% endhighlight %} Result: @@ -775,7 +766,7 @@ Result: *Example from Dash Core 0.14.0 (detail_level: 2)* {% highlight bash %} -dash-cli -testnet quorum dkgstatus "" 2 +dash-cli -testnet quorum dkgstatus 2 {% endhighlight %} Result: diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index f3868232..4dd567f5 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -170,7 +170,6 @@ The currently-available type identifiers are: | 24 | [`MSG_QUORUM_COMPLAINT`][msg_quorum_complaint]{:#term-msg_quorum_complaint}{:.term} | The hash is a long-living masternode quorum complaint.
    _Added in 0.14.0_ | 25 | [`MSG_QUORUM_JUSTIFICATION`][msg_quorum_justification]{:#term-msg_quorum_justification}{:.term} | The hash is a long-living masternode quorum justification.
    _Added in 0.14.0_ | 26 | [`MSG_QUORUM_PREMATURE_COMMITMENT`][msg_quorum_premature_commitment]{:#term-msg_quorum_premature_commitment}{:.term} | The hash is a long-living masternode quorum premature commitment.
    _Added in 0.14.0_ -| 27 | [`MSG_QUORUM_DEBUG_STATUS`][msg_quorum_debug_status]{:#term-msg_quorum_debug_status}{:.term} | The hash is a long-living masternode quorum debug status.
    _Added in 0.14.0_ | 28 | [`MSG_QUORUM_RECOVERED_SIG`][msg_quorum_recovered_sig]{:#term-msg_quorum_recovered_sig}{:.term} | The hash is a long-living masternode quorum recovered signature.
    _Added in 0.14.0_ | 29 | [`MSG_CLSIG`][msg_clsig]{:#term-msg_clsig}{:.term} | The hash is a ChainLock signature.
    _Added in 0.14.0_ | 30 | [`MSG_ISLOCK`][msg_islock]{:#term-msg_islock}{:.term} | The hash is an LLMQ-based InstantSend lock.
    _Added in 0.14.0_ @@ -191,6 +190,7 @@ The deprecated type identifiers are: | 15 | [`MSG_MASTERNODE_PING`][msg_masternode_ping]{:#term-msg_masternode_ping}{:.term} | **Deprecated in 0.14.0**

    The hash is a Masternode Ping. | 19 | [`MSG_MASTERNODE_VERIFY`][msg_masternode_verify]{:#term-msg_masternode_verify}{:.term} | **Deprecated in 0.14.0**

    The hash is a Masternode Verify. | 22 | `MSG_QUORUM_DUMMY_COMMITMENT` | **Deprecated in 0.14.0**

    Temporarily used on Testnet only. +| 27 | [`MSG_QUORUM_DEBUG_STATUS`][msg_quorum_debug_status]{:#term-msg_quorum_debug_status}{:.term} | **Deprecated in 0.14.0**

    Temporarily used on Testnet only. Type identifier zero and type identifiers greater than twenty are reserved for future implementations. Dash Core ignores all inventories with @@ -1820,7 +1820,6 @@ Sporks (per [`src/spork.h`][spork.h]) | 10014 | 15 | `DETERMINISTIC_MNS_ENABLED` | Deterministic masternode lists are enabled | 10015 | 16 | `INSTANTSEND_AUTOLOCKS` | Automatic InstantSend for transactions with <=4 inputs (also eliminates the special InstantSend fee requirement for these transactions) | 10016 | 17 | `SPORK_17_QUORUM_DKG_ENABLED` | Enable long-living masternode quorum (LLMQ) distributed key generation (DKG). When enabled, simple PoSe scoring and banning is active as well. -| 10017 | 18 | `SPORK_18_QUORUM_DEBUG_ENABLED` | Enable long-living masternode quorum (LLMQ) debugging. | 10018 | 19 | `SPORK_19_CHAINLOCKS_ENABLED` | Enable LLMQ-based ChainLocks. | 10019 | 20 | `SPORK_20_INSTANTSEND_LLMQ_BASED` | Enable LLMQ-based InstantSend. | | | | @@ -1829,6 +1828,7 @@ Sporks (per [`src/spork.h`][spork.h]) | _10009_ | _10_ | _`MASTERNODE_PAY_UPDATED_NODES`_ | _Removed in Dash Core 0.14.0.
    Only current protocol version masternode's will be paid (not older nodes)_ | _10012_ | _13_ | _`OLD_SUPERBLOCK_FLAG`_ | _Removed in Dash Core 0.12.3.
    No network function since block 614820_ | _10013_ | _14_ | _`REQUIRE_SENTINEL_FLAG`_ | _Removed in Dash Core 0.14.0.
    Only masternode's running sentinel will be paid_ +| _10017_ | _18_ | _`QUORUM_DEBUG_ENABLED`_ | _Removed in Dash Core 0.14.0.

    Temporarily used on Testnet only quorum debugging. To verify `vchSig`, compare the hard-coded spork public key (`strSporkPubKey` from [`src/chainparams.cpp`][spork pubkey]) with the public key recovered from @@ -3605,55 +3605,6 @@ Match qbsigs and qsigsesann #### Debugging {% include helpers/subhead-links.md %} - - ##### qwatch {% include helpers/subhead-links.md %} diff --git a/_includes/references.md b/_includes/references.md index dcba0bb2..52529a2e 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -269,7 +269,6 @@ http://opensource.org/licenses/MIT. [qbsigs message]: /en/developer-reference#qbsigs "A P2P network message used to to send batched LLMQ signature shares" [qcomplaint message]: /en/developer-reference#qcomplaint "A P2P network message used to send a complaint about another masternodes DKG contribution" [qcontrib message]: /en/developer-reference#qcontrib "A P2P network message used to send LLMQ DKG contributions" -{% comment %}{% endcomment %} [qfcommit message]: /en/developer-reference#qfcommit "A P2P network message used to finalize the members of a long-living masternode quorum (LLMQ)" [qgetsigs message]: /en/developer-reference#qgetsigs "A P2P network message used to request signature shares" [qjustify message]: /en/developer-reference#qjustify "A P2P network message used to respond to another masternodes DKG complaint" From 9face1852d6fe3c74015c151f68afc21c44d9768 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 30 Apr 2019 15:02:07 -0400 Subject: [PATCH 072/117] Formatting fix --- _includes/devdoc/ref_p2p_networking.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 4dd567f5..9dbb35b1 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1828,7 +1828,7 @@ Sporks (per [`src/spork.h`][spork.h]) | _10009_ | _10_ | _`MASTERNODE_PAY_UPDATED_NODES`_ | _Removed in Dash Core 0.14.0.
    Only current protocol version masternode's will be paid (not older nodes)_ | _10012_ | _13_ | _`OLD_SUPERBLOCK_FLAG`_ | _Removed in Dash Core 0.12.3.
    No network function since block 614820_ | _10013_ | _14_ | _`REQUIRE_SENTINEL_FLAG`_ | _Removed in Dash Core 0.14.0.
    Only masternode's running sentinel will be paid_ -| _10017_ | _18_ | _`QUORUM_DEBUG_ENABLED`_ | _Removed in Dash Core 0.14.0.

    Temporarily used on Testnet only quorum debugging. +| _10017_ | _18_ | _`QUORUM_DEBUG_ENABLED`_ | _Removed in Dash Core 0.14.0.

    Temporarily used on Testnet only quorum debugging._ To verify `vchSig`, compare the hard-coded spork public key (`strSporkPubKey` from [`src/chainparams.cpp`][spork pubkey]) with the public key recovered from From a0bf4ca79e18c0d01a12790b28ef59555d542bf9 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 2 May 2019 08:14:27 -0400 Subject: [PATCH 073/117] Content - superblock clarify (#126) * Content - Additional info regarding superblocks * Content - Clarify superblock details * Apply suggestions from code review Co-Authored-By: thephez * Typo fix * Update _includes/devdoc/guide_dash_features.md Co-Authored-By: thephez * Formatting --- _includes/devdoc/guide_dash_features.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 444eb644..b9fd13dc 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -730,6 +730,23 @@ voted to delete them. Sentinel manages superblock creation, voting, and submission to dashd for network propagation. +Beginning ~3 days (1662 blocks) prior to a superblock, Sentinel selects one +masternode per block to rank proposals. This ranking is used to determine +what a candidate superblock (or "superblock trigger") should contain. Based on +the results, it creates and broadcasts a new superblock trigger if a matching +one was not found. + +All masternodes vote for existing superblock triggers. Each masternode casts +only 1 superblock trigger "Yes" vote per superblock cycle. It will vote "No" +for any other triggers it receives. + +Note: This means that proposal votes submitted _after_ superblock trigger +creation begins will _not_ be counted by some masternodes (those that have +already voted on a superblock trigger). + +At the superblock height, the trigger with the most "Yes" votes is paid out by +that block's miner. + ##### Sentinel Ping {% include helpers/subhead-links.md %} From afe721020ade7f4249db3ae36e4e7b75dc8a6c87 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 2 May 2019 13:48:50 -0400 Subject: [PATCH 074/117] V0.14.0 Misbehaving node list (#127) * Content - Add details for LLMQs * Content - Add/update remaining misbehaving events * Content - Delete removed misbehaving messages - Eliminated by DIP3 MNs --- _includes/devdoc/guide_p2p_network.md | 50 ++++++++++++++++++--------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/_includes/devdoc/guide_p2p_network.md b/_includes/devdoc/guide_p2p_network.md index 7ef46a5d..057acaeb 100644 --- a/_includes/devdoc/guide_p2p_network.md +++ b/_includes/devdoc/guide_p2p_network.md @@ -587,36 +587,52 @@ information. If a peer gets a banscore above the `-banscore=` threshold | Type | Misbehavior | Ban Score | Description | | ---- | ----------- | --------- | ----------- | +| Net | GetBlockTxn Index Error | **100** | Peer relayed a `getblocktxn` message with out-of-bound indices | Net | Bloom Filter Service | **100** | Bloom filter message received from peer that has bloom filter commands disabled by default (protocol version > 70201) (`filterload` message, `filteradd` message, or `filterclear` message) +| Net | Block Rejected | 1 | Peer rejected the block it requested from us | Net | Duplicate Version | 1 | Duplicate `version` message received +| Net | Wrong Devnet | **100** | Peer responded with the wrong devnet version (`version` message) +| Net | Wrong Devnet | 1 | Peer connected using the wrong devnet version (`version` message) | Net | No Version | 1 | Received a message prior to receiving a `version` message +| Net | No Verack | 1 | After sending `version` message, received a message other than a `verack` message back first | Net | Address List Size | 20 | More than 1000 addresses received (`addr` message) -| Net | Inventory List | 20 | More than 50000 inventories received (`inv` message) -| Net | Get Data Size | 20 | More than 50000 inventories requested (`getdata` message) +| Net | Inventory List | 20 | More than `MAX_INV_SZ` (50000) inventories received (`inv` message) +| Net | Get Data Size | 20 | More than `MAX_INV_SZ` (50000) inventories requested (`getdata` message) | Net | Orphan Transaction | **Varies** | Peer relayed an invalid orphan transaction. Ban score varies from 0-100 based on the specific reason (values set by `AcceptToMemoryPoolWorker()`) | Net | Bad Transaction | **Varies** | Transaction rejected from the mempool -| Net | Header List Size | 20 | More than 2000 headers received (`headers` message) +| Net | Invalid Header | **Varies** | Invalid block header received from peer (`cmpctblock` message) +| Net | Invalid CompactBlock | **100** | Invalid compact block /non-matching block transactions received from peer (`cmpctblock` message) +| Net | Header List Size | 20 | More than `MAX_HEADERS_RESULTS` (2000) headers received (`headers` message) | Net | Header List Sequence | 20 | Non-continous headers sequence received (`headers` message) -| Net | Invalid Block | Varies | Invalid block header received from peer +| Net | Invalid Block | **Varies** | Invalid block header received from peer | Net | Invalid/Expired Alert | 10 | Invalid or expired alert received (`alert` message) | Net | Bloom Filter Size | **100** | Maximum script element size (520) exceeded (`filterload` message or `filteradd` message) -| Masternode Manager | Invalid Broadcast | **Varies** | Timestamp in past (1), public key issue (**100**), signature issue (**100**), or collateral doesn't match vin (33) (`mnb` message) -| Masternode Manager | Invalid Ping | **Varies** | Signature too far in future (1), bad ping signature (33) -| Masternode Manager | List Sync | 34 | Requesting a sync of the entire masternode list too frequently (`dseg` message) -| Masternode Manager | Verify | 20 | Peer requested a verification too recently (`mnv` message) -| Masternode Manager | Unrequested Verify | 20 | Peer provided unrequested verification (`mnv` message) -| Masternode Manager | Verify Nonce | 20 | Masternode verification contains the wrong nonce (`mnv` message) -| Masternode Manager | Verify Block Height| 20 | Masternode verification contains the wrong block height (`mnv` message) -| Masternode Manager | Duplicate Verify | 20 | Peer provided a duplicate verification (`mnv` message) -| Masternode Manager | Invalid Masternode | 20 | No masternode found for the provided address (`mnv` message) -| Masternode Manager | Invalid Verify | **100** | Masternode "verified" itself (`mnv` message) +| Net | MN List Diff | 1 | Failed to get masternode list diff (`getmnlistd` message) +| Net | Unrequested MN List Diff | **100** | Peer provided an unrequested masternode list diff (`mnlistdiff` message) +| InstantSend | Invalid Lock Message | **100** | Invalid TXID or inputs in lock message (`islock` message) +| InstantSend | Verify Error | 20 | Peer relayed a message that failed to verify +| LLMQ ChainLock | Invalid | 10 | Invalid ChainLock message (`clsig` message) +| LLMQ Commitment | Null QcTx | **100** | Peer relayed a block with a null commitment +| LLMQ Commitment | Invalid LLMQ Type | **100** | Peer relayed a block containing an invalid LLMQ Type +| LLMQ Commitment | Invalid Height | **100** | Peer relayed a block that is not the first block in the DKG interval +| LLMQ Commitment | Invalid Commitment | **100** | Peer relayed a block with an invalid quorum commitment +| LLMQ DKG | Empty Message | **100** | Peer relayed a message with no payload +| LLMQ DKG | Invalid LLMQ Type | **100** | Peer relayed a message for an incorrect LLMQ Type +| LLMQ DKG | Invalid Message | **100** | Peer relayed a message that could not be deserialized +| LLMQ DKG | Preverify Failed | **100** | Peer relayed a message that could not be pre-verified +| LLMQ DKG | Signature | **100** | Peer relayed a message with an invalid signature +| LLMQ DKG | Full Verify Failed | **100** | Peer relayed a message that failed full verification +| LLMQ Signing | Too Many Messages | **100** | Maximum message count exceed in `qsigsesann` message, `qsigsinv` message, `qgetsigs` message, or `qbsigs` message +| LLMQ Signing | Signature | **100** | Peer relayed a message with an invalid recovered signature or signature share +| Masternode Authentication | Duplicate Message | **100** | Only 1 message allowed (`mnauth` message) +| Masternode Authentication | Signature | **100** | Peer relayed a message with an invalid signature (`mnauth` message) +| Masternode Authentication | Invalid MN | 10 | Peer not in the valid masternode list (`mnauth` message) | Governance | Sync | 20 | Requesting a governance sync too frequently (`govsync` message with empty hash) | Governance | Invalid Object | 20 | Peer relayed an invalid governance object (`govobj` message) | Governance | Invalid Vote | 20 | Peer relayed an invalid/invalid old vote(`govobjvote` message) | Governance | Unsupported Vote Signal | 20 | Vote signal outside the accepted range (see `govobjvote` message) -| Masternode Payment | Sync | 20 | Requesting a masternode payment sync too frequently (`mnget` message) -| Masternode Payment | Vote Signature | 20 | Invalid signature on payment vote (`mnw` message) -| Masternode Payment | Non-quorum Vote | 20 | Payment vote from masternode not in the quorum. Rule activates with DIP1 (`mnw` message) +| PrivateSend | Signature | 10 | Peer relayed a message with an invalid signature (`dsq` message) +| Spork | Invalid Time | **100** | Peer relayed a spork with a timestamp too far in the future (`spork` message) | Spork | Signature | **100** | Peer relayed a spork with an invalid signature (`spork` message) From 8c6d438a3a6b54bbfb09ff4346c634fcb7daba47 Mon Sep 17 00:00:00 2001 From: thephez Date: Fri, 3 May 2019 10:38:51 -0400 Subject: [PATCH 075/117] Cleanup (#128) * Config - remove unused keys * Remove aliases * Script - minor updates * Remove bitcoin papers * Delete all but a couple example events * Update all QE BIP links to reflect current reop location * One more BIP link update --- _config.yml | 19 +- _events.yml | 456 ---- _includes/devdoc/guide_dash_features.md | 2 +- _includes/devdoc/guide_transactions.md | 2 +- _includes/devdoc/ref_bips.md | 2 +- _includes/layout/base/bip-table.html | 106 +- _includes/templates/index.html | 12 +- _templates/bitcoin-paper.html | 11 - andreas_schildbach.asc | 32 - files/bitcoin-paper/bitcoin_es.pdf | Bin 287651 -> 0 bytes files/bitcoin-paper/bitcoin_es_latam.pdf | Bin 201675 -> 0 bytes files/bitcoin-paper/bitcoin_it.pdf | Bin 176535 -> 0 bytes files/bitcoin-paper/bitcoin_ru.pdf | Bin 190158 -> 0 bytes files/bitcoin-paper/bitcoin_se.pdf | Bin 177902 -> 0 bytes gavinandresen.asc | 313 --- gmaxwell.asc | 605 ----- jgarzik-pobox.asc | 137 - jonasschnelli.asc | 63 - laanwj-releases.asc | 280 -- laanwj.asc | 374 --- luke-jr.asc | 1285 --------- pieterwuille.asc | 3120 ---------------------- satoshinakamoto.asc | 30 - schneider.asc | 38 - scripts/bloom_filter.py | 2 +- scripts/build_publish_preview.sh | 0 scripts/create_empty_rpc_md.sh | 2 +- willbinns.asc | 427 --- 28 files changed, 65 insertions(+), 7253 deletions(-) delete mode 100644 andreas_schildbach.asc delete mode 100644 files/bitcoin-paper/bitcoin_es.pdf delete mode 100644 files/bitcoin-paper/bitcoin_es_latam.pdf delete mode 100644 files/bitcoin-paper/bitcoin_it.pdf delete mode 100644 files/bitcoin-paper/bitcoin_ru.pdf delete mode 100644 files/bitcoin-paper/bitcoin_se.pdf delete mode 100644 gavinandresen.asc delete mode 100644 gmaxwell.asc delete mode 100644 jgarzik-pobox.asc delete mode 100644 jonasschnelli.asc delete mode 100644 laanwj-releases.asc delete mode 100644 laanwj.asc delete mode 100644 luke-jr.asc delete mode 100644 pieterwuille.asc delete mode 100644 satoshinakamoto.asc delete mode 100644 schneider.asc mode change 100644 => 100755 scripts/build_publish_preview.sh delete mode 100644 willbinns.asc diff --git a/_config.yml b/_config.yml index 8d62f7bc..5d4f3ff1 100644 --- a/_config.yml +++ b/_config.yml @@ -73,24 +73,7 @@ redirects: aliases: --author=Satoshi Nakamoto: Satoshi Nakamoto - gavinandresen: Gavin Andresen - gmaxwell: Gregory Maxwell - gwb3: Garland William Binns III - harding: David Harding - jgarzik: Jeff Garzik - laanwj: Wladimir J. van der Laan - luke-jr: Luke-Jr - mikehearn: Mike Hearn - petertodd: Peter Todd - s_nakamoto: Satoshi Nakamoto - saivann: Saïvann Carignan - schildbach: Andreas Schildbach - sipa: Pieter Wuille - tcatm: Nils Schneider - whitj00: Whit Jack - CodeShark: Eric Lombrozo - saracen: Satoshi Nakamoto - theuni: Cory Fields + #gavinandresen: Gavin Andresen safe: false port: 4000 diff --git a/_events.yml b/_events.yml index 148d27f4..4c1ace21 100644 --- a/_events.yml +++ b/_events.yml @@ -1,459 +1,3 @@ -- date: 2017-01-05 - title: "CES Digital Money Forum" - venue: "Las Vegas Convention Center" - address: "3150 Paradise Road" - city: "Las Vegas" - country: "United States" - link: "http://thedigitalmoneyforum.com/" - -- date: 2017-01-07 - title: "2017 Blockchain Fintech Summit of Silicon Valley" - venue: "Santa Clara Conventional Center, Great America Ballroom" - address: "5001 Great America Pkwy" - city: "Santa Clara" - country: "United States" - link: "https://www.eventbrite.com/e/the-blockchain-fintech-summit-of-silicon-valley-tickets-29506617086" - -- date: 2017-01-12 - title: "Blockchain Incredible Party" - venue: "Business Center Gulliver" - address: "Sportyvna Square, 1A, Tower A, 24th floor" - city: "Kiev" - country: "Ukraine" - link: "http://bip001.com/" - -- date: 2017-01-17 - title: "The North American Bitcoin Conference" - venue: "Knight Center Complex" - address: "400 SE 2nd Ave" - city: "Miami" - country: "United States" - link: "http://btcmiami.com/" - -- date: 2017-01-20 - title: "London Blockchain Week" - venue: "Grange Tower Bridge Hotel" - address: "45 Prescot Street" - city: "London" - country: "United Kingdom" - link: "https://www.blockchainweek.com/" - -- date: 2017-01-23 - title: "Blockchain Expo" - venue: "Olympia" - address: "Hammersmith Rd" - city: "London" - country: "United Kingdom" - link: "http://blockchain-expo.com/" - -- date: 2017-01-25 - title: "Finance Disrupted" - venue: "St. Pancras Renaissance Hotel" - address: "Euston Road" - city: "London" - country: "United Kingdom" - link: "http://www.economist.com/events-conferences/emea/finance-disrupted" - -- date: 2017-01-28 - title: "Bitcoin Brunch @ International Day of Privacy" - venue: "Urban Chef" - address: "Koningstraat 50/51" - city: "Arnhem Bitcoincity" - country: "The Netherlands" - link: "https://www.ArnhemBitcoinstad.nl" - -- date: 2017-02-14 - title: "Event Horizon" - venue: "Hofburg Palace" - address: "Michaelerkuppel, 1010" - city: "Vienna" - country: "Austria" - link: "http://eventhorizon2017.com/" - -- date: 2017-02-21 - title: "d10e" - venue: "Sheraton Hotel" - address: "Calea Dorobantilor 5-7" - city: "Bucharest" - country: "Romania" - link: "http://d10e.biz/" - -- date: 2017-02-27 - title: "Distributed: Markets" - venue: "Ritz Carlton" - address: "181 Peachtree St NE" - city: "Atlanta" - country: "United States" - link: "https://godistributed.com/events/markets/" - -- date: 2017-03-01 - title: "Blockchain Africa Conference 2017" - venue: "The Focus Rooms" - address: "The Core, The Core Shopping Centre, Leeuwkop Rd and Kikuyu Rd" - city: "Johannesburg" - country: "South Africa" - link: "http://blockchainafrica.co" - -- date: 2017-03-07 - title: "APAC Blockchain Conference" - venue: "Aerial UTS Function Centre" - address: "235 Jones Street, Level 7, Building 10" - city: "Sydney" - country: "Australia" - link: "http://www.questevents.com.au/apac-blockchain-conference-2017" - -- date: 2017-03-16 - title: "An Introduction to Cryptocurrencies, Bitcoin & Blockchain" - venue: "Holiday Inn Express" - address: "Birmingham Rd, WS14 0QP" - city: "Lichfield" - country: "United Kingdom" - link: "https://www.eventbrite.co.uk/e/an-introduction-to-crypto-currencies-bitcoin-the-blockchain-tickets-32417523686" - -- date: 2017-03-16 - title: "Oral Arguments on the Status of the BitLicense" - venue: "New York State Supreme Court" - address: "71 Thomas Street, Room 204, Part 46" - city: "New York" - country: "United States" - link: "https://www.meetup.com/Article-78-Against-NYDFS/events/238080585" - -- date: 2017-03-17 - title: "BlockchainUA Conference Kyiv" - venue: "Conference Hall, Oasis, Ultramarine, 3rd floor" - address: "Vasylia Lypkivskoho St, 1А, 02000" - city: "Kiev" - country: "Ukraine" - link: "http://blockchainua.com/" - -- date: 2017-03-18 - title: "The 2nd All-Ukrainian Blockchain Hackathon" - venue: "2nd floor" - address: "Verkhnii Val st, 10" - city: "Kiev" - country: "Ukraine" - link: "http://blockchainua-hackathon.com/en" - -- date: 2017-04-07 - title: "CoinFestUK" - venue: "Manchester Conference Centre" - address: "Sackville Street, M1 3BB" - city: "Manchester" - country: "United Kingdom" - link: "https://www.coinfestuk.org" - -- date: 2017-04-08 - title: "Coinfest" - venue: "Barley's Biergarten" - address: "Pauwstraat 4" - city: "Arnhem" - country: "The Netherlands" - link: "https://www.meetup.com/Arnhem-Bitcoin-Users/events/237435368/" - -- date: 2017-05-08 - title: "The Blockchain NZ 2017" - venue: "Viaduct Event Centre" - address: "161 Halsey St" - city: "Auckland" - country: "New Zealand" - link: "http://www.theblockchain.nz/" - -- date: 2017-05-19 - title: "Bitcoin Conference Prague" - venue: "Angelo Hotel Prague" - address: "Radlicka 1g, 150 00" - city: "Prague" - country: "Czech Republic" - link: "https://bitcoinconf.eu/en" - -- date: 2017-05-22 - title: "Consensus 2017" - venue: "New York Marriott Marquis" - address: "1535 Broadway" - city: "New York" - country: "United States" - link: "http://www.coindesk.com/events/consensus-2017/" - -- date: 2017-05-24 - title: "Blockchain Cruise 2017" - venue: "Anthem of the Seas" - address: "4 Port Terminal Blvd" - city: "Bayonne" - country: "United States" - link: "https://coinsbank.com/cruise" - -- date: 2017-06-01 - title: "Blockchain Expo Europe" - venue: "Estrel" - address: "Sonnenallee 225, 12057" - city: "Berlin" - country: "Germany" - link: "http://www.blockchain-expo.com/europe" - -- date: 2017-06-12 - title: "Blockchain Government Forum" - venue: "Innovation Centre" - address: "9 Bayview Avenue" - city: "Ottawa" - country: "Canada" - link: "https://blockchainforum.ca/" - -- date: 2017-06-25 - title: "An Introduction to Cryptocurrencies & the Blockchain" - venue: "Holiday Inn Express" - address: "Birmingham Road, Wall Island, WS14 0QP" - city: "Lichfield" - country: "United Kingdom" - link: "https://www.eventbrite.co.uk/e/an-introduction-to-cryptocurrencies-bitcoin-ethereum-the-blockchain-tickets-35404136726" - -- date: 2017-06-26 - title: "Money 2020 Europe" - venue: "Bella Center" - address: "Center Blvd. 5, 2300" - city: "Copenhagen" - country: "Denmark" - link: "https://www.money2020europe.com/" - -- date: 2017-06-27 - title: "Future of Fintech" - venue: "Jazz at Lincoln Center" - address: "10 Columbus Circle" - city: "New York" - country: "United States" - link: "http://events.cbinsights.com/future-of-fintech" - -- date: 2017-07-07 - title: "London Fintech Week" - venue: "Grange Tower Bridge Hotel" - address: "45 Prescot St." - city: "London" - country: "United Kingdom" - link: "https://fintechweek.com/" - -- date: 2017-07-10 - title: "How To Disrupt Everything - A Blockchain Event" - venue: "Kromhouthal" - address: "Gedempt Hamerkanaal 231, 1021 KP" - city: "Amsterdam" - country: "The Netherlands" - link: "http://amsterdam.keynote.ae/" - -- date: 2017-07-20 - title: "P2PFISY2017" - venue: "University College London" - address: "Gower Street" - city: "London" - country: "United Kingdom" - link: "http://www.p2pfisy.com" - -- date: 2017-07-22 - title: "State of Digital Money 2017" - venue: "Cross Campus Downtown Los Angeles" - address: "800 Wilshire Blvd, 90017" - city: "Los Angeles" - country: "United States" - link: "http://stateofdigitalmoney.com/" - -- date: 2017-09-12 - title: "The Advanced Digital Innovation Summit" - venue: "McCarthy Tetrault" - address: "745 Thurlow Street" - city: "Toronto" - country: "Canada" - link: "http://www.adisummit.com/" - -- date: 2017-07-16 - title: "CoinAgenda Europe" - venue: "World Trade Center Barcelona" - address: "Edif. Este, Moll de Barcelona, s/n 08039" - city: "Barcelona" - country: "Spain" - link: "http://coinagenda.com/#about" - -- date: 2017-08-14 - title: "Bitcoin & Ethereum Summit" - venue: "Mars Auditorium" - address: "101 College Street, M5G 1L7" - city: "Toronto" - country: "Canada" - link: "https://www.eventbrite.ca/e/bitcoin-ethereum-summit-tickets-34898442180" - -- date: 2017-08-14 - title: "Blockchain and Cryptocurrency Conference Nigeria 2017" - venue: "Radisson Blu Anchorage Hotel" - address: "Ozumba Mbadiwe Street" - city: "Lagos" - country: "Nigeria" - link: "http://blockchainnigeria.group/" - -- date: 2017-08-23 - title: "SegWit Activation Party Germany" - venue: "Room 77" - address: "Graefestr. 77, 10967" - city: "Berlin" - country: "Germany" - link: "http://segwit.party/" - -- date: 2017-08-23 - title: "SegWit Activation Party United States" - venue: "Bay Harbor Hotel" - address: "7700 West Courtney Campbell Causeway" - city: "Tampa" - country: "United States" - link: "http://segwit.party/" - -- date: 2017-08-23 - title: "SegWit Activation Party Poland" - venue: "Bez Slowa" - address: "Fosa 3, 02768" - city: "Warsaw" - country: "Poland" - link: "http://segwit.party/" - -- date: 2017-08-24 - title: "SegWit Activation Party Slovakia" - venue: "Progressbar Hackerspace" - address: "Michalska 3, 811 03" - city: "Bratislava" - country: "Slovakia" - link: "http://segwit.party/" - -- date: 2017-08-24 - title: "SegWit Activation Party Switzerland" - venue: "James Joyce Pub" - address: "8 Pelikanstrasse" - city: "Zurich" - country: "Switzerland" - link: "http://segwit.party/" - -- date: 2017-08-24 - title: "SegWit Activation Party France" - venue: "Sof's Bar" - address: "43 rue Saint Sauveur 75002" - city: "Paris" - country: "France" - link: "http://segwit.party/" - -- date: 2017-08-25 - title: "SegWit Activation Party Czech" - venue: "Utopia Cajovna" - address: "Divadelni 3, 60200" - city: "Brno" - country: "Czech" - link: "http://segwit.party/" - -- date: 2017-09-07 - title: "Blockchain & Bitcoin Conference Stockholm" - venue: "Elite Hotel Marina Tower" - address: "Saltsjoqvarns kaj 25, 131 71 Nacka" - city: "Stockholm" - country: "Sweden" - link: "https://stockholm.blockchainconf.world/en" - -- date: 2017-09-09 - title: "Breaking Bitcoin Conference" - venue: "16 Rue Jean Rey, 75015" - address: "16 Rue Jean Rey" - city: "Paris" - country: "France" - link: "https://breaking-bitcoin.com/" - -- date: 2017-09-14 - title: "CoinAlts Fund Symposium" - venue: "The St. Regis San Francisco" - address: "125 3rd Street" - city: "San Francisco" - country: "United States" - link: "https://www.coinaltsfundsymposium.com/" - -- date: 2017-09-20 - title: "ICO Event Moscow" - venue: "Technopolis Moscow" - address: "Volgogradskiy dist. 42" - city: "Moscow" - country: "Russia" - link: "https://icoevent.ru/en" - -- date: 2017-09-22 - title: "BlockchainUA Conference Kyiv" - venue: "Conference Hall Oasis" - address: "Vasylia Lypkivskoho St, 1А" - city: "Kiev" - country: "Ukraine" - link: "https://blockchainua.com/en" - -- date: 2017-09-25 - title: "World Blockchain Forum: Investments & ICOs" - venue: "St Paul's - 200 Aldersgate Conference Centre" - address: "St. Pauls 200 Aldersgate" - city: "London" - country: "United Kingdom" - link: "http://london.keynote.ae/" - -- date: 2017-09-26 - title: "Blockchain Life 2017" - venue: "Petrocongress" - address: "Lodeynopolskaya st. 5/2" - city: "Saint-Petersburg" - country: "Russia" - link: "https://blockchain-life.com" - -- date: 2017-10-12 - title: "Blockchain & Bitcoin Conference Kiev" - venue: "Vsi. Svoi | Lokatsia" - address: "Desytinnaya St. 12" - city: "Kiev" - country: "Ukraine" - link: "https://kiev.blockchainconf.world/en" - -- date: 2017-10-26 - title: "Global Fintech & Blockchain China Summit 2017" - venue: "Shanghai Marriott Hotel Riverside" - address: "No. 99 Jiangbin Road,Huangpu District" - city: "Shanghai" - country: "China" - link: "http://www.gfbccs.com" - -- date: 2017-10-28 - title: "BitBrighton - Crypto/Bitcoin Event" - venue: "Latest Music Bar" - address: "14 - 17 Manchester Street Brighton BN2 1TF" - city: "Brighton" - country: "United Kingdom" - link: "http://bitbrighton.org/" - -- date: 2017-10-28 - title: "Texas Bitcoin Conference III" - venue: "Canyon View Event Center" - address: "4800 Spicewood Springs Rd" - city: "Austin" - country: "United States" - link: "http://texasbitcoinconference.com/conferences" - -- date: 2017-11-15 - title: "Blockchain WithTheBest" - venue: "Online Conference" - address: "950 Battery Street, 94111" - city: "San Francisco" - country: "United States" - link: "http://blockchain.withthebest.com" - -- date: 2017-11-19 - title: "BitBrum" - venue: "The Studio." - address: "7 Cannon St. Birmingham. B2 5EP" - city: "Birmingham" - country: "United Kingdom" - link: "http://bitbrum.org" - -- date: 2017-11-29 - title: "Blockchain Expo" - venue: "Santa Clara Convention Center" - address: "5001 Great America Pkwy, Santa Clara, 95054" - city: "Santa Clara" - country: "United States" - link: "http://blockchain-expo.com/northamerica/" - - date: 2018-01-15 title: "Blockchain Cruise Asia 2018" venue: "Mariner of The Seas" diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index b9fd13dc..b0b41515 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -340,7 +340,7 @@ mixing pool. _**Step 6 - Final Transaction (unsigned)**_ * Once the masternode has received valid `dsi` messages from all clients, it creates the final transaction and sends a `dsf` message - * Inputs/outputs are ordered deterministically as defined by [BIP-69](https://github.com/quantumexplorer/bips/blob/master/bip-0069.mediawiki#Abstract) to avoid leaking any data ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend-server.cpp#L321-#L322)) + * Inputs/outputs are ordered deterministically as defined by [BIP-69](https://github.com/dashevo/bips/blob/master/bip-0069.mediawiki#Abstract) to avoid leaking any data ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend-server.cpp#L321-#L322)) * Clients must sign their inputs to the Final Transaction within 15 seconds or risk forfeiting the collateral they provided in the `dsi` message (Step 4) ([Dash Core Reference](https://github.com/dashpay/dash/blob/e9f7142ed01c0d7b53ef8b5f6f3f6375a68ef422/src/privatesend.h#L24)) _**Step 10 - Final Transaction broadcast**_ diff --git a/_includes/devdoc/guide_transactions.md b/_includes/devdoc/guide_transactions.md index c7258f31..d9f74257 100644 --- a/_includes/devdoc/guide_transactions.md +++ b/_includes/devdoc/guide_transactions.md @@ -744,7 +744,7 @@ So, for both privacy and security, we encourage you to build your applications to avoid public key reuse and, when possible, to discourage users from reusing addresses. If your application needs to provide a fixed URI to which payments should be sent, please use `dash:` URIs as defined -by [BIP21](https://github.com/QuantumExplorer/bips/blob/master/bip-0021.mediawiki#general-format). +by [BIP21](https://github.com/dashevo/bips/blob/master/bip-0021.mediawiki#general-format). {% endautocrossref %} diff --git a/_includes/devdoc/ref_bips.md b/_includes/devdoc/ref_bips.md index c3bedc71..8441afab 100644 --- a/_includes/devdoc/ref_bips.md +++ b/_includes/devdoc/ref_bips.md @@ -48,7 +48,7 @@ column indicates if any changes were made. Dash-specific BIP information derived from Dash developer -[QuantumExplorer's BIP repository](https://github.com/QuantumExplorer/bips/blob/master/README.mediawiki). +[Dash's BIP repository](https://github.com/dashevo/bips/blob/master/README.mediawiki). {% include layout/base/bip-table.html %} diff --git a/_includes/layout/base/bip-table.html b/_includes/layout/base/bip-table.html index f707c607..f1ad8709 100644 --- a/_includes/layout/base/bip-table.html +++ b/_includes/layout/base/bip-table.html @@ -28,294 +28,294 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: 9 - Version bits with timeout and delay + Version bits with timeout and delay Informational Active 11 Applications - M-of-N Standard Transactions + M-of-N Standard Transactions Standard Active 13 Applications - Address Format for pay-to-script-hash + Address Format for pay-to-script-hash Standard - Modified Active + Modified Active 14 Peer Services - Protocol Version and User Agent + Protocol Version and User Agent Standard Active 16 Consensus (soft fork) - Pay to Script Hash + Pay to Script Hash Standard Active 21 Applications - URI Scheme + URI Scheme Standard - Modified Active + Modified Active 22 API/RPC - getblocktemplate - Fundamentals + getblocktemplate - Fundamentals Standard - Modified Active + Modified Active 23 API/RPC - getblocktemplate - Pooled Mining + getblocktemplate - Pooled Mining Standard Final 30 Consensus (soft fork) - Duplicate transactions + Duplicate transactions Standard Active 31 Peer Services - Pong message + Pong message Standard Active 32 Applications - Hierarchical Deterministic Wallets + Hierarchical Deterministic Wallets Informational - Modified Active + Modified Active 34 Consensus (soft fork) - Block v2, Height in Coinbase + Block v2, Height in Coinbase Standard Active 35 Peer Services - mempool message + mempool message Standard Active 37 Peer Services - Connection Bloom filtering + Connection Bloom filtering Standard Active 38 Applications - Passphrase-protected private key + Passphrase-protected private key Standard Active * 39 Applications - Mnemonic code for generating deterministic keys + Mnemonic code for generating deterministic keys Standard Active * 43 Applications - Purpose Field for Deterministic Wallets + Purpose Field for Deterministic Wallets Informational - Modified Active + Modified Active 44 Applications - Multi-Account Hierarchy for Deterministic Wallets + Multi-Account Hierarchy for Deterministic Wallets Standard Active * 45 Applications - Structure for Deterministic P2SH Multisignature Wallets + Structure for Deterministic P2SH Multisignature Wallets Standard Active * 47 Applications - Reusable Payment Codes for Hierarchical Deterministic Wallets + Reusable Payment Codes for Hierarchical Deterministic Wallets Informational Active * 61 Peer Services - Reject P2P message + Reject P2P message Standard - Extended Active + Extended Active 65 Consensus (soft fork) - OP_CHECKLOCKTIMEVERIFY + OP_CHECKLOCKTIMEVERIFY Standard Active 66 Consensus (soft fork) - Strict DER signatures + Strict DER signatures Standard Active 67 Applications - Deterministic Pay-to-script-hash multi-signature addresses through public key sorting + Deterministic Pay-to-script-hash multi-signature addresses through public key sorting Standard Active * 68 Consensus (soft fork) - Relative lock-time using consensus-enforced sequence numbers + Relative lock-time using consensus-enforced sequence numbers Standard Active 69 Applications - Lexicographical Indexing of Transaction Inputs and Outputs + Lexicographical Indexing of Transaction Inputs and Outputs Informational - Modified Active + Modified Active 70 Applications - Payment Protocol + Payment Protocol Standard - Modified Active + Modified Active 71 Applications - Payment Protocol MIME types + Payment Protocol MIME types Standard - Modified Active + Modified Active 72 Applications - bitcoin: uri extensions for Payment Protocol + bitcoin: uri extensions for Payment Protocol Standard - Modified Active + Modified Active 73 Applications - Use "Accept" header for response type negotiation with Payment Request URLs + Use "Accept" header for response type negotiation with Payment Request URLs Standard Active * 74 Applications - Allow zero value OP_RETURN in Payment Protocol + Allow zero value OP_RETURN in Payment Protocol Standard Active * 75 Applications - Out of Band Address Exchange using Payment Protocol Encryption + Out of Band Address Exchange using Payment Protocol Encryption Standard Active * 83 Applications - Dynamic Hierarchical Deterministic Key Trees + Dynamic Hierarchical Deterministic Key Trees Standard Active * 111 Peer Services - NODE_BLOOM service bit + NODE_BLOOM service bit Standard Active 112 Consensus (soft fork) - CHECKSEQUENCEVERIFY + CHECKSEQUENCEVERIFY Standard Active 113 Consensus (soft fork) - Median time-past as endpoint for lock-time calculations + Median time-past as endpoint for lock-time calculations Standard Active 120 Applications - Proof of Payment + Proof of Payment Standard Active * 122 Applications - URI scheme for Blockchain references / exploration + URI scheme for Blockchain references / exploration Standard Active * 123 - BIP Classification + BIP Classification Process Active 124 Applications - Hierarchical Deterministic Script Templates + Hierarchical Deterministic Script Templates Informational Active * 125 Applications - Opt-in Full Replace-by-Fee Signaling + Opt-in Full Replace-by-Fee Signaling Standard - Modified Partial + Modified Partial 130 Peer Services - sendheaders message + sendheaders message Standard Active diff --git a/_includes/templates/index.html b/_includes/templates/index.html index d674ebb9..aae38691 100644 --- a/_includes/templates/index.html +++ b/_includes/templates/index.html @@ -51,8 +51,8 @@ http://opensource.org/licenses/MIT.

    Wallets

    Wallets Guide

    Wallets Reference

    -

    HD Wallets - BIP32

    -

    Mnemonic Code - BIP39

    +

    HD Wallets - BIP32

    +

    Mnemonic Code - BIP39

    Operating Modes

    Operating Modes Guide

    @@ -65,12 +65,12 @@ http://opensource.org/licenses/MIT.

    Payment Processing Guide

    Payment Processing Examples

    --> -

    Payment Protocol - BIP70

    +

    Payment Protocol - BIP70

    @@ -81,7 +81,7 @@ http://opensource.org/licenses/MIT.

    Dash Improvement Proposals - GitHub

    Bitcoin: A Peer-to-Peer Electronic Cash System - Satoshi Nakamoto

    -

    Bitcoin Improvement Proposals (with Dash updates) - GitHub

    +

    Bitcoin Improvement Proposals (with Dash updates) - GitHub

    RESTful JSON API for Dash - BlockCypher

    RESTful JSON API for Dash - ChainRider

    diff --git a/_templates/bitcoin-paper.html b/_templates/bitcoin-paper.html index b808e11a..de28141a 100644 --- a/_templates/bitcoin-paper.html +++ b/_templates/bitcoin-paper.html @@ -27,17 +27,6 @@ UTF-8 alphabetical order {% endcomment %}

    {% translate submit_new_translation %}

    diff --git a/andreas_schildbach.asc b/andreas_schildbach.asc deleted file mode 100644 index 726bedc4..00000000 --- a/andreas_schildbach.asc +++ /dev/null @@ -1,32 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.11 (GNU/Linux) - -mQGiBD/S9DARBACgg0IF3cCFaNXbQtCAZBpiZRawQAfsfL87sHhy1xq3UwR4RmQK -sWjtZQ9C7kSDTkzzn7Sqg+YtXgiJdGeYinSMy+6mBKQjtrIKLikbjB1ORTfA29m7 -m7VTBY9X3Cvmpm0+0mWvrQ9hSpq8adXitY4Z+/VB/1YSo77RakfNr3sQOwCgzrXH -37AlAu307IgOOFnI1y78Y4cD/29gtaY3/u8ThFI/mXBOHnfXaIVGLYKtlf2Lyj2J -nixhhzxEpuDJ0lkcyNQ0N7Ky8ohJS3tGShwHjsQNtqK2V1DomsUnDI/W4hJNCSd0 -zfIoQgHvE1RbOyOpz4F+CNw8uQcxwE5FmwRtk6xazJsiMVKLFhKr6LnMoVaNi8mZ -ZFKzA/9HcXAse5epfrZD1tt7dHr58+egIA0OkoQ8oUgqCgN14qmUxQoWTdmvet0E -+XaHcowr1fXu79uQ2zuvHSk/S4mjP6uT+XOxENVcKRUtyEBtSzFDyyCj853KrBQS -ppCgxS8loHj1g1YIKqu97kGVtfmHM9L9TPVA1opuYOcJh7iJ9rQqQW5kcmVhcyBT -Y2hpbGRiYWNoIDxhbmRyZWFzQHNjaGlsZGJhY2guZGU+iF4EExECAB4FAj/S9DAC -GwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQymYr4YuHemD4NACgugPc69lhCXAo -piPN12yG57bun/kAn2qlRVIa46AnK2dRtyOESpLcNX4HiF4EExECAB4FAj/S9DAC -GwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQymYr4YuHemD4NACePnpSANmR2vrZ -Vv+BteOva6gzOJ0Anioa6JoKCYx3jQOIqoBGcBUkc8q1uQINBD/S9DgQCACctel4 -AnL7nuh+Uv+IBz0GMvu6EwdnsVCOLf54neIxuaW4BC5RYAdS6Tkp3hxv+ZfA0Uv6 -X3nz4tOsVHD50+CCq51pRlnbUwcWcn9enynJyddTjei+JmJrdOJOAzWa/al8Yagj -QSZqgD6mmPUy/a201Bh0L2zbLmxQMFg+PPB81j4yUmSXmhYzg/+SonZ3lr9pJNto -Zszg95NDyYBceiF5RSw4Qusi+C5/W3nIKzuaIKZijE9Dvo6DW6ggbB/gSxDTSjvr -nvvXeG1SdlKLeFvsJ9y/0ro3EP01RRVJvA5RaM5W2MRbwGuSRcSw8B746ijEOqSh -0IYLXoHdV7Vj4Qt/AAMFB/9ZcgxVGvs2ob6MCTVdPLlVKRKDn7RjZiDE6hRa/jp7 -ewdstjjc22DU/jCz16IX75B/sr1cDJqbChONFdljjQNWe2cTFXSazUjsyZa35+Kv -ehDi7cAU+vCYmisMpkPM41hR6HYqjadDp6gOVJTnHPcJ6EPdgUQTsNQH3dCTD68b -5WwzBEBNLdwyDGLKMcExzaOClwwSeHBmnj72O7Chdhn/M/2+fpTUPqhp/0sflVyR -/ILyc/KEp85pwani2dXuZ02igSaSIBwQJOVrjsUTwp2Wxdmywt13/cGGVlsGLe8l -Y0Kv6G43/eip+42OfIVhxRgARRtJ5KjKchTLwfl3tbgaiEkEGBECAAkFAj/S9DgC -GwwACgkQymYr4YuHemAWjACgtRlmiISVlCf7/mumklJfLM6wKIMAnA2uS1BS4d7G -JkQp09ViaWmUUsMc -=rnv6 ------END PGP PUBLIC KEY BLOCK----- diff --git a/files/bitcoin-paper/bitcoin_es.pdf b/files/bitcoin-paper/bitcoin_es.pdf deleted file mode 100644 index 3b31cd048a0a8df31702324b43579dbdb830b917..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287651 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 z 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

    qf2sK?xCegmq-nqov2>awe(* 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

    FF$k9wbOTjN3QVC85gf#Pe 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�N@Cdq^+xNm;)BB2CrcI-AGDM9uv#g0-=I!i z9;K=5_Su;JU68Qo#|@ngcI&bfzRrGa(`%_oY?90OIdbuZT$0aX)i^ta)WD{CODDxQy&j=X+-Gmj7-qmz*I%2z&MmZQ6^dRN*5 z>4-hwH;XAJ_6wB_yBDeD+*kxru@|_BKBzb(L z^Dn>lTkv#NmeA=sgcYdW^F9$6Rnurygr>_0ShzQiC=5kIcA4Z zwLdLiX3t#AySFfPb+_1}PrLQDk8hKVgSiOeHS7JYjOCl;RJ8HB zcAM3+dx~vGo#y*y))qhU`rLCA!JS7!|UTJs!ynv`fZlgHvGai z+=p{Hi~hdv_SdS$;l*i6bn@}hyF&w!ibkD6_(hitx80ZHLtc6>Ri8y~54^C(b2)O> z>lFewE{eV8ebI0(1;r`|ZetGATzK2!gTBEVu(ibAf7tBoTR&y%lo`q=IyB?VRcTvZ z=(VLQ*7@-BgqRi`IUYRRKjK(o@tL6On~y=I_?T>c{MdK+(2}(~Pw)kfNc1x!qgzo@ zOT=xC z+3WSNm)9I`Iz3nKwfR%qOk?#*C+pKA?PaJ}F3P0lLuVc-zT1y}a@8pDaIa{*l&)8@ z=+aR|W^1~7a^jY3-zp8Q*!dZ=_ovhMei!jIDr9k)(D&#>Oq`pUgG zE-gQ%AoPZhpUife;zK!d%*VUN7~Ya?enEICIlkRPNp=ydT-S_7oq6^kqL7Ji5Nv9) zd2|@3d`SI(XhKP}^F`Vb$6kfgEeY6eZDIUY0Fq}>WmwY@8CKuLc4d`WN6a7eM+6L< z7ofX!d$`)Qkz`ErZ)vXQHQI<`HLSfuyVSMX7xlVZ=mzaXSDteeT1$z+NL}999@#C; zc)W6>uEL6s)lD@ok{V7gd*NlT{$=waY)!7d`ITI0&3t{Vl)yWKcZk(z4_>S`oA*#8 zR_rN1-!k5qEWX~ee8!7jZhR~2yUXl@^y`K0!r6Adb`2|Tjo#m@DU)X5cE+0*JA;@n zR^QbbSa@_~R)YR+5zNh*KdbsBA85A9WsWY&(MqY5E;YOwu|g(8Kk$~X!AP_C4!=qj zU6Ut{;8j3_v-xt} z(?$+;gXz-}kmWoQyO7UycFh8GOo&O;l`pE1$GYmXeT&v#E_!pbdtp+re*%`GUM+8} z>dmg|MmW`wuU&i4O2bUE|m zHol!B{J1xJHZ7X-F?xNV9B)jAgiL~0?e&UBOMaF%R4Wy#_s{-u#>+@X=H`7@$|fYq zpfIM9r0{Gn;l}AfflE(Cl~zM&Q&nYZ&WqWzH?YNp^V|G! z=R>pRKV7Q&q}T0e%&?nwos)5waNw!rIf++UGYl@^|

    RzIag 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 diff --git a/files/bitcoin-paper/bitcoin_es_latam.pdf b/files/bitcoin-paper/bitcoin_es_latam.pdf deleted file mode 100644 index 9bd0d60fa9923f08e6f15c584c58ba627e478038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201675 zcma%iQ;;WJ^km!iv^j0twr$(CZQItbZEM=L-92sF-8AG|210uyD;ORgdKptYa~BIj=6{S5y_ltqi>VX6 zn2n)}sfekuy@@FwAB?k$lc}LCj7LtXj&w9Bzf<3Ac|}vxOx7c`;VLGu79g9{6<=1^(qE1+g_PtSV1x-5bypX8%S++k3sQf8Fk84AX!JCZi!`S<$fwp zo?Tz*vV5FRy?})2H*D_K@?fV9|7L3k@5QFQ3{l(iPkYY{U51kYG9+4IqV1Kqt}9M~ zZ*26YayV!E7i+HI*JK3cuD_3=7PmmS^8TVK);9e9`{8aM?Wq5EW&cmS|3~YVUfSx{ z^UG#$_wn;rpZyPK5?TA90A&hm7)dYiGqz`|HxJO~rOqo+#pT+Q^sg0sPjyJ%45OVF z*4o70SI`yI2sq~?1r{TABxlH1*a$v!3^A7ed))auS6=aE*bBiL54iJDm`PwFOPYh^zbo1)aLwC+Cd`~s=$+C60g#i=< znR@OX5zp4~CK;R7X`p85lw1=g&26ckdjd|A6Qdpn?HYRBUM_V{!v~fi$(@~>AiaXC z!1SfwwDEAPY(eWx-*YIJBJ&??F>wKfF{|q};#O1<5ySL7C<>Zxw>|Q^Y`L{?4z$Aa z5wC7LBheXUgXiy4sg|UER9Mxn99TpifhV?B&5bZy{rqfaPn%kiY4_fe!m9dZB8G_>`rp^sJ86y!cS&>>MRSC_|QILQI zB$#TJ$BauMR#R?ZCBYw3*fvz{b3B-|C!xZ76x&R$N5Ve=Jn2JYi(GiZUpa*VT~F%~ zM1RriW~YANWVmJUFl6H`e5(9i{Suk&YJ@G0@Y#|0yK~OAo%mkwMbTUc+cbVRdgC5% z0X!Vy;~YUo({k<+VfWA9*8fb+9isw1CU`0qcCa; zRUu0_SP1VyX|23Z1Cq77$eW3w6Ns|vGn!b9kgXwf{@i-S1a~qrYLC*_28#lkL4}G( zMh7)XM22L$QFe_E9x(DYBvE#B*%hiJc4-fkz-;4@>7jH*q zRnFKQWSs1))@>RdKPb=NG1x?7ZN#72Q^H~mciYC$v=7;5M~6KTHuXP|h9wqR=T0g- z%+Y3dfLEDu53TL#DdI1|E+hw}=!{r+h=$<2>s{ElCXSWI8Pk)rl+eTqHv$#JPEk59rX4yQ^N=;fuF<(XD;C+ zIG~$nl{b37vd`gH**7g8Xt17jo`vm{Gl~h$;O$WtCy$gCHo7>gu#JY_^{_AxP za2%52%+-oQj1hsK8#3e4n!OeA| z-4^FbyJu87jTh4-3%*FsHE3Y^APgGOpy6b$A#a$e(G#Z4VS=s(Catm9GmaT0Z&0JxbxLh#;cwLuQOdJkp^(aB^+`@9-37Jd$e?8-zLmNXJ8@f84&K83q_GTtdBw*<|Z4- z$22$RRX8SRYLTjkzZ=rvOZ>gw6|J0*N{O+OvJt6KVJ}OC*Bk@PSZ_e`GlSz$=R103H=3$P@TI z9G&*B1P%QuMpCg?tPtxZ4EwI82QIuic@Wgw!`Eu^ZE&J{EgV%gKC&KrQ#|F*kMtt5 zZ&U*3)JC7E$W%q2YCfKe(n6RNx;ABQscPjt7_`_`&8`TvtbA8JYi755`L9^2%X5GMw`y*( zk5~dp)n03#5R*p2s_AjCJdl){stF~)AV9&8 zUlx!U-YV29Mz*awGeCJJlLVGDjqCMrE|)ueK}@;beoah3-hrJ&lK?G=A(voPL=U1( zP(KFn}w+>u?WL6TgVGK$!<`qtuyX(z)4b3Y4%B{golc| zQGR0SKb;qQ6eu(-9IZTXj4<*Wj|Ds8REXM8@WApDy*Cr#r`YkOEDjm4NifK|%}eB zghCNG1jnJWeoF0kToOKlH1I*uy8LGWL#iDObGKZ&aBYoWnO4q&_*WpN=yz3ty5uPiF3P z<&a6c0q}jM5M9eDx~r_Xk`h9gQ54i?HwI+CN_2&R@xaZ_Afnc|E?K9uRg6=g@Wws^ z1T<7wBiLGb1vf{aKl|p;ig4Z?wuQ@u+iqz@AW5BAjWDt5Q4}&mT^?B{Z45D7q2EdzcO7XA@)z9$32cJy?eGB{nh$ZsBq z1qy*qBzBP~bDcch$xE9Eh~IRoGKw37W`TNjTg~~nl}o7GQOJVS9wK3 zNu`}grwxt)v)qjhH!Nas-j3edZfS^#_4~O)We0U^JsZrZ9MiK^@ZY*GuCzx{6uT=f z?In@43h*NA(5eFZ6p%oQX_#lT$qc$G7{6;&bu$n}iYOW?Ubogex0>=W zWXK+=L+mR;^=-EETj@e^#A_^Oi^%%yk~iV?C(aFR*%P?AtO=&KgVW|jnCzG6_*7Je zTUp6V&bVohJy}G^fk|6;nEIUG8^wYYRzeR+an^;#TH$kf@OeonjGtVYsj zh-Nj;^ppzR&~Q3~fUy}0)be(URWhMB>F$@UG3HQ-+je3LbvcXvN?V14xsy<#`JR(^ zF*L~~Z)$kBJESpKEZncZVxo*UeZ(eA1m0@C6iLL)@}@cbIJ=2L(+N}6p>n#sB$L5K zOPURd1kb(ja89gAFDfgHZpxC!%a~c*g6}P)Uu&=qa4wW2<}twrP;LJ7N=Ess4NJ}n z-wjXKIvNBHz8i~i>ZJwvcEF!MA5~XLfcehonB0M+( z(PwzE0l*3rLGuxRO&)8|(N|i(GR{5 z22fpboG+BE{uZ*hE7>}_XX~&65>%aUZ@RWFm~C<*3rD9(?zGmimOItvPVuu-t!qxDS1OA52{LO~87@$@o~ zY)Eq)TsoMEV8GGcvSqANEl>PfHQ*u*QahLKj!ZQv=BDQjJh9Ld`voU`+6=8wfif8i z<`+-?VxucpN-Ej1Fqbs07!s%-zh!>o-+6jnZ-BXPjDzZtKNru?Nv_~V-d0pvBf5JK zn!@EmB;^OYaE*xQdS`sprj&EP)qq8q*sL|r8f5=yfPiI_+SjTQzR31z`kjfBjeHEr z2fuF5%pqrVfY6kJY86obY$K9)9;5Y5)oS(O%qvhOKD2O^>*S3gqD1hZXiJm=XZclr zDfmT`8n+Y&DfD(S@brml~b_$_I*-R3yWHF{#HP3eJ(IB%_uxrd1A z&G%6Wv1}8@zj~X!`8SF>n@n$SCce9Y-go^Hihoz&9J@dGV16_g6>$YPd^Z=Vj7ePi zVngp|dI=KFVjO(Hr^KJx#3r`H`XSJOXVB58ZuIbE z-!Jy|uMVq6wH-Yj)$#wlK7K!($s2RVd>v>acr%kKr-22@yndtf(m9TUhWF{8wRzuh zKo(fc{`O%--ZjAfK$+ak+(_0y;D0oQHbg6(d{ECQLinW5&&^Cxf(7l26MF0L(k5e%K99SKMr#i;zWd-*m2}fwFTRCCH`R0T9&x=p>)hlO^EE8n zIc@_FSiQW}Kk)>IvZj+j3yGET;*6{2izbQ~(i_9<8>16Z=l7BWT6jjYUt-I->{ll! zRnzRY6w`NUS{p$W)XJ#qFI3pIzk4!7mDilimdK~z-h$R;B+?)sndaZ3wau;)OyZQI zVJyFl+%a73P^oV&xwsKxAy#+Ay3KEJj_%fJxC8US9aYTs#g)lQWkEQdJRj8SJfcI( zRmjj#Yi3Nu6>LpepLiQn+4y)(P6ZT(8chV4N`KF>>21?_gEeFAj8fE!!7)?umhAvV zZ62qaRVHbz4mn>sO#Gs)<+?x9vFX!VxZKh)!W|+z0$qbt&rR_#5q&(yE(nF&6tN?? z4z;jR7K66w1_a1`HqiA zs6QHxFhl)wtbvLDwK)lxNxyw6LS;M~;?|ELA7z6kw^!xTcj8y02H;oLHkMFt*# zlA58G@0SfI!=tsaVt3$DUZa-O6LM9%M=zLjaVwJMM($UV@DB;ZcZ zlS7fD(1EEnc3;pb`%(;)QS>-vo1s^BothpQ1#x9fYbPgjGeH}c1&n?21ZI1ysPc!{ z#vr|x7=iIOjpO5#H0CZ{eOloz1_$AH0caNqu7lKh>5liho1c8GZw7uH$C+SD$-Dw2eTW8Esl(}P0f~v(1uhk6seyG zPpZN#^eYq@DfzE)U@mT(&tmf7XI}Y0(aX6RjyfoT;b3t32D`Kvxo@f7*u?&bf2#;? z1%GNI)a!0A1L{MgfGh|k{XmQqAkwG={5Ek*ML6^AC=)4v(Y+oI-*@%ODF@p|0%>(- zEv~u--O$7z?M+Ba=G~rZw8YiABPfTDUgWJHxz6$C*1xKe1!yVSR(jv=Tke%zrmsUF9E}fI6>&v;m54jpBz5Uh(1s3M zOX^mp+Qn>Lm2ZjP6i1O;n`N^$pQdtYQ=uO*F;NWwmfV6@v}~vBS)B%MOpJdmG55Ae zx{epB3@L+$2V^BH2~|~t|7hMThJ=;$*>bYY9S)~M2` zHo%eWN27~oEmoj}GCps>WaY9ft7YS>$Ut^6P&3}(S4f^__JyE{tL{ot@;9>xE|XY8 zM#+78>!!`fe%xQOdLZ|??bHto4M%R%9{G21N?F|d`pO6PA5*ZIYFjLg1HE|s2qciSSH-4@{2^QuJu)m$-Q`nS^yyWDVXxqy+~jE!g|XMRP4*V zAzJHua9S3GmyI|U^4VHBXB#54UXndvLabfY;?diBB>_rxx?<2|&omOf1B3-t+ ztB~$DtzZ|M<46#tT(*)4`#7&D)?wH!aJOHZIHl_KhBfFMH7zn$5{hiT<0(GZ7HC)~ zKx8w(DK)-%n`onh){{HJkU((@!DrQ@zzY-%U%M4RC)SH ztJln${RP1b%#XKem$jeYm9Ov21Cgetv>l!e?wTa#(z;Fvo_EA-nf_g;@JE=MNK7I4+H59ID~Cxx!)lM5RHQ@U*py zy9px@mOS|J+B=~*y&T0XpoXMKu-8DFF?XxX4~`G$#Jb?BQ|WXzuW!3=l3SmX6AfNa zzw^4#J8`aJU@U$PZVV2pokOarwQpu=piUrY`FI)*&;n}a9~uXEOZtXxh8-Wtr2AHx zD2Q^X;xXHyGO=gMJ#8PUY49G_TmYb&NY^8Iw22%i(>c)E= z%*6rKt@`#b4xNBHUJ9Qzc^T*mq|_RSnUD{5z|(8!AL9TyMp(rceW+erYS(7 zgQo?m_O#@*SzP%+0~T;)57H7i*tW5ES3R^$Hu)9i#Um58*P=wl=ep#J!;Uq|j9`HX zFgJSryLmb4aIOcth@St-^Q;Ycc5Ne=cMr${+taJ9X7b1TOx$ zH=U@v1d}*@uXG(cZ)l(aTjBoO2_O$%hvrk<4?6NJhbw{zs?-QaP{Zrn#Vf863KeZF zn@e#E?N)8{lF#hJf0u^m(O)ZsVssFiTqo)$xs_d;X-O=TUMRIKP8d`?=LnDRrI)^i zD66WxF6RpLrk^dHf?Or*aKMQ$EbQXw|KN|u^-iBTsQc(Oa_h6Rqev7x3Fxl}ZWDJI zb%CS<(mk8!Hae^Ekhhm9$7<4epIz}6Q#DlVJN0bscFhVpRRUMVN)KzA0ud2zhNy$? zP)4V$CgQXkdyYy!W{mU5P_0*i_1M$dRcxD{FRpqwn;A0z;M&WzcFvEhu21`y8>i&# z+STyIB36E1e%eyjFJRQ?6)pEFbBh9$99F9++F}u@j<#RX{~f+7E#l6s-;W3 z`CfR-jX~_`@)h{wqQ!Z`^~E(V1-)ZnxHznhM(0|grCGM{v0?}`JT-SRt^P)=nAWC<-2$go7<2Te; z9?qMVjV#iQUsejMTBj>IkJZ{*`ATGJMyt)xn%=vL&}(&G|HyQ$H+GO~1a8MgW*L5{ z_RF5LLWF%xpA{Ogt5+$tUtv$8S|M%_hNTb&i!=cGljT zSimP1W@s;WQ^k?)XArLefuruwRcj84;QpbGzcosR_Lx0v%Z@3U28I!jy>Hv}=l%LZ z{ByMXjeas(Cv!4DV1N7^zdP_W+np7cedi%x>DY80$$v2%@W6uH`27TibZ?KECZneJ zF+~xNw!N-&eZ;8+rBOf*L;ndO=2@g2@sQxEs&<((sjc})PBNcg#-ly)r4t?vt#}8+ z330|d&Ykj87$`WzN>5k!w3=LaLwR@lPmj(7e-mXjKKYfn%(~+*8s+RA;p0KF_2E75 zk%c7Ls0s#bB6DnHps{Ya%3=aW)6t_(EM6nA^{JmWPnEGkSd-uRIB&;^ee*me9xk7h=C8Eujn8!WUBc&vU+R2uTjIyzHg1RUwl)&&!$XB)x{KUeOq_q< z1b7Rd;+XpsKAF!lzxn9kL+KkVESX)`e^_Ed@zmY%?8A$E%$l@(|4R7v@^QcBxzua& z_ra2LI8povRmSgLJv^T+Leil`pel$XJ&YZ^%(63@;(3rK94l?{bYc=fE{3HRpgNEN zw_rj_D66a|(%|lZM=N$eJrV10iS+3RLme4-Dhc8v_?-iTmbNW{0y=#J_Q`9~+jG`M zmLSa~DS}Xfrj1m*k~VO@Ny-}rvJ4s2)8fImYcYFN~PWgeX?50y&{kQ1^XMhndo~WF#@R|x!FCDXh z|2zbfG>!G<#yuGxNSnmt!kV-DAz&rmV(^c?shztl9b1c1Tn)#pB>@d^F=ic3mpgkQ3lFgp>&;`*g5OQ_A z!moOgX4pNWLS5b?|40;tx(GW$qJ2|+z}1e?TeiNV5RYw^PSTJ^)&)m7VBw2wrR})lvP!|UJwm8G9M;&X zG(zT)s)db9eSc2Z-ciK-dR^6L-rmhy!%=yvw@1=GYeXNzc4v)S4;juziT6+;#{4a5 z#!TfX%|Ii>Nj4$~KDiG27OOj9)f0LdoSKk*R)$TjrPweT$41$NFx1!>i@O*zpH+ooXoJV#jtLpde(66z&1a~ zM|E#W(e6N{mA;pCD`BIr!eQXq@l)MNI&+FzA!a%%^mv}~Y|oED-f8_^K2rf5f&i9} zOfm3@jWIagT2(COR=@Y<3HMbfL#`t$R(wR)mCOk-Rdqyx%gy?)23P-60~fUc5_Df} zDk8do9O0->E#g(FMN)j#&PA33y0}3!p->OFS1>d+eRmUif{>tNH{`?HjZ$2kcag_9 zXZE)H(+IAAX8jEe?om%-B5z5Xh+*i?{DraA!iZHPoCMw}E3Oh`kzNSbKW@Ci=wNYz zwW@w>j9~smSPo6Z_RN*o7)QAnAt9*9*MTK!v{7}?rcs)D!XrNtDw9Ydm)(*e&%uw7<^-bq6LF=%}w&!gAer5DwC;x9Rsx8LF%vE^$K)eF} zNcCdm*f4`pT7^lM%mhFmxX5iqKRo1EH39lqj2aC`2BKP(iH{a_$U3yvK&ARf3ga*@7MexrH$So+83f5N;Kq32+6e@25rA3nYPJ z3RK^N%7E$yfmHSYk1LAkr>5+d1H$0oQ3E$P>Xs23ZDgj|Z^piHU8fuZnXM10;B}S$ zjTHT}rW&ZRw-06%Xs&<~ng=}Qs07ak1-=d>I`?Y`Bp=Ew0^S3H5S1D#S|MR}?AsHe zfe?uXIU>}bjZTIL1B|>N%7*9_H3FQ7;@?8~iDU(Pc5;y>cG&QTYamR*{C6@x_OGd; z@=3p4R$U+(Zp%~wNU%Rb##ur%gdD1bYR_mYZkZawGD3nYNaJbof*85|;(;`KDARBz zSDYg;MG?j<*DHPxkc6hVkMvo^;D0^#9hLn4oEQ1!)WPX_@Qjb^d^}}X$4?4IeGOuY zBC5@JwAs1e88S%=y|_3G5Ee#3TyAvjRL+Hq`L7 zvH{+-Dp`Z}@|c}W`5deDB*A*ocCtQ5WY}Wif&Bi%y(@q5B{jiyt1GMakejVpw=aZB zIi^^j-<)GvFd{&T2Tz_FULnR$?1SYf8FQiGYB7TPb%y%29r##$qXzwI6g8oApXVaUSlAS^D`RGk@0Fc zu&CTSiYtv2u=OUdtSE+c`PRrAQ@@lt7q@;HjWi|QMbgqbTNJ^NqW+?iB&+paPIBQ( z_9A@YI5@2G(d@8(q>M(#D9B0nOK)?uS8vQ=s5@z^wM@Vd(Mj3+pmo6>5@+j-)?Gw& z;yG6qdg@#&Z&t3G)EA`DTlLC#-}>bABxu!`T)!QJ;>RvkwsXR%& zF8BDyWmTTEI9B>$au;3<-53$DsP;ws&T%|-twF*s|JyIgf7Lz;4&P`6rH}fpqUg~2 zt&X@HxZCPft+s&mnEPRVluX|k$-7*;H^^fHc8BvS^8e{b7W#Js)E4DFYvl^P)iRE| z4yR(FZo2m{mZwgqlc0YnmEo?l9Kk6SK1RL4LrX`C8MN$@&Erd_LclIHk>YPscOIF13TNrjaBj!Lj$1$EA3{^W&XJYepR5l^@PQ)aLo3 zmD+(g{RE`bXn@mJaO`#~1bCQZcC(NYzMyrITV1G>bB1v5Z2rX{TYTIfzoFwwf>(;_ zHhL0{-6!0bm{#6!vSzkXA z&tweiu5|kxl=%g9yv+*5JTpsoXS{c_vc%z(`T2!AZaYiy?bJwa?vn0{TBQ-grjO>O zuyxh$zIH0;#eZRm)5FEg0o88-2Ybh5C*+@`^Qb0?*hrd!lX@ZBnQa~zfJ3nPY-U*Cc95KM!t+y5gl`Y#Fk zFC=1PV`Tn6ff2|56&P{;e*{LuI@0lfTakNb>oS@G^CC(pr1}j4a(6O;dO7t7AxYYX zpy9{`eC~D;35Ef65>n^7GNT$ETS^a#)i2S!yqTlB1m7PV!~W3?@rF(DeP4(Bb-TRZ z;X88w@WcMoWN_vR2U|Pk_t*W)D1T4(D988YEI)6ydsENaiKTDmCchh#^XCN3*+&&C zefsN9+v9JUn?=@dS5E;yNPX>Wz4!D!-?#7mtI0t`V~rT!dvJ^o3nm?8>}64!}d_Aw`OcP|gPV6qPtmn_O! zszapo_5$2}3cA^8EN};t-So4*EQuyMZ%pr6)Lch+@q^*s8oI# zC$<3RL76e|q)WDsb;-Z!{!Q<6<7`Id5&btvdL@ch+&Ly!md)d*``pu_j01hvB+3qt)kt6*E9jN}dKCqv=68m# z5Z14nP>ailGUxTBLY58U*oUAZOn42&sKT6tBhOY>aNuk?c6!o31>1+wW4dY2C4#k^ zTeP!NW4#;IB1)R;A{Q5W)82}&cF~7A$LSR9rjV1|Xe)CU@d8yBUEr!dhJ#iwLmV8S z^$^E^Dy^_Y;v1Mc&TQEw>%5SAo~pMgf_m-!ACqLB!+9c-S?owKkK@rl+{u4t(rh=p z{>VrBZ*ci>B{VmyBJqAnniMfSP~R2Q0J!>NEC|+?!qTkQ_hCfOhQn3a0A?SJ9vS)SA7RwZDe!rUca@y}4e@a^M8=>Fz&5N0 zAg}M%NZWSiyK-wIvma{JR$9lvT-)zP!*&cvXSAorfmgBLhSJgx2|6hfJI0rtIw$-Nt|b)nLDAHZ3@G?x5vktX4Il zEf^}(l;2vY>3x|xB=f-6q+ ztz~UVa^W2{BNim=;A3mC0}-jIZMu89{SQI+a<6RJA-lf=KDAndJ{VxcGe}HwEnNkk zR!^1K2|$Ws0{@81?@vG#?Zv-M+9*E7v@k)e)f7u-tZOid$)UBc6j3g)3_b*Wa2+?z z%9`wPs3B`)dBFBoL_gWNfV+@n~GzIS02Mw%@XMmCf<^w?*s?GUZPcV0(>D1*-k zx@Rj2%YM>_^(XZxJ8-m#f>-x*@0T}Ya>b&an-m+(^EuQ3FQJ=S+KI@dv5!?_+6<;@ z%L+1cvTCqVxuvZ@a3RYuDBSLN_b;Xuli*@=?~TCQ_ngs8iQe>JI^}g*o$Ss0DC4>W zdhrC7-kBiUeYNdp4aX*Fc+(=($9$YaiKArG5OjS%8PN<85MZeD)zc)vBa}ywa2>tm z?$Hf3%q$F=e!HNK9LU^Y{JJY)K2Np zGY#eiDG3OuBlShifWXDGl*(D#_k1e82jwsaLw|Ds$#pa#Hp-bqbo>$1-FOagDlgtP=>1<-P#M@26H17*;_U?vr{ z#HE+sn$bPxxzCB4axuexuN9eD4#SB~(zO>&DiQe3fYsK#0;EA&Fjl~L|1=vrPl*}U zl4+{c5-vy*XT!mhL4vjXMUFTDry$z>%}tbo5|_tV%v~=)`2$bekh^v({{gOC4Ep9>1cx7S5+zU3s!|5745S=Dq@mgEw=JOO#v%(=`Cy$Ao z*86#ytYI_v>Sbvv(Q+8hFFNH_W#!}W)W?rkuIkMi^%$nRP2Uv;^l=Q626<)&Bsxoo zwG@=HOovjoNGsM8L(=S$0@Em*#ok!DMJ*`ic{*42)-khGPU=#YqpjnqJ$Gg#|CHbX zS}x_`0Xkwwi2%B*#wQJaGYa^OU&L@NJA)@uqV|z;^ zAIH)|Y)NQE6sm_rT}PupsLw4y7aWZz&6(Tl%gW@QTFurwC8dzxXA0Ectrw55Ksu0+ zbalVg!l7b&Hirz9UQA*2ZHdE0i#>NEu^ zToD1VrcRX5DeDfe}+ha!NOvR3`UP0bx z9I%)^`3Tzkyja0LER2+m64Sd}yo$z{ym@wUGU{j;F#;2Qaq>Z&e)Z~_UR4RkJ%lY3 z(9dCBAFaB_i}+04CTMcOEr@O}fe~ZBtT5NtR%k;_1_HJ09gKSY+&8Uu*+ALIUz;d- ziOb7>tTEa3m~NF_DXoIHi_R*e{@8vM(9Q}yWdPfHi0A6QlYbRhgFEQ)g;gu6jfJI) z>;gG$g)gU{IF|IPYH8~=Q39*8pp69Vhc=_u5TR#({VyAkRTMyfy z2d)Sd&bZcCI7@WkxDs%%qF6W34h$a5OcQE59Zystk6W1cJ2}n_CIl1>AM-{0Hl& zE3i`nEF)WyyY5^hfz-!3aV@WVN?*E}{DYOvHvYKJ4fBk|iLKQqI69g{xatA6nb(##($#I_HdK~DDGRJJ8GcdE@qkHQ^ha+OoHj4)R#b_wsXosR6v$!JFw{V87HlY z+hmYSL2|}iwvoW3gG|YqXH`TYP3})~cnQE4G+cdaz}lOT?S;KPmI5wC?z}TiTmOwZ zo4jPyis57mvt^RWK&5RvE?|n=5M+Nu(ZdN~RqVeXkbls|< zIi6(8knjhuZ#~dibml7cuzhx?Dk;A>zoFk!oY$l1eJcSWnc_Lu8uu}7&9i>rjG9ne zHp8*4*w~HYV92-NcdPv!)OJ^MY&PV;E#!q&yNytLU4TN6jeEp=$3C!4_=h;}gV=^) z@*r;?!i0Q04pq(97`>CX3!-{^RfUL z1C8?$O+_4d(PoREUlVf5y~3~v~IswO@&Q^YH>fl5h1j7}atwSJ;j zZM2zdN*!E+N;fQb-Nt>X!~KyR(-q$JL|XV|=8JyUh5Lb?*>Gn55A9-A1p42=La!v& z2gc}EO9%O2>eRU1cDx5^^*Jlt zz|7#f(w2?{H^dC5Ren|AlWG2c-&;c^q0K|C_Tj2D8QxA3b`%p^qaT$T^s@`9Xc! z<91wE&~Hij>l$I)*YrE1#s(|1`RXHvq_NV_9#_SHjKF(T z=7fhkhPz6JNIxo)WvX(p&dE4XkZo52LIsMVzkopF`G}}7+3W`40Sy}^O>{2%yc_}b zJSv{h%tz%=1U1g#58Z#ixPH}s0PX0iJh+{qDJ_W`2HZ?DsFJ8$fT@&{2L*$v@T*q* zQ|a@c%HDq}_cqN%UBVpmlwuW`aK|G)D!!AjAJ${i%WJS~usoxd?e$XSO4OJyV64IM zzepP6V86%f*$;?8Xg;tXQ+g8C%~S*PFDNwj*KXckdmut|UZ6O8%KUq7+f64TXj^AG z`sE$_?p10w&l~d#^2S#7smx7!XXAQqx7-PC>vF#!ZY=YXIG9{6Aa?M0k$Id;+N|@T zxO9%-ZeG?KMn8OCfV*c+hjP2g+3l-^Gkqn(7nGMYMA>24zGa>hg8z%KcMQ@b z>b7;e)a5Q)UAAr8wr$(STh(RTc+0kJ+jf_Y+uy!%?>P~BN9>6FpE(mNWCD+PVY+m{rVGE zU$&aR_|3j-;7*5BO_S#??cAoEh+t@UcIECnV$xXzOy)MauDT&Z+d&6c8_y3pKX81L@WbsP zsmj@5oQ|Afj7=dsK9y{M+hj6X3~vY9(t0TL@f4G6mRIa6crhMoB%W~{ZES~7hdIQ8 zF16G}eG}pK^Buh{kET55@l-088^CoJ6hF!QL)C{QdHEgzFx6UmWqxy`iTEPmAB`=5 z-}ququ3q!HKLa>~;~QyC-wEW`2qW>UwbM8vpMnJ2%?;6BqXYOl7|d)zO~2YiNW;4U zL+(vIAxta+KPSGv%-@mwKrhP;vI%-r0{uR0-$G&%Ux)P6YQyusog?i9rJ1|=S4h{- z`S4bKG$G+Cn#Y~CURNngPR$i;L^BMapyLE&BHXANs+)f1Thxq}o}9-k%rPK9sc@C| z1=r_~&9~y{f^q{o9T9WtuZS9FIbPUe##iS7KX%a)$mLAb9ABo@-l%6TU_PeV=gP>S;l~JJVS1bQ0W9)V}7N6}|yltEB83 zCt%3nO5+J~Do-ZlyLn-vgrn=1;DW#e9ET-xyi|~Oa-~8C+d%y3vdw0SD+A^-P3p*e z+)TQ^pjG|-OoLxE(GtIOjJ3Hr=1#K$JaP8S$HG;#Dc4HpR zdU+v3$B{E9oX#rY%6jkFvfob)KQ>8~6hR^6 zQy?+SaZM!dSnqaqd*E(O+x)=_Ia;zixaR!UPe=r5+!SsZ?p=(T3 z*&By51PPO;k_ATvUKJ5u!EAkRDp0CUSA1g^ujAyJ6H_i_z@2AKMOTQsz-mCsM}w4_ zf9DF7uR6!?g=AuIas`(2755G$QwK)gvk;!7JrkYj49s8;ywYuU>O}L%N~rZI$uaXW z@7G`us_w&m<*0V23a_K|epe{5`)=?)HhmaNaw`P^Ei!f7z-?9lzOt#!%>r3)riy%6 zr|hBbOZ2C{kp9({l0EpiKY4eFM9AW*0vrbK(cdQmN zAhqUr=8`KjlBw9{s@IZgpd$qfgUG*vgYDGNcEO@GLw^~6d^7VmkzN)^+ex_Dh0hZaxfH_ z+V-k0-nkyUD}*L0$d2!;;9erx(0>Mo;biR8!TV*#LDjVb;;C{}`>x(OsYaU87nwSI zQKXMa?EzF>o2is98*aqlq!JjxD$qtBZ&i~&M@<#$tCiR>W*dbtl@&3Vz8lrchO?Tc zas2OSl4uBBb|@zVz(}JB_cJq_u`j+O_A(>BI^F!Y@gIdg1h5_KSE^{h<2j^lLEZmO zR|v_)d+*@)vk@Xi9wO4?>h_O*ATqmqo?iHIC(TkFFjD(^BOw3*@{^4^vZvr8_EK>) zPhGPVh-jEuXgfk|6VE`raMAQ@ol%V9JexJPd#9QT2MS91pLR;dOH$6(jV8VXS+{f= zx?qX0o9ytp`ebRM(AClT|Lh42*`{IM;6ieEdA=2}4UFLT#shnsd7!>r-o5sJuR>G2A-H0{Iv>%J3!gng?h1s4*$I{6zTq#p+S>DXv$iq4#y=( zS}rnX0=qIO4$q3-j06X@`1LUOBCArBpaN}6+Wr?p9Khv0e0S?xKQEiGP?Hat;mK_fk97AhmaPK zRdh+E%2h=wM%3YeLJ;v>~jv~&$18pMnXhNSJbhvNzv5F z8DXf{^o>PAvWp+y@Z~GGqtZri0MK!hAu7l!^+2>7)8L`UoJih;=zas8V$PZBB=g5p zBpoC~c9KnQE`FWWLfN}q`Ej_a6hqb=ND8Gh0;3o?5_mZ1yLcSKlAkk@myo1k(rOL5 zR2J)Ov5O2^=({)8{yYqA&1!9IX5b&h)@G#I3J<7?E}G*Zv|BkTCm*#Js1JeWDv0rW z_;GL+rlP5jGp#7BHdMJGsbk6E+B4y2J_uSqp4RQkl0rTI*#3dy|E0YPVdYBgrTZSLJqr&mlu8{lJ?Qn#iaIEX1%?Pex9N@ z+TLTDNGuonV@{u#@8rg8+2v(ih1c{HVh}!@)48z9Jl$PYWiCA=$`L<1uPjrZAAFZ< ze;SM1{NY2dCF-}F=Kc=dBS@}b`(uB{+gRcA68+^C&m4a<4B~`5ZoqTg(HnLvW7rGO z>WTHIqB9YT-m+78=eQ2V!k}JK)*Fm5EY@?V-Ce1A|EZlFx;oQ|>`^$w!-t!WykP}> zMIWq$aFa9+1?36#&_drYM}*2QS7gYG=%DIuu%wpll%u-su9Ga;`-XD+LxsFH%A&$TDVyYT{I z@HoK~X}R4TK+Qy8)6`ho6ub5TsNeFF*cs*7!>WFqL04`jKMM#QVD z82AeMM2Ad)E%JZX;kGgn+(u)f$m09 zD+FC;91#zfJGsG;t~D3mNeq}niF@Ap(ew^#dq^oqd6VWZlkam zY0phe6E_HLk5v2O@GvX$0=o9g^?Ym=ZuGZ>h>#1mMe54F4APMcQkMM}oEmqAT0>68 zM{y^u?0L|%>cVWz6tJ3an(qorESug$pgx~EJKqqxI_q>I!sbdIs!^m*hfYbG-%<66(?y^fR!T~@$UWqtFnptZ2U8pdz9TN)rX@0X zi8@iW^Ms#_TpDw}(z6t~ZtCagv@-sq<$O|WyX z((eMz)y1IuRPj+G^9-clIMf34*&mG+^R0>X#~l=kp_-i4DR zp7wk-j6KcVeeVfkc8^zy0JRD z>uFb^?rJF??EsVai^iv0(MWWaj@HFQl`tW|kYAg_y}+5#k|U=U`JIU?kCAXY{JvCu z2Ki`g3Hs-y(Qi@Tb2S1t$SI(O`SkVaNBnI87B}9*dE*W1?4%=BAd5{2Y=T;&#Byi68Gs)oy{wg6RHrW zQ^$Xjlwa2EiSVGDFvaL>#ub|zrz*ah5|)OG#Zza`m)pW7t&Y$CP7dV@KkIXJxdzxp3S!ohf$e<30(A;jK4+fHH|OSh z?f_vrc~$;<{=6v%q#+5GRaVf!S4WT4 zFJ7I>5=)_&8{coX#RT4?uvbH)>j4i{TC-8Sf3b!iQ|O<+-`2lQEY%9iQ}uUUOGIgp zvm@Lu_I_mA+P87|&@Lg_e!L=E?qG+MOpFT{*qVcn_M1Nk#+X-aEbTe%+N-qMXEVz< zPZ{r;w#$c!4GkKGteo`GY#`~CNK=hKULxU=`#t6RglxS>Yh$t-z|ru> zA8i!3yte-RFy)1wtw?|C3y7?0sQa9ii>UJ7C#Q^1zyEEo)rvdXxLxqHh4B_0S%VUMFt{@)u1vZ7?`!CR?t`QV!u zvAPye>980YCACX|URZ`p_5E*^9rvdoSnHdczXCh@+hps4v`1A9fGVUzWg$CN#9%DF zNd89rgL1^56f5$ezI1$fX{X<^Y6|d$Y@%dZf(sGbDCw6z?@B&?Afv5|QCcvoP3&M< zvN)Ep;=}52i1Ds7YP7B9zKLg7*lL>`8G0Z$1I+oVD}WTyJ&2wk|;C&%|P*iosw36HzHiUX3>P&Hg*}r=vw_kEc!Z}r2gw|EmYh7aY8#|{bE_Ils$xHIhoAeog_dAky9 z;bvjfn23XJ&EixWc)}+9`9D@n*S@rcI~Vck{Xbj6{a-sK{P!1*?pD4%Jie|7X>2pK z2VS0A{JTCrYxe4=zOQzAhQA&*^zrrlyOm`9GgxOEr{u zir+_SZa40b?|RX4=T{JOx_{{0Eu`MKdg8@m7D1avs~3M>+zAQjSeW_X%Uet{%fAed z`gy)3^n|U%T`Rn~zTa2Gz8teDJvHIYUuy5u^LvAdz zD-!55-qcS)F)<#O-nsgq_SgljZr8}`zYS9dj+60!A|rQ|oE|9SWnpNEQwKq5p%&o5ozSg=p_$CDX5r^R?-m(u;6WkY83x9rYaq93 zZ%P??or~)*K$C^3nq#s{{_WEm}6eMx|e`e>O-gt0EySa=5S@5q?*Wth-dg7 z0{$(zs;uH|F1(5;@Vz?`4}`khZvyqd=PXJ1|I(B??7 zEw3wUWKEf7W@qIQ_h_XXd@>GZ-XgHorwXHOcO`cT5Zh5%Q(jwe*4Y4Yb8fv*pRkyB zCgrK{)hpxXhF%W!hafX8YY8(t89&oS(Kkry-DbVffS6C{+Xz4#wI;sdLQUWM`kjeC zwi($$FB{tTY|wz+av&$xhSDSb<$hl~`+1pRP)KTl*wC6t#HCeESZZ{F&-~(3LRbd| zd~oC90bFuG9rFl9j9L9=)Uz)Q=4}L`sxmh^Er>}c<0Z$}Ir?7z_AZN4v{BD*Wi##? zs>%J)D--ZylIQ02Mu=TQ^%h!lTJy0RdMC& zHsi>V>&dB5Z|u-sg{ajtM`--MZ{E9E`D)1(_|+`8wm3=Tj)>G>2iBr^v9yQIt~6OL zbL7;hz$)R81X7~d+O+lrPyXR)o)tW%Y@Cv@bU1t==@MNPTBFz&+47L?kjCCo0*{~ z6w2VtX^0W-Ra%Oimb_$!DeE?P7YlUyD;4G{qAqVtx3*s)Pm>iQ%oEu$_WRl9=!bH( z^K>$MP@I~Kg>GOKZjX2L%C&U$gV`3=VTG$t*^2oAn~bIsBD zqAC@DdR#9$Mpu<+7~LKbhy^v~&$oXxgNBJPDTZ~K^~ zYw8k_L=vv5US*2w(x1QXtxCZYFtiqT-b-1cuCxY|Q3tmC2v(nzMH)3NXn8g|#AMjQ^nxDj3zF&0Kao5SXFs%WX>$>h49 z9C9gljqf;rb?-Cxvz3c%`9?{@VIqqgL(rX{ub&m@T+q=4ABQQL&6ap{>jX$RlRXU9 z+*4hA6R$WN2Gk@uZG#AH?8}r3x#L-hi-yi6zxaD)$S>u+bUB!McwTXhox=Kat}cuO z-5usQhYQ*`Cc~#oO)D_MO8{mQ^6v^ z+$6gVm9jUgqTIKeGtlLbm#fI6M**VORA>svg;`K7F4_gXv^#OX%AuUkQwSUTOs0*8 z>?QsbG=~V)%M_9m5#r%0$BHD#`P++*9sTT)x$;`6xqZF4IZ7(jewUIJ!|5a7M9T2+ zcRgS!PL&*1?ur>ba2h#fg=}%yzku-q=nSFR_MUB` zDZ%LH^z59f_Z6iy+)9Iph`7LrC&c0&!s$*`f)|>}EEmG;!2YfX;G{5zTQ zH`seHw38+foG1*#X&Wgu4M_7Z>H)+Ds+G`RLkT!bVkI30|g@3zUDM?_V_Y zCVQoH|ALSB%(uN`Tx=oQNv9YoabD#!Vc>Q7_@vxbt9Us3yF@EXRc9Rh@_8JMT{{8O zoytWT?^VHfe%ncvO>j-tvx3NHo}?(6TXd4V4YX16km;btp=YnQ!9DrjOpamZxy9%* z5nQ1v=#Ua*XV!cCGhD+HV`tGxwP;}%;e=tFDdw;Dhu)Xi#K*RfXN%uRo-o^mslUcY zG9dB6$3y*iIAq0#W`2Oyd@49m8}B{QVu!M<`tRAF!s72Zb#9zAq9Z;_5?&6sWqMbr z0)$kwd?`+X3X=fyp^J|^B~PQ$BS=YyO7|GB+cNc(#4vsC(hMy`awq7erkMURs%F6! zaHzVZCAMWv#tzwq-*`c;=$qb3pP>X$UD7<|ApSGc$}`s_`_ICq<>J1z{6>%Inz`~< z#JHsHjLm%4-C5c?pei?r`g%f*qyLS+W?KWVCY##nxNvBh?+X^$LKQ_^`pu~va~VzT^p>mD@8^ExQ~(s>{WpXoZ_5UY@x zZ~Y<-twUgV-M6N^! zUR=cu+BExLdomzKs^hzed-+jzCYK-iMkDm=wruJdl-N@<@$wcYGD6+>^iUON)o+?q zgMlc&eybSzEa9rY91eX6zM|RAvim2}Nh@-?ZEH7gwX4u7Q-Xf-r)!8?FQsU%})H+X|?P)NncfzJ-50b;)t<9LmoX|c@otuUnQ2Kwt|@4J0fqnw;R zbw;{*!JjX$?XiEO^i72-S+|U_KkkexTdW|~>#Ys8)PZ3lTVR(ONV%klNxVI3=&c=@ zTG;JTHt8H!bfDTCoSV%b$;^&(z-snu|F_Tj9d225%%)NkYE{!sw$!7dP7E?nlq*1t zu<`UxyR$f9xBdy;OD@lHb1Qw9?_sC!>7A!KE+zkvvFy9CO%-2rX{1nB=#hJs`1`uE zj3>W;5hDJIt@4T8AH@M$--WOZGvp2bjfd6}Tdg&wX|LBW#QXLmP5drh1}V>8TOE;1 zgY+YYPTr5#y`Ast!1UJ>e@vg48aLZu|IN|QBb2gF5a72BHdQU*rr%hVZ3NqcuMW@t z+!Il(*N$1It`hFEgd1@Vr=e%ZCi?n`0uRi!^I4kbFf#rW#_~dvUuVT016mxHT5f6!G4QVH+?~KA(f6k!QF&IU)5^->hGw z_2U*9U%C3|VZ*p#{DlyIt{LF&^iBC;8i4;oG8zR~0V4;FUli zOck#NOPVSK0euq%e=gl)WGQs`_#JLaZ{J7!Rw+d^GJIhK&JIhn@% zD51vIdd%1P7v1IX_-gz|X9w52WR`g~_6lF8Az%$mxxjsa@R&w-EJk1{d61$!A)&?7 z{a{MokSB%}*VGb(a&W{G`dE_&kg@vJ8eI~PzElMz7;F;e{eCUBFHD*3F<-jtj;})5 zn@UH^cc1qn%S)kXe!tcoJIRhQ8Ba9Q5iva8v4pl9$OWonG`Q(Z`tQ3xV%S_5A5rFB zEB3*LFU_9Phg_y=$LbK9W|^S(5j>Q}vosq7auDI~uSZSso!M;~^C?PV=7%I4w&u^r zePE_EVlI@qA0r*_U2T-V99U!(?Q!(`l>>3HxEFN8&*sNFV&BPy%8*&Z(S;>dARLDK zpxP)O_y(9J3|q}p3FNOVQgg)z^ewH7hreC7S!w6P6nz*EMZ)^@!jN9|SJ~oS!%R~K z9Mk~>a#tdNT(JSmI+cnTe(t9c0bg`Y>6w&7I!vT*#%9KufrJsyX(O=_{9egHr=b8(6@i>JrgaRDD{Eu60O!{hk=M*TDJJ{7%^{{ zH{b8l)(P4gtHRYaVi3= zZ`)V|XKa%0L}mmtDt1GUMNoF5!yMJp+E z;rVJJc;m|GCwt=1(s(zThekzyqePxgP9xZ8Y~x#%xWe*^H2Ddoi0B*X1D$37H%6( zC&C|6sQ(V?$(Gx8zE2Qth;dcz=mA}7jw&gq^io#{iyYbFhU2MX#NLC%R65Qmw|Mr` zQBvN+({lxHiwy6}T|TPX1U{othD!3h40$!nO+*!PPi{i_UrTcJUQCiRqm(!E)k11< zQwgK^-pJ^SP5mNAUL4uYg`b3kEZq`xG(@T#cS|(VNpBXgqGN215i-W)4Sf0AYNL9n zuU*dX3$58z@a3(xxVKrVsf(m3T;d612s-g@PMzR6jz>#vtaA(|=iFmSXMD=;6v`l2Zj zOY&m{Jq2jOj(1^Xc!*#`JT;2?g38;M(CYz~i;|3>%=BTfsMYNSg1)`7ZR2?>5kRMbYg}BO+vn72h#gAaic#MCKc2lREcjC4`nk; zW6{8jf|vp+kwqhol(RJ<7z_`zS41DzLZ<-OMuGWxq@pT^WX%PO-l;xaN5L_?sIy8F zia0F$8&y3A@`>#ji#ELdmM6vlp(N#V9u?<RJ z`Bp8uA{HgfRindAY5jP1$HV%u4emkA$66syknOA6`%l&I2?-=YX-<9_dv&aq3AN9i zAwa|36|<-Zx1pbsvPs_z$)RL}iE>OuCA0Y^z|F6YA~Rz{+c)T_w{l4L1dV7Ua;P_< z4yI*{X|LEifR_B~@M?$`g5_u|L$g-f8B3tIYK|uIkwzSdN&$Epc6!9(#w!#dE(#OV ze8ATmO~lr268TBm>#Q+De(a-e=m=iX_l&CFftO6Srkd>v9iN+ zXhAE&j>q2?{f_=60e2`>SQc1&O2pj%JCjD;z(xT`rLrsKQABs3sYSb7c|4uQl~vG- zN8C4dRBQC=5In`I?z$Uj87h32xNksdRLydJ-mH423SNB?+^cD-Q>y5UC2fL+|5}h0 zolyN7QANaw1=)DbL-DM-LQ+rCQGU}W4c*v?FL)hfp-MTUJOjqW4_pnpOuZP%kRIzz zfYQPZjCO4^C{DMozUT!|sEsRbvnbnXwP~FAfqnZ3jmfz6M>xeEfPMQD2;#oDV6(oZ z3aaA-zhH-mC4OM$YG8|acWyAe$TB{PL$h8|GTlnk&ni-1feMCOTnK70hz1+mme=f(Ceh#qAvuh(IwdjlVlqulsS{OG4kiYg2m?J!M|qY! z0X8TK*>eDsNjZpRFIHCEVIVcOOkC1Tw4^nDs5&GpSu_23F_TgRlT?GukOwg29DP^3 z&%mH~7Bs7GYHqza8v zO`)JOBPUV27Pf=csH#@t@t8)mOmVxSrHZPCnCJD%7_lk1inzc%xrW#mw(4QejlsM06mpw?kqdRy@7yAg(*k zxMJw3Ej)0=0mRFBC-RxLs9d2(tk?tK7%Zlq%REA8ElQ8bFkaqw zY9tM2X&r&Oxh6)!yCM!kvGo+ya2X)HG zV``)Ro?`!jp7%z@!Qxd4R72)sBfhAhfYiaINo!>uKVCe8UdtD>u&)6Z53LvK4J_`- zFYhLZl&t3V2>oPsfB6OflH&Quh%Xl8>#Ku692JkirnQyG)Thoqe)@R52ad%W{p66U zISb~mx0Kt3-UM9Fi~c$EBw4pb+oH&kA&zBx_;c>(gV7p4v3aO|8!+65u$q;YWh%A{m|^6kXN+# zC&;Z`^j&D?23Sh-b3idC9f)b~QeXCNm>lguJ$4|o2o;_%R2o$r zQj}-{7Hy&hj3?y3g*d`nOfw0Vw--Dw5>9T>qRhB>Sme{#dw)AFuF`r+!(DkDHk#&) z5j1l-Q;Pi}KWNvK7kzgr2~r0_*V&Q&SV5VLL~B+bxNoOoF?NDv*;KX(uI$1>v>8{t zvG=ezLGsnQK$akxF<<>(_x93YH}J^xK_qzHMCgI)SMzn72QqnonZoRK+Y1s}+D&|Q z?MuD~g}XL!<-Y(b*vn5@QZn7^YXeX5w|ySuY=;Ty-}l?#F>EKEhn%xq1N++hrF73{ zqn&i;SW(AV3V>bJ2CzyI6YKy$E{iWQmkg2&A?&K3pLH`0X_QCnYnyS3vytwUXOvPHgf69Y25wLc4GDB2hymxn9$m`0(> z+Gg=G3?_P_A)_j*5?OhYr23QCFb>ddHB@RjxN6lP$J|UG8 zeF{Y1M-|4z2Rti?vo%&XSn5NPx*M=L!XeXSG%wrI#5;5W+?hW@e2BLkV=nmc;=10~ zy=0Dj;gqh2^*IbRp`MRYK@>)ldn@IgdV7Xrv(_u0vlA6OAbE=eIcupabB9BnvH>uz zyz5jqxkGCc=K@Il#n2=w?RPB~oYSw!?F2<9d!BW@TfxgIA-K11&`0X|ASn_X)L=M?KEWHO|Dr;TVy(SRVM7Og7Kyf!-9}ywQav0f zzYY~a{L}r!{Wx~))v{h$t%DEGQoJL&>+(6g5jE&_1b(!HNT0ogwcwFW4A^|c6SmQ{ z8e7Wx{Y#__DkQ#pcl$?dO$&R3MR4OhW^J;XF^LssEow1XHS#*78cFQ!0)Zmo+8uoB zd1)FJMk?+w1@v{R1qg@1#Jn*HJX|m^7{?)A5T|htQAXz+CI%c^NdQ*eN2)U>PQe5M zbb>5?g^tps7qvh&Dhpp@KK)P)>0g71ws#`sm7u`88+1eJ078a!1n5+ZD2>`(39y#% zRKYFSK+}@Ouw$&VYui(yD-aChHe=M^GK=T=G4~b#U9X$pMb=no0}%7XeNTYFU9vl->9mq=M|#yM0N*2a~XTG$qM`w-!-z69g(|_ zl2p11FrA>~6a2(^4862r;C`RE)JEEHNj|RSjwe|8Bob`i{bBtJ#u>A5uEJiVlhM1N z(Ko~`Al8wvHHccyHhp;xSLeq9%%d|UQiB#D1BB&Fls&jc7mLQ)IkQp1V1vY4!)h1| z`%tCk6L(Ak-S6O|x{nai`Z-c#Ix?EXJqo~@gQ&Jybe<9vI<`7C1X`{O7&s`tYLE@x zAuS&#L1Dy?e>MTIX$)9{W_wvit1k>XPGF3pI0p_8`qwn_@oDNr26#)F;XnB?=C0z~Ps>HGvMaL`2gcSEwUR3kA_u;`moa;Zj=IdK0~ z{L17J6f#s4fEiB$Q(4Wiy8Wk@%9}4(Jt*-$FIu24kb59^HK$1Z($~2asP&6Sweo#R z(@^1E!mR0L4Jy{qJ3@|Iv5Agbx-J|GT~=F>&>`JmnADfTn_n+l%;5`tNe@ekYHILk zQq+g89S!EsB};tOhf*sCKOoL=xydvc33R`r;`NXIHj}8N*$I&oez_27y%hH0DAf?; zx0!Xeo*l)nkFq?j^Wb)z?Ppy4GBYJ6tpu_lmVDkOD(|Ju#S8)wxt-QT zMDc9)gsbiOFMM>y&k(%8YGJi}yTnD=1XX7BqwHEBnoFqXhIQe&8cr4}@afLX>~q>~aR9a*Z|EmHyv8JbO2H%jFkyCtqHRx%WtKP7MtfrC?Hkugo? zd=@N4$*xz(a5rIlOTkS27G^TdfaY*dQu5jm~t3XK3wN8=8(DssAPJ8W$FS56te%Tl;{uCez^Gi1#GWb`k=+Qne-s z#}lS_mBazkXYQHgN=*e%|0bwP={=l4fEAj}XRY#R5;c8Ya8brTmoy+^Hm8w=$49lR z{u{cJOXEWqoBYYI9W&;%6EI-OCNaafmhzc+zI*)dA`HT5e%4I)6x>fiaRN+cxE=2v z_vi2u=`oz$ZG5shEd6D=btXR_9Ot?r-|;e4Uw=`Gy>Ky_O%vx( zK58t{hrng55$;dC-&Jg){=Dq5V6XTkJdfYNH!Pul$$S}K#vlxYI&kSsQk$|pfPHn_ zV5nL5$6p9@RlT-E@W}sa&2%Oi&{u)-fl7O^CiFRSBpTR3inlx2N`M`pOli_kRLZL<;U zEkz%N8O}y#K+?DD+f6G9i9WZHzBh$59#+s(ZkcuB8xD5X|I78r{@+C@|4A4uOl_GS|EBijemz*pnSQ3``uVV|b!R+U z5v2M&9uRb3>i5*EKU>)NdX@WsJlgCY-ND%F)%d^PeGW{dh7%k^(oc}~_C1-TM2YZv zb>+Zr`tWWv<+!umI=1P~bmt)A%T~r7zh;bQc$M5Yj<+_Cr_`jJG>@bHzUlwxk&-@l zr}?$B(Ow(y%M|)r>Wbq>$PTO=+p@fwrONwwzzs!SmSK|8d;5>N95$j+lh36PsWEhx zIge)0v+}O{6)0^8YUMN8+HmN(6V^A#O<2#~g~nDfNSjI$4L+wJ>>tb?4xiejbs-m= zYePWz zV0RZx1fGAHsZ(v&(;C^hdON~x^v98Bel)(Nj3jqc7;)4*!U|)u^cBGUD86Io7{+WR zmV&92L4%t`8nQr_4bhcQ45ftH*DR7=?1*$C-sJn$C5s=GloWgqoirQo=)va)T9#uAX#-!8PSs}p2t(L@!or+KB~XtS%;+Q95ZV}pN4#L|hRCkZ zcZisbImkb9P|GH}22fFJF3mxNHC!pE&rM|UJk;C5x|RtT5>P8Tq`DT07&zNBEYB0N zJ^kB|r7tFi{=>H~!K7f{^+d%c*E<4g?l|%37S$X|BlS7pGZNd{9Gc9V++EQl&s#+I z>K-tinm=LS9@VUv)JL?rM)wdP1R>T#=<6+hTww4o#!`-AT41qs(cr4e6AE6~%(YT- zTTWIb>-U715w*gILj_QDtCpP7!+f*j8_hc;2ccQYr+WM$k!l2DmBGJ{ZIKFO)h z`HXR*A{C#2%RF~A@KOF&hNzqqaMEB(kkE9daU)d5cO+JIOYTiF3--V+nr_8MdXxcl z8*YpW<8%VtAiTmKff#-JT-9IT{G|qH_Ko6=O&IQXgp)##ap;6}MvhVMCp8U88FxGYlnHa7$GRe$AYM((mW~!r|$|sc9i-6_R3dKKS)7$CB)* z4LY(qhb+NZCb_5a>h~L0(Dzj^6tqDi|9ol|VtO6uNC~#h0-{X&>10VtOos2ltu=!> z-6(-w&!Vz?Y@i5&mdm7x25nOasy1uKCDHLPFTBpK462{G0^RnPLbFtVlspDWbXD*L z@?CMD_tl~uL|jEG`UI{1R766HQXWlGn-1vwsR%QeLsX4??o&cs{xxWyiDP_9a%|$Ja|XqU^XvYIre)3w7J=VNMZJXgj9O+ zT04w+E~gAk<6O&=^Fc)zlnSJAgeN8@d~r>AgeG~@;jtK3?GxKqd_66F6!a4Ep>xEz z$XDvEu3MvF#a6)=ZRrqEc;Hay*;R#`s(hK@6+$-vxX8j&0X2m?|7sUxOZ7_1kIuzo zZ{yblst(~{60tZ{b9$Ec&E$wItT+MnYkENJ3epm92}OyDVm>Kze>)^Su~hDw`e5;u zZqdBTY<*1;)LxYQJz|WD68gC-WQzWRgym7?91hUW5~|>f?fsYBGmysWWxZF=U$}p< znj+>t*!4kj`*gB*@Yqp>JlMFIBjs34c>yc_LSz1zWji~y6gWT>>YzUfu8lxI1}5pZQGjIwrx&q+qP}n z{KmHJWU}+y+PnL&x_9foIaOWfyzc7m)6eH&iPy;}a`;KisbXIN&g zNbnS_H6xj8aWmwb8HBXczF2(eVW}&CI(IrzrG#ucWk-Bg_EekK!kU-km*hM#SJN_P z6*DNy^2Vd;*vDb2rn4Xg!{lm**hp^bZ!$i`XB>f;6BNniN#L!Cl=f4?daC;7>?Nh% zQV7nR20J)GE}HWOhmD>0g8B~bgpje=Ravry_dtiecx$I!dOe#&5dY#9W6>bTL&{Rp z0_nKmFZL7;KzSJvX&WskKiMMr zbu%$`cog5rKgro!m#sa9_vaJ1=8OUyMK0F54E+v{$oo0i ztL7VE(rxoOVgvK*RIM4P29hODa-a9)!M(QGr`e3ky-d2dr^sUPzv7*5CSeyqDTaGm zpX>I3Tx$+gmSodJB7-@SYb%jEs@?}NJJ~9-L|M(9dMR)m+=sMK>dz^mi{fv*YR5Vg z$=xy6-5QfgKB303N=MUC&Dq-UWzsiY9q_0-jp!1_4i=r_vM=!h37f3FtA0|Pj4Zg# zL$B@W4bVH7dsh&sq&v`(oPXr${SiMiQZ~k z*6fsKPizJNwmn1Q(ASu_X9{|Zz8Q?t558fgMLRr>=fxYqYNI7im5BihE~;rw$+-Ng zT9{0a3G!;&xOogZ840($0Sf2T+HLqR>&=;odA(g3WS?A4j~vqSU_X|2$Hlzh6Uij! zovj%*kEro5qQ-C0Voa_IW! zDiy;-OsVW`S<4k3c%G+;&WJSgk!VLD?OPRf^3hzJVLHB?3*V%6Y|cx z&bn#+e#x!QDo!4HUK(p7k`l;H2+ni@KmBCL#3gh#+%0s@aqIj2BU*O9QejaqMf$;p?scqT~W1@^<-nyO!$BV^y^D8>LrrXWk8txF@U-j7K zJEPfA70&Km`Cvk@cz2)D7~W>d?O3XA)}ynlaT5FtjOsBZu1U5WGHKd_#8Ml$m&9#D zO3~=H9rIbcDY_w=bX~vt?47#DrVBp2iUuIJ8`~h9mv5KGPQW64dKJd=&|}1u%fCfy^qOEw7>>uXcy2W{2 z28R1q%J0fhl-K3vJ0r?+8%xNZ5*f+9y-@t8)0=C{@ggH&Vw@&4Ze}F5=;BzzFTp>t z{K!1+7{gq^`0Hm}f#u4df_8NK7+h}vojbp7*#r6#}>Pg${9{w9$iQ|bE ziu|<`%4q=>D!Bsx&o13r4pW*(V^!v2%aq0qN>sar+eY{_n`(?NIKpA~s9sAGP@2{UuYjeAM)pH@JmltsYzbe@Z z;^i*yQG_C&DJ+L5f=dd%oVW`QHnU$nt=$*c#v?YE_fZ$FaJNjm=o~fE%3gGyDt6TM z`CHnk$(xF|mD<7%GL1*Nw$ptKlVk7x_ERzE8I`&G6IHJIn>=dOwTO8?Kd-C(8zTTBZe$`1WSfNs15%DY?t?X3=B zrx+SHVL$;+j-bb{5Y6h9$(sKqn@(HjZl-FcIdLtJ9OgpPsGq{a#-7djMN*@3+R2ez zf1hh3bn7%ipF{C;<0ZnkhUGy2nWaVvap!1N;I5iZ|FTYbI=im*Z=M4FjPyrHFQSXB zStQ^S8s@&nFL;iBpJI@SJ?2b+C>47$C;VP+b~6SO@VoTIn?!tq>$CJOj%y5K+H##V`~1&yL;IE!+SNHB(*2eWk(OK=-2{8#FWK_*6 z^naj+%31@LvRWT{$9G^{>DeVYptNi%D6h_35R`#*&bp6zD>YDj292L5y@$IAE}}7~ zA+WT*cM~m)Ad0M?L6Bp)Jo;Ld>#UM#eoS$<2*LHXHAacMx;n9*ov4>X+H6?tsECX^FtR?0SmS z%)NCy<%GP^Z-)Ut0{cmHK8f_VSk`APQ z{=#S70cefmu6wtfb)oa!o(y`y`&guQWehPEvv_uo{ z{eE~H;RIh*Z?|yQrT@omz9A(th+2|6 zCWw0aMv3MxB|#1IFZOocseWaZq9f->9(=UVpV0430zAzpR5iH2*f^KS2V;6?ljHkH zGoP{51N_Kvz@boVKP(#2eZG>9HHPd{so=WWL9T0Dm81cCMF3I7wNJEHDD8OZNB6il zUA@6HF*Vmd`Y%4KI>3F;U21b=(j8}GVM(C2uA3~x_1E)e9K)PFgFuWNg_a z0cuXrMGUH3QKK{+JA(0y*8;A+V;3)31w{Hh#ZvUtx?}|PbeXsPbclwUFvorLZfz;1 zqn7kVu8n`b(i6~jr{ETeuPl8$?#?|&>{nweJDrXDZt=34TaFakNJEi|8=fzAvK&uI z9~CC}&eMtKouUt2G)NpYhCFqwEVbA!UMgR4`?6My@eXiZ}Qa&zELei<>rDZAv@v!8y==k=(;=L@v{;u!slU+S`O1m#;o= z3mnS7raE?yEbMgI!6OA>yvi82jZ)%=AgGx(GaZfaV9$Q%DClfzWQ#{ElZ3?Yo-$fy za1s5Dfr1)5s<(0OXOt&}Yg)j@O>L^?qTUgocvG~Mr$*eU1eMRQ!8N9LL8>>M9dxz= zDz!W$KOVFgFpQJ_W7|2kKES;Q+}Lv)x0CA|2M7BO7!3RAGy!LzC-+6SbR?$6 zpqU^RFA3e!Y@|{c6GX$3RbB+`j{shV-Yi9KLER(xgUMLJMyYR9(}0jd-Q?!wEKOcm zkf;Jt#nZ-;ZQP)@LJHs@F+vI?VoA0mLBeJWOGt+&iXDbYsY*1FUef%KyH@*(4|WNmtSSXCNbJZQ_bl}; zx+Afi43$7T&Q}|8v>P#ts98p-AZ`hwO!)CsGAM=tlXVs3GUzVmtVL&AK%fQTsA94X zjU9whC<+=mcfAF2o2~fHLDw*A!}CZNIF1Pj65I|wiaB|*L5-QI=q@Y+&tr%c9o}4) zdX4hhq(`O;+BI`!Y%@AO_$G6osU=q(_L<9XV$I)s^eRw;ke3hqBCHG-E3`*FP+F>N zHq@7N6gF16aRYxG3sZ+!h*e1EL0oxkV=PG_Dye0+v{Ji`Wb_q`Pg1ScXH8o!w_F)~5-Vd=Vj5TT0nW z!hzpwMMO9vsdBaM&GugN)?cTGN2{~ZseuZvn;fxHiiPrR5>1F*wmktEU{pwk+ zPd@fQ1*a)!_0~;;Db9pQ%GS#;^~>qEgxB`Wj98zKa_6T1KngZUjG`}Y8v?P>eD++g zy1PV9`Q+0+v37m1w3expI@1C!YYMRqMMnj~wYK#-Pi)*V1M5jU(oR!KXM@0dmO&mg zqfw}Fz<_ifTv!>5VQb}??AKZOhyWIg%x0#?EuiE8HLKNDPt4s>#l}*Q5*@%9QAWoB z-Rqrbzh*Rr^Uh64YnZ_gcr(?UbNF>2u&TGPd`URxCimD8ct0~#e>Sm~u5XG`TT+^b z@BWY4{jqY5v8tw=NR_waarTjtl13E%9;T(wgBZ~fW?nH=xW-Y@LDUhgP{O2A6e&;Z z^_eJKE|@pMU0>hde<iJJwbmJVFyfQH&uV+oy4DM^ zeGo%clnl8^m5P~bWdXH@xcHkkRT0d}g9zC5XR?RAq8!PhU$#?L(bZ9|rVw6S`BPHo zK~h6X1wrKzYr{^fsXhYc+qbxfHWrD_b+qx+;y&76H+aK2%P>`JAi@nat&?6nKpoMXi<+mH5~F zjWo+u)}O^d5j5WdD(bGZlMZ`Oz%zP0S)kYY1$|OG)G}aeuyBNo{A%qUn};LH$c2GH z+X$xtD0H2z>;1W59dF>igrUWUR*566)5nH}SVK7V?S^m&=_XxWof2ue?LD?CTRaOI zhl-xUgcT7M5Reo<#$!z+GPIaMg z6H&(rmhBlAM|(ok2;=GI4F%zW&p^exY4Q+u_ZV!BI@aMFhizQ3roLs_I>P9o>MmhZ zVCv~D&pliFI2zGNeKl5>sMdtMT_m^nruM(o+x@o=vf^eJs;DOZeiEun5H_YW?kzR; zXN{8s$i=PX8JH6)t)5EnBXy=bSpx31KvBD30$Z3`5QC-1NR6p$G^7ZZMwNuhl({-> zIMmV7uTW=vQUdT-%MBp}abDn4qU0(6eSWLHWsAuWF4INI%z-k;irJiWQW+8I5~X~f zZg-0Zb-=>cjUv9y8WiO1*l7Rbdesrqglj#9R8N6>(pz!UrdM$wUINui+)(w-xr^$_ zEeiM}og`d_T%1m|M;B=aQ@7IHf=A(jt^wsbWEfT&T z@A*>Qu5FwEf@n;oCXZ0rWLv|W=_>f2P5~7&PWq;Wdx+yM)}K}${rwnuf2UK~y;86Q z-zLi~AgEGYEE;zp(t0;{$f|QK_*=(a4x;1WEl9J>Icm=#2{L^`n+5}pu-L)4YLyXZ zWyE%9^kgG%KWH_jT%&t5Tk^T;yv1n|ns0t@*lL&i{pRXWXXo*A0oV5OWz7KC7hCp1 z60{jr?3%dA-`p*2>tBTGykO91qW9T~ZbW3 zF4)$04B|}1kz7o|yk&dnhk7l1Y!~B#DMqsQ+pvi(vI{w2u!1_lqmvVUhs&lh__H(qb#NUF8ef z$j0>l#Gr&^U@4^1b{@a*kg*W8oQpH}(P;Kv#?ohFb6<3(bw+>JuY{Uct%G~>9@1S}Ph{xO+oD*3`>{aivz+i_mpz(Rxr-(gcd`0pj0WWVeSZgzj>GA_BB~G&6 zKbKPgwlo+*8j~=H^6$;VE^AqZUjIRF^W7NN#K|%rWi%80? zJ|O-2{QY`&G_*UM1TPKiL0GQ2J48Xyu`=ho0~<1>a1TgYfxHZ2+A1l1=>U2qqxWhw zl7=ocwCw7$4mW*)>2fovhfvl}+_6pI8pnB!!%tHn7Z`%r>`j0y{z1#-Zq(fkca6om zaca(rB3lXQzE8LVqk^?CZ4_UIZe#QVrMZ6T=Vo&k>>V|inWaFZEzvON&3IFhpFBAo zN`gj$H~t82Bf$sFbOLvw@upNrY}+hb`p)=9qfq| zi9^ma>Tdq2$DXtUY4(|hoZn!y`k)F25n{gD z48$DrS9`yMTPrXmgipjzuN1nbs!3A?oLx&5Uc*G)4nylS9Q}{?=j}*w9gs%^kKW(6 zu}%9voxjTJGskiMJ$$`8{Wg~N%^sT!`hEI;9|mF4n;)L%`g(@^`ZnBs`r|&)c7Z2f zJ^DJ`jp0u6ri;FgCf)tpZq2&NRvuv4AEz&$hvU}e9Wp@n(^NOIW7R+qLya|lB{vZ~ zgtw|@Qz@L8Kq{6T6Vd_>!M&>Mob`YrPc9mXg$eY*6`@2b zD;3UJfJN1=jJFJ{Axf{IqfNdk%VxfB_5FRl{d&H+UBNMC=x}ugY+q;PRS~k(E_Loz znN=b&Ru25!f9IS~CMkRAV@@sbC-H0L33Sf!%+FnKDj8kMIs3I28&K8u4UlyB7wnDN zzj-oPN$w8jpu(*qL@qRuN(~m*bQ;QSZe;OUZ1QUq>7jawDPvOpAjm`Y)(pD@!@0t7 zsp#?tIwgZD)g_J?@f2f?zc7co1)@Za$_gx>b`h3@uZ;khk{-|mY{AFju}3O&{VIL^ zP*VckmMkfm(xpgL6n$a^(acE1ljLFGsO^VoQ!rj1b*29l3dI{=mDJPJ)1pb}3VWc# zEtk{Dpa!yG_BzW1YxA~?KlGscj&O1tVDd@RqL1hoG3bO6cKmU{rxhsIk{7tLttnKI zIhEZOjrN%ZTUS;#WR|z_VV|@5in3uy>Sb5Fza` zTjMxx#$BwIU(d&$mRr6^p)EMRMu46qsKg}RMEmCe{Dm0hl<}O}z(qHX6nV^lCe4ee z(v)z`%iuxoddZsm4<-0onHE2&E$Nbfv-md#_88(nZoOq(+nsqvHahQGK* zp1|kIVF$@mJg@ zp|16tG%Vd1{8}d&ldxxi!bRZ*dvKz7R!gAM(NsZF)(YW-xW~+;hpm3Lg+&mpVlO?Z zg6)G_&uR6>_W3*nDBD`v7*%7$f%q<3|;KB_%m&T6CawRU(!Fp!P}##UmG1qW*hbrGH2Y z&&gqg(F@S~kW%51^LVFK^dEM;8YvVcR`^=_o$qkO0B zxJ40GQML{3BKpUz)T^q>D;GDl>^-2bI$z}fgrcow%UOq15cp_-P8UTK`Cm)p+ieb{ zgl-f`pNO#Wukm(2)1Zzpr$O%Y>-xd{K0+)nsg!#HP|cS!{4RIAX@y-V$EWl^JzpKX z$~Km{w<$`rlxwugodq-zuj$z#h1bJv=R>$^?BhVzW75~AJ6a-bY*X3yg=&@k3PCSUIN9v9 zo)52VQ^qLT0LSXyu3;)LJIVG{#wd;;WV^Yp@ZfFk;!)M;$Ul!sttK_LtAh2hPJ??& zeoR^AX4_i$Jy~(}q(|0P!q%|faFOrAeHyJTzu+kawZWBW3e`oLpH5R)qYKfNCD0k| z0wC?dzUtzM8+Z5RZaBWeA{a$P3t zFJ15zC{D$2V6Btr?zr2+Q@<&7J?V)hY@DCx_EGg}?b$aTWHToMd5==*+MVSk;%cnO zKq$G;33?&#hy(AJ#k?zRBD3Wx8BK`U>QeH6UNx05$&Yvx@5NLsM!x&IheV7IY|dMn z^4|CNK7No+Xt~SM!sX5KvH?G}$%+OZJ-K#OAyV&i9vpd}P`=%HT_sJ`HXnw*U1nJ7 zZ29W#MUDMytA3{Db(AhvJjeLW~ zaHUcRHr>YO4N8zkfOh*{t={2j+Q#kdPTya?7QzpiU@hU7sZ@?3P~aNR5;FtG@wLD6 z=3LE7>JJ8jvWRN_bbG>+LZ3*8JpI#4<{(}NQ{*&jX#R%IEd6t!`6EvZ-+!K3ju<}x z1yq9GNApI1qu7yT5_*7O4MD=^pz`Gcq|TmNz@8d(XRP~IVHu;c-<#_}TsFbxJGl&y zUnBAW)j)LKr4Yd=g4THatGNHncv;N@)@iNVge+QqgKjAIAH@J_fPg6i)&=B&9W71! z9_wOY?>kYa%RJtcNdOXde5*U5WX+5`x0yqz2q^s-rMZ?1WT%o1T_CdeKrH>MOh%Ui zT`u~!typ`f%c)e@O700By1*Nnk(qZA4e=Q|ouO<=V6F$2BZStRtVyU=<{u>R_gSbH zz-CNx}kl}pXtJFU{8i_p_(JX&S77pBN?95 zxV3_`*+Jc4Cg-0MpQF40L4F>22Rg(x=X7<*Ce(@c7q_!`FdjR=No$ut*uoZXn(#VZ zcCpFvrr5yLT|HCokOj}NnP7ll&lkbBxn|)1R2=>nD~*|z>;EVY|I28XmzP1-)Xv<+ zf{^(?`>X$3aoD5LReQ*ec>Rr53tG*BkeCQ06hJE@)(H+<%(!?AT>LBE_TiIDB+^T> zwR=Wy2++bRGJ80kQE)zZ`Xm373su+eL{H7-|9SXysc`B)+U4^1W%b-kfGH)OZjJx8 zFV7$U4fg#rFHXznQOxQheXPp*N_c?2_I;2|s)+6R<$L4H?dN!TS3$q+(%JR?^mj^H zJRr?EkDfUxcw2l_br4M2wAdy;9l}y!(}W~T%@E5EEPKh>SrlBzP>GJ6 z#t|Him7(p+4}?DCRJtKjFI*AUaFfs){w^QfIJ!fp2fAFy{5oT984e?+yv9&Z{JN8sc-K;GMMGCOSa38XblZWyr@k7?q%d ztf+61*6Ex%z1k1aSFx5o!W$QN;I7)aA#Gc*zWH(eScJf@QWL~r*`slA`#=JU-YZNv zyzeFs^pUP6C_yu`T(1D6T&9q9>@IKvT9&$}I-*`}%!OR2tJ{G;xE*lq=EPlMN!6B@ zXQJ$@_mXMC4d5>M6ti>Y)WO5J< zjpIhwx(QXrcskr|ng(0A0KzH_@F4hDw|N1daKFXpR`K3zq>naffk>Z%h8*P1@Cqt= zbO(H?^?K>d_^}S?-Y(rL8ir06uEXESB=10U5Ff(Tax~(j(Gd|2X>jUWYX?ZM1BjqL z^1mA0?9LigS*&8$mef0`5H|(KN99YHZJdp3I5R=PgoQ zFrJ?|3Hd||wYNqB><_y4diKlE+swlsxv<{Ns{1mL%7j~zL<#KBVBS_Ae-8AOMy(R} zZ}SIZOm6P1gnTS=hpJb!cb60Iz!spaKp*+xujHU_fF zwS$4U1Rg~YCrmW1YgCw%z1xtmiRor4tf(mz8D)L&I3gu*FI@Ior57?RJZR?yUpE$z zWPT(Xjhj+JU~*5a`)75s>l6w{u8OyNk`8|i=}rYhdCK8%uW%~p2d4L)(@342Q)`L$ z0Jm(`_m`TZ!YM|XguyoT_4gi8NQ^GTyt;(7ELR5-`7GnzUi2g`B!k4Gp%+9=)Z^R^ zWm>3+dA~0{$e}?RPo|YcYL)X^`hK>fKNP%{~j zvHvO6{+9xPiTVHdkY@SsZb&Tue{M+sPcCL6WMXFLWaQ_Ec6MD<`;u<0)GI<~t1R+X<@(dpimH?uVBo$$n5*H?yCl{=T26!zPumP%G z0a_!0;nI$YK=S>NtzIi?HEq{p`ueY7Jz{n0CHxmft#T)|J*T9k{2vW@ySIIpTl-X5z= zM09YUyZyaI6l*tKbM?w$-~OY$-P>(d4AKI{YXZT(Evs$Y{-@o0?hQY%f)8cB1AiIw z3xM9uG5Z*fZa-ZI(HIN}u9pbJu?Mnr(SyAJWr5{OLq9t*?$C>#T(DS1^qfFOKOx6* z0C@-_f0OPBgDZh^|H3<{n&G;!eX4fw(LKf;5<(OtZUe-Z!*AAZaFILE_8iB;VU#w=v8EzGa@9tfHVV=E&Q$+(mz;>1rWlF^t=pTd20kx zeCOcM8NXpJ_loZ%-q4WFN4Udk1=N0VGY<9*$UHGO^8hR50#g=@Ffw*`e7Sqa3G)yu`Le()t+FzQGH?Sg$X3V6(@C`dle`wN9Z;zuQ@hz!AKjT z?ZngrZ|vdJL-M`&VirJ#Xp`q+g={v$i$1$}YNj+1)Lc67QNC@)H=VzAx<)8v*OJKTUvE~T31z(qR z{1S?@LytaTe<^=4e;NI<+a-k%Fe0qm4&mB*B@Hqg^uR%S!{6=l9$??^%KL1J!*A;& zybXe1sc!*qzaw)e_8n(kFM@Y{VCdaFIPkUiCX8hzrsHGRqiD?eJu#Vtx@E;-E- zAEhpfKoDvBl+gz_m;))Z?Pq4~1b#xf!9OzaFcVKmjiLOKH^l4%z?;Fh3I3~W{r{Gz z#3f1O(Ef_L#pA^j^NR8ZBkYr+o!5nH`^4i0j5$(l3%4!k7Ut;C^OMTQ*S|R{=AZ5{ zev@QLnMy`B;6@H!MpDqrZd15XVH^s z8-nZ*3J}`Q!_7WGRwg4lwQFqGAx$}|MW#fTkBItss|b{r}? zpkI`^315+G9+dbPI$$ysRsTow`kXkr9S1#1S)=;kPag9lwn@JtehoiwXXyLW#Sx6p zJVe6z7oV32J_uM5{$@;@NniQShUI|1ZY=4NxjoS*fae6_NeOErh@2avb-_w%h2l`z z9-kN2n5P5dBxyHX;?9TjxI*u?Ld(zbxG}OsW)g!zOQSQtxV^l-KSw~oUe8Xx)w)($ z^~6LsIV0glQbtZnURpN(n!Reoh8df*2fj!;KYvzrw^ZC|lh~-%`gl?p;Qk)JmnCEo zRW4bXM~9-g*`Cg=y%?03lb7%`OvbmAD5^$N&{!{6<6M!DW~FPDY@>B4_I0hL9)-;{ z=SVVUM1QN%aOiUIt7UdUw@O?xOADi7cY#l3RW0g6e7Y1{J!V%$1Bis2MVO^fGPBA) zxR{OtcfPqZ5(yfDMhk7iVFe(zsM|6f93HQHdKq4=d0A66(php&E~J>u5fUJT@Rpq;6($Eh5vus76mK`kPh_GwLi zEBvbE7Pst@j=|KW(b*PJZ!r{P4kfO)o9D_**vE?NfxvRTnD?ri!m5~bX?e3^z?KRv za1Am($7l0pFRM2Yl@IrJ9yVJI7~w{FEAzy4bPUA?$aN(#M(Ly(VT&%iq0!xUIuOZd z9P5LKT+951twRqiBF4iE6&%)BVkcE+Mc=P7KSUZJR3%l|Zp!3b+nK`olgkw;(oRz$EF zkvF;3vhS`N1WYU5p>}B#H^(^6$~r2sGtTZ%%|6|+W0c-H{*6pWW;&ApSwCJb?!1Zo zCH2i?8f??{ixDhtsZvyKSo zdMi84*g{HyO^?hLUj7K*YGu}IOV6II^K>0SA|1c7Jidg@s+|UhynqE7EIWbE}p{-4!}|4*K+`ptrNNB3#_K?8RLC!rpQ~ z%q0nWS`C^;T<55?g#_P8`H}pV(~qy5qvkbMN!WTrtvT9+WR9m6#DgU*x7K`3}@erNA4wvFOslUcLry`VU_;H_MOa5@i zp6vKQWWX!Y9uA%P4C!@ z$VSZ~OxQ5b=p?{7LZPf8THlIcI1C+1wWK%O50D)^|NH4w2BRH`44@ zopO>oTG5v^TV*s(`ZNMfb>joriSg;JDwWmAN761s!i~Qj$mvLHNz3XJXut09KTi4P zWP87+?}G2$wksk&%WoN;U2F=GNPx49>?2JNoO}rMVHLaqdWw=xvRr0qWM%n*)x;l0 zLrO!(v-D-{<%GMm=%>e8;5jD#q*WEHBy-pFjG9Suj@xe3N{t%3~oLgVj)vxe*i(floGc?MSUtt!#@1 z(;BVcDY_T-DYtx1roOwOy%PfZZJke(Vn=XYHq9M%I$rAlI)tWaYhePIvqO-#ySwbL-!Be6CS!k%@#6Rr39YPnk1`N^pB-JR*@l5OVs2a(|M&(s9A$FoimSj??vS|+U3jB<5LnXwL z-FwUkb#Pf)5XH=^1Q^Zb9hUNVlGFL@SEZr`mfYa0_b5VD`I0(Apgj7GH`b`Bu^RO* z908jg&ecdpm%rIx`zySxr%Xh16DX(1i;Vd9zx!8eYSOQRSEY_8DyC;>(bpfHG#$`W zOG~9XXqhpiRou!*oBC&_wjBzOK4QAuOiyM1^4FEVydTc}ba4{j;I%h)In1`yCEGsn zwJ~^oKbvHARJ8ThbaD#(WInwQq^#l*{9wpv?~X1mZbdiBMP<6z{#~W1Z3n^7h_auW zav0;0Y&1V5Bc4bJH&U!#mUMzmOY|B#9^@aIf>KIr-mK@@F9===U4rsjpxv-&NWN;tv=#W98aK2|c8-0p{9|0GYqx0x zsV!K=EL!u0U|o4QaCRHWl6qjtXaH3ju-Oa*L9>@03K41F=hv6o>imN|S{z6STZiX> z)!b~y8SXa_5@nrwRaWmIU5+PO|Jop{(sSVx%4(V4gD=9bWwIoIkpmeEW}pVoRehk zU^}26yRaX5@J4Lef@0bf%V_Z))Ij4<10=6*)WM<_`tZBTBWSjMTWAO-SP4yjE+Jb9O zG_y)E?qLUb<)&jlM=Rn8P=_lzBsEYba(rGR@aEjM74~K+ehfZ0ArEG*YsM&=&b^$L zTJMxe<2{CWHuXF1F*}ZW-Sup=%8Ga2zqd_Z#Zt5E1OonE2>JH}cv_C#ev%xhDQpz0XgdLXCQ_UtuAQ>@x#0S)a!Lb}V@lDk$m`S6?$D*!~@5*y87_BT6uZ;-d>9$xW3(lBnk z-B*7g5}s}OiZ(tpbEc@np~5AB5gIBnOU zed?R;)_l44_r5PYb#%3@(FiaXocHTMScqa+;P+_+061;O-zMG&d%ffKo z`x*fhoV`#N`5^`mpRQFIBH`Y}hPrxSM_>bn#EyvJWE>)C z7wUnf?_juMV;F;X#~f`+5DqaumoG3b*{v|s$~Wr_p}n^2L%}JRwo43=Xge|3szttN z;4TMBdCCl-v|I@+)_~x@t>AD9_jK4n7wUguLGX-m%jeY@iZh&Q z%zYVaR2e=+6r>nOEJ3nPpRGFE>^Ve`p-=rTl8NJzhc9uzH>#mq8~Z)|HP1->uSz6hFGRBRvN)kHr|}AMB4_RxuIgX-top6m;SOtvOi6@6pkO7a4a95u}SM2*NLHy zJumIHRI)oa0LID9G^gyz^BHV27lN^KojEpaGp`rN?1|&sCB~#5qA^XKzg%!E@A?ka z4j-G?W={&7vu0iS^qw>sL0zVvG!PIQP1+UiQxF9xDu4HnYO{63pP54XsShG8`(} z-0!!L{6TDf<#1<^t*{vlggdm6qQXHCjmULPXgVJ@>ep++R#4ud1OCXd{G?6nlV(By zUiQw|DNgoFa%3`M8&&mtdD)aE;`qyN>B8%vzeJ@$bw`DSbroI{+;9p9^_LOl{6?s37FkBugT-OANpqwSs_ z1na*19%JqoqFjCDhV02)2CaeVtz6sHMl2>Hnut2G>C>!9nNopX0DSS)5e>qF?&~Y_ z00+&5pKY0sTOVUxsG?m!oC)A2efFdspL{(C*`FaS5?@J1Mmn|pvg_N*xSj(O|LU=d zZQ!>);}HyGV2_xUt3q5S{rn2vjr!{Q=XU|#-`K*7-~Fr3mTRjh7J1kz1D2GFZ1aaO z6^>>j;{N3XE#*;B(v!>Gqk`U)YXn!Yb8#?ZA!d^fUInF|zB<(Nbsx(P@J0sWu|?%2Z4uy~LPdc6{TI@xGD>UARc*)H zSmrlNYHzM!n?F~CU3DF3W*1Q{ZsA|vK46yF_*GW%?NaOv3EZ8veMQO#KEjzy5V|bq)2wZN@Y3&xSJ8n45m! zkHfB@#`WE;ft`4Uoxj4a4FcMJfj~arm)jnB#=Az=%=)Nz*Z$Y(k(qPr4Cb?E1!vE` zjEUKN2@$qF^TAjXL@4w*Z?cpIM?-z^0J>lzXe_GDT z(iaTH!phpC|3n4)=}KbD8q8c`M&XG2XY$QD`|OcU{aT#f_dyHethxuW+@Vl()-6oQ z0d8yTt~C$sTL+rF^Du0K_*3}G0dj*&=`yX?P#V9hxpQyecd^Mv-=^8*bYa~e!u$K_ z^Y7^ECa#_@ORRu4&P*zfEak9H_eb6R&q>c`wC`7h^Uq2yj_<6~G(D0_8TqBKKLKI* zSh}6_C?yi3N6AWnSn2A|`E;@d7X?=kKG--TPw1&G4N=MgFSb-V4KQ3kk0*9=e-9TJ z`_W85>W%5OX-rA?ttOVe9Kgf6I=qbxCS$9hp;Nco-=eyicxO%@@z(rw?}?c&n7wz( zng=kVQCWXAKzwi%HmcNkF!WDgur|;TJ+1Vq{6r{?JM0MA5dq0ZZbDHDs7pQTS~)(l zU3Md=d%g35sjKqPown{8^^KaDy)5(irmTzd)E&88>4tyEoJxB1=nHz?^ym}Yc_0-A z1`Zhq7gY-{3-CZ?mX99h?Ud}`lb+6f5R*>ODoQreEY~YUHK;P^Aonj(3LnYPuS!N) zh7lJY0J{2t5-|!KKp~SL$l5Z`Su+PWPF9II(JxiOkpj;~UUxCoxEUpmJqb&uaBQCJ z0;2XcQF*sEOt!&Q{aYvs_b*V1P&$xO`dgi?%&#a;N}e+36cK18PwhHhJrjrQ zq;yZoK?4KxKCi_7RNN>CMI{EES4+sh{nc*kS=uDQSy+%i1dGAy*l>gdo+Jvkj<7kQ>b zBT3o-j18!B5KV2zDO9r2E#BHjOaSQY;}IPJ(2K>-0-=0eEJ* z5^6`ap=S0+`_-wERGOUwRw z2QJx9W7!)_>)*3?)GAC|<;>la$D+t-&W>ENUF|xR(Dd}D(yHbYGeiO=PVd!19nGr- z@M-@SUGEsAN$`CMclWgQwC!ozwr$(CZB5&@Z5z|JZQIt)@4xRV-rb6*sLaaB$jrL8 zK2)A_@5xMjUWaXuSE}h)M@+SnT%n+KqO74(91}qS6Ul-`@2@VfM+}jtRrC`ml1HY< zK%>}af;tS0LQ1W#P-0YNP5hwJ`9`&M)A2tV$GQmzR&83ej%h7-+;PNnvwFXWV3g~h z32E)WwEdH&O+{q70$o<&*mfkTSk)^0D4tM9e`X>(;*wq}Od!_Q1U9A`t)i}@KBb=4 z9c5zlLnCj*QKNM{$t@CNPK`MR#XbVdHMj@d)u(`7mi>LPQUhEKCnQAN+fJz1?3(B% zoN!K*)3T0Mlq@|rdE8-sDV?Pr{8v&GCD@|hB4e%$s(?+l=AYIys$vXjQ`^TJN|t#E z#Nb!gFx)$zf$_b>{{@2jFJ$RIR8Uq{w*Qryis^r&f+~C1o6w2c**XiGI2k!w*gM-f z{#RAjz{Z45OyEBUm4Ks#fi;bUvw^jRk&H4lov5{enG*pk`@hn^j)H=A?pib~3~U56 zOpMF~3`{KS1RNafI&}ZNgMh7>waLFGdT2TUCnFPEX95m-7HGQv4ELW34I={sG@X!v zy|{^mnfbp)4mM~yC1(>GRRZ>ZUH&tGsD-r&Bf)>+W{S}NKrj1Vz}ZCD#K_LrN-Gp7EUifhJqoNw~WKb!xSJR!nnSC+)Egy_{}An9_M*ds&ni zM%iY2x_@C|bv|T=n&3BhHNQdeGk<9sXdf#SsnoF(_QNm%TSNvfJbNC2M!lz6H5g$W zrQRxNh?*!Y%5gh}Y$p8yjK+rjb@3IOVt8P1NNgYGeTgVH(j1$SE7R_d?d|K{d$q8) z*>!84?l>HHfa}Hb0QtXp$NxxN_U{G$Pd}hjaxrxNk5ec+x|saeT|omUlmFP^|LG1E zj!w=(<_3-g{|qK=@c)%rq3P5tjGfJ$wAfha3D_7J30PQI30Uaq|NHen<$tHne>d^} zaz29pa!y5PI%PW*TZ{i#kKn)T{C`^h|4&z8`hU??{wIdY#K7=>VyKth9_}bA%k;iC z)fL;R73b&09b8*WRw>gt@Dih{2&^K+M35LnR;!?b1Z8Ev*<%WJ$s=Ie7!O#l39W&Z zCLrtc`XEi2wvd@OK;@C4~Bhf04>fj8mP;bvSG-WMlPA2fXxwd=-9?yKD{}C z2#}z}2pipPc6|m48z?wPSZH{NAbs^dj`+gwV8;XQftVn`5G3)ZefcDGQY_@2N*4}w zPPsWgraomtXQnhcG37=N&G9&cQwp$WtL4=K^n?IJsB8J(2!=pU3-Y+@!L-75g%oGK zLN<_FK|KN?W#BZ@rE&htc_`ng9T3RE`pPVxFwObVMKKa}e!n_UcNLEfKCP5N)zYJE z1#BNVwd)CN0`FZDgwFLBjUO4A7Ua`tW&9!mb#%oic{>N3_wXMW_SX3DjpQyOo zkGP|uF$^4EGbI!AQU;4C%rMo0sROXf1)Z~%?wsXh9}6peStb2A%XwR;CRzH3Trhvk zksiO{)}x;DN@p)lc^)Z-S7RP-H9ygK|K@)Ol?RMJJsUd%cR=a{)`(%x4W8;e^1dT5{S_unq?jxm4LhG}H;31ELY_Pm zctqlif@A*^W`wF2f=`HEC;cO!?}o+!9CW~Zx#MpOk+mI$Ck8QxeJay-yaQYco8kZ> z*UxlYdz<{q>5be2;0web^!ttD5o?e(v39c7Tf8liIp120AN=tihfhI{Pp%X_4dmGq z(Gz?^)fdu+`16NYoG?g3%8ybd9xqcj(U2P^{u`IVtb*%F zhBDiieJk0Q^(#Vj$G|?9G>@N3Ge*@CWdrKP1OBO?x8PIbXN1Kciu#fAG?+f7<-b+e7he)KS6-@gQ^YHgx$yDtL&l{H;gA)B(U0j3Jn4nj3A+aWc85HEWq8N= zf;0c7*$wO$y$r#GVCi7#?;`7)EZskI=k-S0AM*ccel^&P&h3M^U3ew=Wc)_{hV&Dn zpX|ZlZLWhZiF><+ZH*6;K=;7s-HG>Oa43nRFr!QZH$~%~;yku=&(TVcO_S3Y;9O&T zwswX402#4=Xwz!jXb;+q+)U-vT}enrObi>xKSsT0-sqzi&{AMBNTVCe703NXeM98q zcf4J&Z^bD|w;+`%LPP8Vw0Tn`Jhom4b|Azf)aHuR3be!#nNnh#QI{bvV-uYuRE|hyI9WRU?E*{?G=vU(g5Z0c7<;$cZdnA|7ix za=sy)r{u}JTDTAUm_x0F`2n2EL!a6}*bcbT7@aY%fvgwvh7L(lNGBvPUOk}SA--8$ z2gbh;&5=nS5GT~fw4KAHAu4(UL=>awe(~x=un0gv)-oEN{SbU-qu;eH>>QuyzXzMpCW;2D09H+VhC zlspl4rUx}|e9QpS0#;KJ%pf}npOF}SN+2UIfehv|OW5$r1IJZj`A?@spv^WQ!Y#pP z`WGu`COd|a`Gtl2Md|63cSs%BRZNI^n_pGM4yV5^2Tt}HSD7(qN)}G?!p06R#Vpub zb`d<8;HapZkyrN2HT!Wbn0R5>Ke@MpzO+{1E|V`QpA~0i_yQNZptr(pg=YL&+tD9Y zX?O2n`;KAbcp~}5k_sG^q2yNlMFW*N;np+eI0)p-0+O;~Q}W^Cy4(uHW?5(D4}kGc z`rF>j85V0n;as3PV3&V5ooPn>wPwFgW$qE$Goj)u$D9s98X$fAdG&SmmA&CP|LP9b z2$&U;bHZ@#POI=26GU~gexYsB;J@*|lNls~?3Dhb_>z5veXs0!z6@^KEk+CbEwJQs zGb8%Vcruj6q*bx9F0L%W*Ou2*NUJ8LCa0jFqmn}3KR6!Ln-k+G1_t2t&QN)6(v}_~ zfNk40YEF_C3e+B`hw3Y{b26Hy%%kQm4GsT37)G6QG-g$v#8YIblnSU|AbUAeG_}}D zO7yCjb^4~@S(27>sUtg1=2TWwE{lpG*Qt$(Am@4AY%Br(+)#)=lT^zEmz&*<#K}M2G>ZgbABDC|5OCFcyHC1v$|?y5O%EQ!WDf(a=>M|IsRX^-d7A!lru$eHcP zBfVnP=_sM?cEvV9^ucNpSW|V^|7zyp&S0W4NJmd+^BQiVHGOvW1P}th;4U5Yw5>Q5 zK%%2(mQ-V}pBpX5K2s~2JAA#nNUkh5mcZG-%{jk2w}D5I)H5_L#|CKW!HDDdwSc(& zR+G(L4yg^+qI{G%RWiw`rD4oip46;z#{B*JH_QrM4p`A$&5dB9YFJ0Nu8Z6|LxSQ%=myzM;3U z#t$wCeE6e}i{sR#bu{g;Ul_Ugn{nJyo)6HqByk5cG+|CtiT}5JIFh?iY{W5tzSWh+0;37o)Sb)kW@3i!$jJg42yo3TCG&~( zfRz5dMxwqkF6NPeHIs0_cjE)?$Z5!6XWa!KbF0bvNG>j>-*Wpx(%glai36AKy+pCJ z*OR^$+PNdMjFC4n3?hDEGlRIc~+`%_8cKm8$4&0b$=Va!I~ z<@Yt7vt}nEXnc)c2-vvS_oG5HIQb^BZnvOXtI6htJwmkoy}oMD=uNbKwcKWzA+=ne z>n0xVwjedRoMpHYnT4wOg;MkY8mRXOoj!#yh1g;1g)^@@6Nqs6m|~zHX-;^59ay0* zQJ(6Jka+7f_djF~q<&Slf__`+pD!-Ruiu=D>MMF;y(Yz|g5u#J!LuM}xN2#?MpWRx z!cm@qHf{9Y8C7>h3+m0e@oH6>xiY@oq})F6Qt@7RuNPuP4)*I8M9Wk{L|SR%BB3sW2{rBsZhT!d5{wH>_`nVTVp(eee9VQeKLEZY>7bq0a!)TUADSA{Z` z3ZRB)l0|3+4QWb6v}9|oF;ci`*1S1+dCqQ|#j$y`c>eCpQ`;o9NJcI0`cssdwxQgt zp01wjLAb^rNV)EMb?;S!D&b8Z{M6X#*RZvf4)rffu0IdHLD z+URJ7JIuSz3)nO|U3S4vga6XxNw3T`OFJ>Lec3AgoeJ7|fE#=VferyRKuri7bb3Y@ zTi&&W>5O!Ov3B-2YQWGNteOF1mV}0uk`(#?#zeCb2e&btX3g42L46p~>_9#|B5o~8 zjs_Dp;IVYnG_T1~Qq|DVMXjx?RXyl+hgh`RUh$jk@A<>Sy|4m3rcA_3UDOetW9&FU zjIh|+=xkY0k#Z#}n+G&M&I03TZ(-H1sQUh>0Iu}Ok7*Qf@=+?I=JMwQ z0UkKqadhx(@X~!Z4#e5nY}B}gjniv>r!oYnYxk4<+4nkrH-2`a9VqX+(gh? z@EWC<#ntxO@WaqU;Sy_Y|6Ibavc_3_0r!M`CU$D(YkT6Xi}B|1_~FfPvNNYQyLZT` z@rC!qXO;~K9juf3t?!F%)wp-VRwPPaR1GHIyW4}S^5JJ2HzLiZIrK~`$ld6cKMu4z zM3KB^Jvv(JU=-3X>Kt! z6jv@#wmBZ(g&wnQ5A*4X#H_Ae+s>1rR3$#chY2|*RX&n&C4t%vHrK1v)@>(q?Z!hi zq~9|mlQ48fSl_}Q`aF`mogVU)8CeI~XI%qhtI;VI-1w|Wzu4do=&RUIrUDV32?~J^ zBZzK4g?;&EZX39jGvo#C@ry?3B;&AUQ}A~b-}-&O59WcV|FH|$3&GfpIGG@h3`;E; z>bZ1?XF|HcI~BA(Qjmg%44H$kfMxj8e9St0cw@P6M&afh5hM0bF-WlBDE7238>A%5 z(2g=TbJq0<^w}`1JUV5e8B9e4Mz0DkHq&NcBKBN(zzcWnHXiiztscQDmgkD$-@_78 z&b>P}nbz^iH6Qe7E(2VuGwLMOni-uX9twh%92g*|K;z321H)-gf?Kk1*N#4k9ZPxz zYaYqOrTq%3PnTolN$McVxDD)qmA1<{6((tok1NDKZ?90^MYSqY zH|LmbP@&|LUVdEX_sJObMH7C{N~Z$D;gvWTs^{Y0a8~OZ05ilzRUOf*1#-jyjTnpf zeMmMC)3*4&ZLh%m#AHW3C=HouoW0Vjp;>I$fY0$eu=GqMRIdj?&+EBR zDPC_s0?2c|y}kY-Bv&@`@l)WT{6T4Uh!CZuf}lSa&r#2(){tF$ZO7)*y*oZ%va9(# zMXT=m?9R0Fxaroi^|kXa#&>skiie@&^uCLH{RP)ZXZv+pSnc-nHsin1?7x8&=gp`% zi+xU%Xcd{5lo)S}lrEJ+HpBHz?nmHD;CJ|eKU3Q8*ICuj+m}nc6tLi925R;?4cGFK z0!sIwbFs0%gS0xerq=%a4q${BO8uk*a}GTLrL$)p7L*;WHWLb5V_ehfMBO{8tMR-o zt>CI!++VLovQ2%Ks+9^OQB4p6i-kqBKz@HG2Y&aYSa<;rq&Rp9_~Z(2)-9Z`ia1}M-~^d83=k$&$vt0;o@Zv@K9$-?qe}Q zl&jC^1;IMz>VOYVUOlJ>j zUogTrzP`RhF;K&pqGLw>*u;aa#aqg9*pxB}2SrFa_`BN3=|*Y?-vcR|(W2*2gE8zz z&5a*b21ADoWfPZ5+H@@I8Wx+EMYKl_IDkpmWGC*L9gz68{Uwuz!I%DpPs4p+>)PpK z9oB=znli)68pBlyZ|Sq@n=dKU=GWK6o~y{$g!7=$HIMKIKDa1{2VvOR;2Ney(-SJaTm2nS z%l!tregaPOv@=PSg}4U7_Xafe!FIuQEW#PqlM)yw6K`<>5)Ew@H;jyn&502n07{J@D}H(D(vwE9G}v3|6RQ< z<;q$6w7aiWwPW6^(7Ex&;7j#P_r{2X>q&04MS`o#3xsYXCYeJZNrvO%;b?ZEy70F!U@4as6eesddWgx zqnj|wW9$^=l(zftSjs1!cPu5SWubx(&9Jx`)R^g+WeWsfnPf-^cp(yiC-$>T?~d-} z=Edn7@BZwWh*H^~vfE`bjlG0|IgW4_@M0qEBpIVb4jj38{FFXvTFVeF%_}ub8q_Sk zRi?_VzX?5GE@>OikI0nc|Q{)6Ki3*dbL<%c5Dv5nprwk zE??E4-x^9o2+2W z-RBgelwz!LVo|;SB1HQ%k)K%#UwR+xO<;#o{%wUT}Ko?q#=C^>eXDnE7}c3Pg~ zd_P0>oh$qJnR7et=9R6Dd}HSb@AmW?wwuOS-_HvulfvI9R}WO|E3RhQl(e9gH{kkf z1`qd?{`Avtk+axUZZgfnGz~NENdE+l_pck|66Oa1VUwq1%w)QgFU~`6t!=C|?&F_=kFuy8MkSqO1 zl`U6AB(Ybn3eT7H3&d;-G-dHEgTy5nYrEEK;l4VAV=NHMQll9%g9S`=36e=&X)&Py zO=USl5JQ>*W?iXZkdwY7gATYLEEG%WtNSN}A;dvd+aN36(DwQBAUlI)C@toP$x5c! zIfEsn(_U>jgXk1Ij>RR(p5*UlU1kNl>4r_-+lv@N3Lk3- zx;5e#UHf~SGr1P6UxIlZ@43U9}1YfB1z+;JxzZs09q^1qw=`7X6Bk z!;eL~jnVQEky44K7I23+yaftQNk zb2!r8u_7UI`(r5Z?Y7<-zV=4|MKOj3Kfu&QF}yx2dhk0QBk_a$nM8S0%5i$WNnwQ> zRq!$$w$^+esw6g|t>#D>zU4Xp6_0yxG4D60x z5)T;%_xa(FsJ10-bj%bNnVs%-(B4Nu=N;Yya)3@dM0+Y+*lH|n_hu@1|4_=FW6kzv zFjlrkK`F_}sfUA6(qHi$YtI{W?YcK4;e*~s(W_K-M;V|DiE~-k_U|GB-MM=S$Q0$x zjhiU5YXVQ5VaFH}h}QB|+O#fDr#FNMM59wifvLM-{^9~q3(mLP=ZtW8w49P`Sh|JgQVX= zi29=@V$+mUTUn?lV;P#Jl!P$NC8npDQ$OTiB1j(cTu<8NVQ)$y zlE{=wWC0=?`^_5yh{QI2%5c;Zbm9j}tAgnI_s`)&Lkow$+&clkV+`OE;z*Bs@xA!o zR4ywIW9#t~L-*?U#)jsGk^xcxG3U8)aZtn{Qo%N)-y@h&2K%Mp6Y!v$NJVU5f6x|3 z&0E;O&4dH{?TIgA^9rD+<|$}!6RByc#X}<#lGCStHC7XMI_)}HHjG|Fd4`WPirl+r zDXx-nKp!;uTKj%Ssr&kJqtQl*7|oR_rYBKSB_jS)^F%?3M~EO0Gg00rV%NTS;j;4S zaJMlKu~ASkAY@pH0AXA-G)yQ{GPI7}9kr=HO&afZr-~4WcJXkuNgyAaKdd57EJ{(9 zP5woQNL6w)+$=hPjcP;zq!q0rnyrA>0@(SpOa#bDjb2|g0Wn3nw;I6Vno)Jz=Pxf44ho4T~dt%NmP>S8{Y`dwIe&EQ|x zA969C$%fbIUP6i=6R$n7?VtT6PQ>xouA@mw=+9aBB(4tQD;$_Qw8^{B(W6VmRCX@kcEbC zo!Dy$YKf_Kc$=1b-flHgBymbwSt+&d!zf;aLGJk-2%dw;vp>05zV9|@O1y~bi)2q| zL#kFNCDS(V2_6V97&|GRy_hnYM476!j!RR8}xdH2uN2VqmzLG}qOo z#*$65NpN)zU(l-mCBeFl61`LqJiRy?rp|LqX`+!kR>N08=4pqRkW|JqkE4OThOvgl zfi)*`IPiTTdkLI1=C=&}$wD}&?z0x|E?TTe*III%da%cbjPnCFh>KDeNAhn5#!i2} z1Jor<>8OzHC$4i(<<{IWh=~bbwwXLXj~WJzorDt{m##h>N?Q=?nRkpSQ0>I{jW6_}xY%Fq_ovi367=QJJiFDO?yZ&-S) ztXiU&vrD2d1#BU|d0%(K`J%ixzS2LqTDKuwHCqRns>r_3T|5P+YHOc7FSCN}ldHR! z2T;hEI^`X^YG^6`W=vwQ?!&c@sh9mRkfEX7S{kp#?BZBI2MztKUnwny6>)V_}?D!g>%@J$u<-(m;+)M`_(zJ7h1|{$d zx45Tmf%_uQD%4ch0-*9ql>jxH{p3S!Z4f&J?+1f|gvyn7Zs^AX8>|>d9P|#YJO3!tYLpvVI|=0k1Z36@6f9c&ABFi8U5@kj#BpBFBGOwCKT7AX?V8UOMC_xmt59-A6zCTT#d zsm#L}sI8|MtZuq9=a{TWF)5~9*Q&~CzHBgAjU?$ly_T&p>3Qviuz;7U7^$z}uFd=2 zEH{!C>$bf|31#9LA#o50u!48dw$rwDkSb`Tp0sjt$4iZ5|L|+6H+cMt4ODkPgOI|e z!*el}_>-Wm-f9fDrM3Z|&<%EJLoYt7ur%nYk<05J2%n1)^+xGa=;MV{0>aQr_SHOI zd;dKQW0==hH|FIOhjF#Y$*P6aHDq|=6y?kXKfXzCLq|KZi)hh4nU0Vpt1xDMT^u?&RwFnXdRG0SK_bIP4iRY-OUD9PSL1gi)Nle9_sIX!V z9x5)xkhc@!eMiFGGGB2f^x7x4gM*vAkZH;DRoF29-axrPSa5fjDud^oE8qAIJ=T}K z#oPPg)=BYaAZ6KWnD6moapP6I;=!2eDcNfJ-KA>%BF+0*1kUNEz;XY0(d5$96rOTK zt}Ghw5RqpunB}nMZ}Na}<@xvAU2WakDaH*uPZt6m3az6yO3%83i+k*Ck&)f&+ij-- zwhu&wHp)2e;)91YoO(4$#t1Ta>*%$Hytcj!uQ~_5#G03^ZBeKEZ8%uM_NuVJvdlzEZObQ#mfgBN%fgm2qB>12c~z|O)BHNwG0XDH>oW+$YEzVvkR8PZGq>vHNng)0}zLQKdKY?xozt7yMsXH1+^2W57C zTgl*>;X%ZXgk>ykdP@PzvA0ecAn9=8j&$n4n*{}B>N9h;tQSDu)m@tW;J+Bc&r+E+ zJO40PCcn%NqO2Q$$lzOTYb&Ba9E|^^_;X!F9GS>&QSC*(Vu)<=)$lN_Rgx-_N%9PV z>eq>c%uQkV3`shHuf+4RoqFyuW{70$gpr$5@G;f*0SJhR%0u!V#!CXq{HvQNCnUb~ zoG~){t7pV;l9+jc3qbQg3tugq>Pbi51M;=(rE-_@iW}03#)siobo*_%w+-3D^J8$d z=S_MLU?K}*oLx6*LDTp!bSY3BWykUdZxYMCHjb@zREbJaZB!NIK8QtA%DJ7eiJ~gj zaE+YGN@mrT(~#5BP|388Et1ADN>I6+$j_V`1T<-Yukx3;nR-E;&H-xW*)E4;`u6~Etolb`B zcB*VFzrl;z9s5CSJAx?Wa-l;R?Wm|S!6)vZ@8Foc!f=sJ^-sV(^LwHWKB&+)R2OFY ztYTIW;|IZ4cUch~^1nF8rg{6V&Ym_L1AB)buOq~@qHOeYq3}1X!(!|&6_z#gGz4sG z(tG1~FJqY>AT<+;_9v1k-5ExML@DHmLL3s;u%Om39ad@K0(F~&CCf(5aJbH@zkxQc zVC^oj3X^EawkB3rC8A1P#VwbXHm&-Rml`a=eaH>*o!k9Pt!qjuiwzoTS$!EI0*ta$ z`89m()td0KREIY%8=KJ?<@~?s*`=I?Id+Rc2!az(gBnAGG=v23EB@vKE2Vmr`u!>g zmvp!1Bcgimow44E`bQ}&BKCIR_Amtl(*^24DUL~G(HM)fBNnZdHl~v*4pLZb*WoVx zHKxxP;19H>FD9U#vz_JjvJdsEAwbh@#Iu=6%taXhh=)ZY4EpdeG)XXqvu%}fj%VSc z!u;-GOqS)rY8fTK)Ezju?gqqu{1yj~<;Yr34qV&LIyVa)w4Rtf&bEuR3;Tn|oxBww zskVwQ3tqND1dISB76}$_cByR;xsEZEm&wf)Z)mR2PkdKKSmds7oo_fnm=ei}Gf!wI z;lPZd2v10NL!#UMx#M+P%h-vmKQzBk)|K)c_?jps+2!3kvOy-a49zi(ms6+`kKD6U=zdd>?~EV-sMtedBb zrPBc@)(AL-q+HXmJSMFo_Js6vhW4u}T6RcjoazPlrs%r!i5Ax#2^dwx)XX`2+V)DX z-6z4zSHp~RZU!u)(x`SpZ_3&L_rR&PuZ-q62}i@_3{)qh8SCVJBpL231|scP&Q#y> zCz4n7f*y=%bv3au>rvP(scLLsGlLGdF`Ir+YXQPql0T1`;q+wIGY+d5Ej||X%7DM1RF+;ztbLeuG#6wK_}+SPQ)8`(4P zLlUh@Fcq||+jneiJNE;ZJRNM^8CpZ?QRs_?3hYH0z?;AmN1A&fO^%=Vj2l}6NB|Aj+`}dWh z7hRxV0_ZbswhH=J62AqSVK|NH-<9Jq(f?2g4!TLdtGmS$`UNBIa_=^5KJvxG^h`hUxxLwlX7-Do za`5tg*|^12hsThM`&EkGbM(@f!$eBK0r!SSIMABGiCO1+*4O1Ab4;ICi}4&L>zK@W zW@^88cB`{tu%^$B`0>?=rLO(M)fFLePMste@Lxu4*GRZbB#xbZ^6qIr0+IQ?CUC?Y@87MH z!h6E|)l7Z~+NScRKMg~@9%t;>UOiGpIEij-0Y(3~IOwC?WNa!EoGe9s zT`iXclhvATHfxQA*%f{Jt`s*X=VM>YXuN?RQ{eQ}UuUtP_h{nB|1SRx@vQx->7yRA zKMQPGeo5lFEU-)f?x6z13G|-yo003qpd-}lZASlXe&_;Lr6J}35XXY96AW1+i%t(& zg-vyzXHj9__Z)h~^BsOw`>C+e>)yQ~(Apt&wYnYDT`@NsefhJS>srsVTC6!Gv5|X8 zd-={U+Hu*!W%+j|U>HWQk#~oa{=8}^z(P#-dvyyvSx zqtbGwXy;o^vDkoNw~77q!AJ0M^2a}hc0l3@dTd5a`NwS=zd$>&Yr0<5FtA7eF^XIX zA=@PTL>|CoCBv|PCq;%kT^n6fg0=1iF^j;yEwiPvp}2~t)6^&kiLTabOSv@YrW|$5YJb`MMD_a>2=T^84wK6{JX01ZU6yuG5;~B*f1}G;aYfo z4mLfpBScksg*q$7A?cE`su6IPckHf=&jSG+4DCq}fHS**n)~0jCboaK1hSkss;OjtUWXn(U zFT}b!!#;9v3<;d+2Aaoxr-iIZt@iyR=E>yhBW9UUjG`gl@mTx^wx4X2)G=100g4g* z>!m5px|O}1ug#`m3)aae^_ml?lw@wgQo5Ph$*P@-IyKd%*;&h#I7b3UGHnyQbMBtV z$BaM&)>K{tVBkiGLQ4u>^KTa;wMPVD3Z_uq%9k91P$51tlAE)zALY7#rJ}^341sEU zrCDf)t#TQu^j!PedvJ{NXk5kXmMVzVu+mlkf@un*rm)4&uU2#=QIFjm_x%`{r&T5H z_6_DUL?G$*$Smen+xJawN4$*vEo)i7NWPIbYptgU)T%_Z*VMJEE3%{$ul;(!1ywfI z*nYFael6q`OJ+jrV(qU?!OB+0uyaV$kVa^JC+hR35W7X3Y1mly&GJO*XmdH2` zZ&zy-0`?iLaBlYpvKeEOCUDnc&*PWv+yxwdvSO+@1G64HQ3+_SI$OGU6sdI+fuNtA zX(E7}&R84GK%UJk-EX(vc2+vxisfpvyuRajAWq*hRMoBa*zQ}mv2A)nluI7_cE~U; zMdncS={OGo<&QdzG-`NkP9#*Q*Nz_E5OaVD%eh~^Zi3Cke^U8fQsaUl-c7=*% zw@LF+^W3_)P5mGHutc3XRY6IY-&CjPAT%E zCiV7^pv_beJEkY=90ML=sX`ymqc-gY%XH3K*UnzD63fQNj)w}Qi7U!^l}kP?=od^a z{c%9vH@kZzmf{o0o;=Kwl#5BDx5ZvRP0cGCCwpENB-NwGx}c0TvDXt>N%j{F*!70* zv5R4-jo7tue1bmeqrE${qUPUFJh7l}dL2G4aBD#9?#;~aqBcR0e6Yh0A@pf#2E=xO z2Hrr!x4@N^@c=-~eCXO9UE@QG(yjW{SVYbv`c|A-%NCDnLGdEfkeQMT5GVv6nQd8Dw3-ak=X zxzJg@e72D}4~gQg>v(MY70YB!v~HL3vEL z;&YAHFw#6|!yim$rM=RL=f-oyc`4ZrtM!i{pG^ZZPgTjgGOTzj1TUO|6_c>x@XtpIEZog62I0eD*p zS^3(UDs9{m3d(;f6pqP5T10ok87B&@3WH-=7kt8KJm$=8b=i}`s5vv7S zv4KY;M^CbeezrOE-qBb0i5{R$n=d*Tz>HAp(lF;FDiNI=x*ydMdD)WEw$3N=>d?3~ zL=ibqSF)2pO-^zLqr_5sa5MG?_eYGt)n(FyGDR$a@n{?K@dj?TAum56zJq{^`$I;O z8cj-@%Ct8V+EwqDHJ@A35Q@}m(sZ~2p1G-vD%$qV6RT2G$1Qbw6 z1r=*l%#QZDd|rWX%{SeH&Rt~)Ej45kW_^R7e^b&CO8|WNn;plg$y|A<>NATpWAJY2 zs*Bd1&ohctrHv!(v1!7n%sHY~9NRFaROXIk9V;3g;oNw{5ZDkwHxplxlVXiDar|QF3u*H@jjwhiR6s7`Wz5xE&=N$sUTlIkIadtb`HNn z(Nm#5&1Tq0kbd6yAz$Zl`KmuGiqWFE90VQBas*iGKL5xFcM%ntrD-1*f#LjN$3cZ3 zp>Ua8f_ZtQ_NLCQIhe6<{GQr4dD8Apqurc2Wt!nL3KI6*G|p>o{d$8^T; zp>WA6pCdB1tBeVx?_vKOxlJ`V&ZmDyAC5@CLs+YT^UtCu7RYF0*+(VGCaAW!E-+|9 z00QRpML`uyB@{8vDE05Wsw+Zw_Z1m+GEN&?yhL z9i}(^*QIf;N&0yq4(l+(i4Q>)`w)u%3>pVNycA9pnQ5+NGBgWK9@{&FAEqUK3N_Hn zINh*m+|kL=S}A1a>X}4L*SUpSOZwMd^8k2P-Me!NgQm!w5`(3#Wh0udlenfkP4ioq z9&jLyXejo-eJ_wldL3#nXVs`P%+5}ZHP2nGHB(zlXJ+QUziu$tq|=% z^&vgxj#*!Z8!GK;M>@%Ve%oJfAJkmXyDg+@#l;=|Q?V$ZNQ$-ubcXShi!;r>6wmG7 zG|!!@+=KkmM}=E!anMzHy2iq$)?o9km-JXNXm)__75J;|4|^EKpoi6l!P|Oyd~5@f zt1`$GFBoWkKPC<6p!apRLP{2f(%O!lmzrDE^Cj>WF) zrwF1uuF~+lu44^h#@TZNFxMhpraNyET}Oe7US4Ejr|;@6XJ&e>bXjSwhu;&LJf4Y} zblopqfMq~#cLUSY+|B9s6IYU89h##&WOun{|ADGF!QUg$FWPnpzZNR86N=O=sFo#a zm8P{EN6P$JkO6VfB75>OAXGOd*ohF3WuU&T(NNFP)-4VW-w1W|2BGYUvBx+nWv*ju z7)QszQM^9?%|6`**bw_jXj$lC$261dl%1;~KM-j#7MSRDGhF2NUc0NjUbH!YA`G?B zx!%2=RZD{_V@{1ZF8ARKVtW#Z6ZK)FZ^;$2Ap(($vWAq&cZ6c{Ek0b_SpFqGz)$dKbX zJ?{P}L|=O*w&tuXyqMPrzZs9op0*R9UG@8IPfdt0EE|7W(&>63P4{Kz-MButJ`;}T ztOKheJZs9k->Q&A%kbdwnLRq`qIyNey*hJHroh>vS_pWK=P$)IyBhDLj(REw5s^5F zoA0_50o#Gra(tb?cW(1`91NJ4RX70X*ln-2op-;R)wJ`~MbJ5Pyg2rUm9^+!Q?u#5 zPOeH`dR2#w0c`dk z%veci$!~#yi7cSPA|k#}r}9;F$_f|30D1QK0|4(z4}Y=H7YlRLSn`{0M}(aph}p zz4{$nqwzq#CV$sgmC5(Idz=m+rm~vOX#9R!S(&lG`(7bw-Klq#Ojh$~N2%P&pB{YQ@B)Ja-|;fNuJIDu+pQAc*NlnR_|!f#&C!O3(A=K zvLj~#Hdutm)Mi~EHbVQy%G&Qmg|Funm3w!j--%nQ7~4;|OMP*yBd!&BltKq=pOywmkhOe{N@pB`a7V)$#8wr&j z1eM+w=pN41iAYXgk{{R|0sZbbN8aHOj6hbawHiu&9mJ2TS69yf_?v9KE_ylsa!_@} zn8wWO7fY0z`=52n5$2td2~Px`kmgO?#3Ldsh_ z?2CWa9T`<2L)c%(dSl@s`04U}bCSB&zY%1{Q%9*ns$1&{(G^_a?UyJT$TONj*Hwpe zXAp5Y$#PMJ5C4s}w*YQr*%oZu%*=M1nVFf|)MjR8W@cvQHZwC*o3YI#Gcz-LeC~TO z=iNVN=KUWNKQg4$mMTl3$}FiuJ9Dj_OOF&Uc`Mi3PN&xbc0P7bRmn_Lh zI56(LG;YP!-RBpo2XUc^+=pu~&ru3Gd%O?H9jURKZp{xvyDurXY>T8{zbI1`IrX3H ziMBwuzk%i*K$;Bn@>wfHJwP;bWpj5z^F0gN-P9t;zC5+dJaKB){x^lBuo7(*`3x=7 z5|oyxQ)<{gs(A1(E@ALV zeE21_V(Vr%>Bg9g!3h$0M=&v!wp*%mF%anR7+tMuQUp4uow0>Y&GmG7_3{aTd{B2 z9XsM1o;-p$Kp5yz$2FP2x{IKrTP={JnJ=DztAekZ)KstUbn&xE3TOC2mis*8lt>0(7_tsGMOMqvwwF(~j!Kd&5{j zt4wWO^C(!jt*gdEy8@FGGzZeWB5_Acp3Bh`M0fbSu=6g1TivVoCQlQG$&^oC++5l8 z+$lQRh+^L1>;3VemWOPB+o@d}>GH$0E~83Bbp*Xs%|3|ol0$wCRau@U!_;pKRJCv? zj#pfBg2UvGvV1q6Yh0*IE#d{{UREVk)^GBx?-1_O0xTt_1mICJ-;oz!(L47hURSC; zcFQ1A_&6)e>YPqjQ)Q|jT0tw)bU&>udcOCRct5XeuA1a%ihZX}#qEAf@zrkHp5b42 zzR&Mi?Q>Cg$}F63o)WgbXy3iItZ~~rqk6%ixFa`3YJb|$Kl$mo?h0NY_-ei8X<+(? z?^>#@Y<&5BP2pPX^E(3Cqqtx=i-f^A3K zjwIb%lb<;ax77$~#(%dQs3W#I^QRE4Y7lBZH1g`t^kRs|OoFG~gCq(a<4WTIm2=wiCWjCG+LV89^!Eu{|A-f!hoRgvBN2~`-P3ha8r_!5gIgMJD z-V=Pus!ufo^6(`4lBt{+TSa+~-)Q?xGjBCtX$DT$|B83%;sbEQ2+jSTEkK zjBn0+n=`it$=7ddGb@QI`OJ+uo+a6kv64rgGZX7;N&`YzdE0xGLG|a6%=~PX`Xfcj znASx=tCnDqv~k{ycmD_V5xSH)zgCc=IR+j&(_wy8nfAmqAwP-t*y{l3E*A$*4HAv zyrl(Kxdlu@st(bBJk}pg&FIA#{Nxu4bk=x>hFi3}Pc^R<46K>cBOc8AsHTDCV8N_s z*qTNh>GKm7)<*~bj$J+W^{^jT9n;QiIWrh2G{p6<4LGJD?99AKVL;%cb){-jr$OSf; z*16&S$#Kbl4*Z*aiP7FFc5mYH?vg9{6Ob;>8q66YaCwE`?h+ffo@I?|sbE0IrxfSjIe zVB?p&hV9ideG9yK`i1OsuhN2s=bmAvt`ny7h;)0!+(t-A)EelC62;Til&)K*Qrem7 zT(c#ew5)9{>!I;RciLGGj8EMuqwj?n7P7*ZJa`^1eWu|qp~oxtXy@jt!rhVuz9x%U zl@m+VGi84gQc^8u!>p*0=u(R)Bw`wPr(S$WpEbp=)T+=JG83XfRnmqpm z-yL3NQqFZdexVOoPA2AFnuWP!Ep@A}cTNPgOfH%zJcHW+mQCiA`@Z|+vNE1DGr2sN zsR*3={+xl2FKzC$ucJ+$o-|plFFfaxFu69tKel134&i4n4|6_1U9)&es zo0F}n>C7@!*XFw|2J@TI#?q}ZWGpmmEk@7KKnz0>%&~n0S0j?`;EL*78gYt1eq z9+J;*xo<=7I8DVX9)d=NUnnD0s2Y+d(Hah$XtTO@yo$U(=w;N^8-E@L zHB*kGJ2(GPoV@t84ge2K{X=c8o7X5j{)MD@EjP}xJ5C<#af-J;$C%V%l*QUy1hf@e z58gc}kIe!ql9j1fw`LiVpU=m+k^$7o`_|McbSH%^=?xkk$48W=QGSbP8v4%>5AGEQ zF0)YDt#&hO!NNmA-DZF_(u#xL=}8ykjr`>C)ZcJ=DGU}!PH8Y*D=E(C)MLN@tftbc zSMAY`eNAqe%qx)5vIGcR=42%-dT-<#!z7_uQ*W0Y&K}}8c*1D|EEg=8M>IiQkF7K% z)!)9%hDlz?&q!>n}|+PsuYm}<@gL>*Vna)Pa;QgUuYa^Y5* zSh+Pd;c7MN&|2*ouXc4=Ik~4(;@6#m&6$$hq5(rZqi3O)cqa6>BcB$Bp9_;|E;O15=6@ty)xekD zizYEUNF9FT;X!178tmyZb9njYnCmGSyaEESqg}O$OsOeq z1C;Nt4@C?ikxl?Le(#R$e{_DTHzO;wtY?LV7FvPS)$r_E>`n%Rwr_cU>$d%!x_B0x z(IwY_Veud&O*|LK(2xmOz=i9pa7aQ?9x>*nia1Fm)r8%k$;(7I%u+k9w@6zGwb=cctb^** zVRcC{4#qXba)5M!b+(zRo$K=%_!0b$=)-RX-|4bUgM)NGSE^ZypF4R@fm5coGBd9{ zUxJu8jsK{L85qo{og0p$kE&|5eW04uCO6O2ygkQSB}#E6m*1Y1Wa z0^W-o#HKD}We8je>LICDjXd(}_l1PsBT3i<^0Xj2xfl=%CPah)$j!hsU5NeQv~bjY zLf}Y|REs!-)pSEfqY!W{ka-dE^u#>gF(DR2#BXIibq_UjGg}E~zu`9T-S14*kG5OwO|Z1`3yIgdn{p#*wZbvFpodB z!gJ9DGa*}%+;W5zX99+Y{gw6RBJaZn*ND+g5ghLI8oj3_fq@n+*i+>Mp$n^H_DT4u%;KlydVx4N1HQl>I01}#$b z3Dre+$C@Xd_m~L*eXAp__X=&1Jel?icTX?eWmt*}HI z6!Q#6-_M{ulYomJlsqbHuGhL%L`lUKUNMJ6^B!)!z4Dty&c~p5$Hyq$u~f<~>w*JG zU1iGj3DskC*Y&fVmcnu*Nkeui?d&G&4Km$_8HG`@tgke`(W~6*D3T?H^4(oC%Hzkm z>GiXC`?{?oiu+@z&FcAKaFq>rX!@>eZMg(_;VxDM8JwNrp{4ZrZ1@D{g{?;OnJN!* z&}KPO7EUj*;3RSHk{gh@-z~ho;vpC)eQlsB-aNC4`jW04IGCv&xv34gsf^tL4}68= zo%Q!;tQjz|)SRwfs7|oM>FQtB4V;-9`{PRV_>Dj6?U$ zLP={r1kM~2pK`aqzI^S7c&>va^I$aQs{6;1D^$(x6~(1x)??G;D>kc`sII|+p*j_b zH3G)TgMVWS6in-K(dzN!Vui2)YtHODdpq7UWS8s%cJu0Y$quUDUyAJwRD^BiA>r32 z?Tya3&mqdLQ>3oTV2y1Xn4)n0+w|a)UAN#CFRmD7UqIWL9d-8P8!&+k3D-dSVNY~| z1^T5ecFfS*awqT_^03(f$Ai~9u(PTEmDR0Qm*hu%qu<0lz+SuK_C@&DEQvEgR)fIc z!X<^<_)s1s5!`m*T|MFrKjyNI-#=00{-@@Olbwz2Z#o~x-@fVp377ku^Y%AnQ1U+@ zgTl7X4(7%VGRCfQihn}}zes_9GX@#I%+|DQ?3@H_Uo<&J1}4UTXAJ&L8027P`Y(h* zW`?g<{w555HT;VI5i$4|R_@ZU%bs3q=)SyBhvr?A5tr91)=;r;=5w;-pOnGCh1VS0_VVI-jhxQ>42$E;A=$-+h;;^v93a-mQdbSnC>T2HE08+kC(@Z@Aq= z7c(L{!Is9Vfw{AF{dGq?K9ZkF-3qLl9-~>guTrdjbDLO9a!>X6Jx=(?Ql=OD{PaMO z`2a5dgia@W?(sjqYz+B8%O0QJq@3#sXvpj7{|WmJ#uxG-b9+qhMwj@;uJ;o8FuU0+ zcyt*@f7g;0IK4@vcx2lY@{!Ma*ODRZ+uIfN5x^;);R`2oyX5i0{Umkcs`tYEr=(}l zE9e9LQs~I`TE;qq-@)oeEJpexEl>Kx%|*&r^Hiw#Prt>^>T|=5yDI`=b%&2$`{DAH z{+(}6uY1N!QO_pc`aZ%xjByr*zsJG<9L)a*QsVz^O#dS(k@ah^{wFGt?F*0ie{qBU zzi9i{`~LsZ{vQyJe|UTU z&X1fh@r`f~;z|b-`O8BUE&wdTl&EW=ND#M0R(kp~p*JdIf+gL52O*3?Igr0rqeWXY zyp;egITgyFFBaK&J$7|5pozb9wHlz((iAMa-n?i-o&LVTO;1>NRC4jrHo3Rvc)@w- zdC_*b;kxPh{IivMr-bB$FnFyh(>qUT2r}mqxz4;wvybbXn%a*?$Y`~d(rNC19{0Vb zO9X0P%uUuUhj*bD|G5~HNYwesHGT%{`^E!YF`ZhS6RiL-7l?2GvBexBK{OVYd+ z^C3Ia;tHziJ#L02GQ4V5ndz+ytGyQ*^yz+gFSBX#X+0IH=SYTBw1Eok5(*Vgq@=bi zto;d5AyGm_d4Mo>6o#OOwC6YRG~e)I_wxm1TyM|`uIvs7eVakMuttuGb=J@d`%eMOiog;B8sD=M zzb8*K=>wg%gl@5S9R^@>nYor<i2}iK>Y8YE!_+L)ASr!|+qwr9HHGT2fD+oO~xaF_fn+^$UQHw_bBm_e;vnAFp_K0^2eg%nbfd zkxn-LtNa=5SdocGM7F5Rvz1y`M*T7Rim0wJ)>x0g3-mimbUlerpn@@HaC~*1Wm#gg z0zI$rrpcUI*Z!~lu4U^w-Gt=gIp96iTvvcXbH=4=qCtg$?W{A4NR2`F4tJ$a37>VF zO(W4m^zt}MppH@a8K~!|f`R+hPF5Yc;gq4+fx?%x8+^BMTKf+9o%$W)J?1j(Jh!3@ zh`6WEggI+Je}{hu%Zq!nx>GQcVHGFNI_M$6AC2?J@G*(Stu2etWvx=mAm6aYa{rkt zPk75U^Vsef(mn*0Vo$h72L%Kx^qdb@#OX6DS3gad?!XD)56#Gjzjt7?U0}{3eyPhn z-97z@sMN*L$dRsrrNN~lm+|c3vC4}73ZE#5Q&6`Uf8plL<#Fu9=$IO}X9AX0P}U)o z7oG07@Ec=y4u46dJf4b9WeSgwQ0v+P3IL3!l7fpb;6e6+r? zB#o*%HVp)AC=I>lMnj6`Y9--mjTN`G>uQfDqDI=F(m*ucbJ6f_^z=QrK zelNBc4%#~&6J8#_9vYK6TV`x$YJ-N#uu4OZ;Sw|d>ga{Ou8FR3Y=ifi`@}cLEw;Vv zDc(;1*VdfPKbPAGSHw?vyPspe15?*9BVNTj3OC6H``E?>4q3C|oI%OwW9y}7{bS5y zSo?7Msbe)sFltTdC*N7~H_Cmay)}6AyKSC3jhVY&X-a7NQN!d1UBH@Ehr*|W-I7XBy;C%z-pQJj5q(5A`si7X&(1$q2J$s~|EjUA8lnz}6YYtfNl?1@Q0Ldz1 zFRv@%tqv=v{I1r&L}JS2USNB9mE{8iIJ{7HalZs*RBpuFn#bYwNAOA6*4fVHq?5Yf zm1G9Yjf5&5_?$gzlgM=8*kzsnzEAT`LA!_$+p%9j+~)vQPMM zV9Djn`yf)mrXD~GsfdE#X}2t?up8_Q)OJAjp6S3-^&px|K-OBgZ;W3#g8$`#FdVhK zWav8BJQ#3?tM@qpy_}Sx?pU8d_mWyBydgIm5f9jsMTW0~_D)`oo9K?VrB!OOM6?KT=QY(06VuAYu{%sgjOD3imsa4aq%laY|7*P>2a z-iL)Y-)hm-9)HR@ueG$GiV@L04iRh{&}Vrhw;=Pt=v3o0NAB6a-F8fzebHLtxt7Rz z??6RQGi|BWey!0Yg>Qtj#46~MyRuM;gHhP2G3HtL3zm}`=UW$9SCa>ZDVnwr3SxFUg!ztMzK@C#r<`6slO$)5-xnFk{hW25$R%P3gYrjg%r z4i;Y4Ki=DmGfpbc&JOy31C^WFHDDc-v17cBg_IpI`!$T0_ZU0`CPG|J-@*F39uc_8 z1~YT!4=irAH;pK|O&Evfy`nU&Cpz!X@1(Rrb5s_brbH}LW;GM>rbSy?9`V*Ob(UCW zGH6#0Oa{KC9L{@qS~A|fQy6Fm#>_lbACLu}_r))%CwU*s)A8ZRDoMN3y(6%dUtoK<8m1;H+*Y|5oWS72RW09$Kdv3yyX{DA3 zh&XR-^;C=S4%k-B;TK)kqjw*?oi+!*`Yto;;`hT>5|KLDp%&~j!}|Cf+r9m8T7!zd z45DG>`kuyGy>SBF187cXhNRdNc}?Bhh(QWpmu9uC^*|d7!QmtICDhB)`2;l5$DKEm zK+j-fw+SZ0z}mYg^`UJY43`_EXA6e@+QXPn&R^zpmMf~5H0LN2AFW;0y~-^%hKV|J zr>vHmOB`hwEveC~KS$Ga77C5*6?fDl8VwY6_%CRyckfx;<)e-qR`0f{e6rLq`pzT#0+_VoxcXfp)S~YR_ zeRYbqhjmTM5>LsFY2LC!v`E?BKk>1(z1x>-jhsn?Utg7E8`$~XIgU9Mq z*9K1pfyah(9JBk)5#l^VHQZWtX zvbgs}!5<2y_;ZXFxO?_liYHf;1BOv*UNGHmRJHQ^NRvORngw;Xvt`homGVR~xyC5^ zZJMGS_Cd#sKzU$G6g|3cWA`z}mpDGnaXwsj$2`pM)k}Dtg1v;=aow#aN@Te zJ5noowI%J=0Qx{o8N^pcB_i$F$uv2Av9^Po1$#Yny#~qJ)te&*NXN1bcKVAex5Bqv z6wxnD`5BC1vM+s&$5bRu4ehO*V2vZjU8oE;+4n&^8|)QjhUO06cOBI&)J?{sXi_wP zrYBlJrPm9ArPO};FwBmbjbTXDvl)%4_X>)w3UFxXGwZWvt1>9b<)WMBlM(^or{`f4 zN??XX%R21F$xPO^66#9SGY^}^l?oZ!@%3mP6}t6PZ&3K;wIzI_za4j*1&3J~P9ru>J&CjFsw-;VQ_WJs0vAjg64+<0xbUd0UJ{ z7FQ-@-{4Y~NPKRl)nCQdsD@m*{$w|P;y#e#l&UP-rBWQq;98V$Zyp)8PoyNqA2y-1 zob?T*g!y!{J`87dK4Ufh+A1#TR>b>zi8R)|{lG0vlKlpgaq`G@b=-OV$1c;2s~3SW zC;g$4V#o&Nqguk9D;>LWUaF%+!s*UkI@6Fd_!Vl!E^Q&?CX;xy8~1f!O)-IUKwl%= z)T5AMunvaN%u6nUc&uoxTPcWc)}pX0%9TFPTx2%>8p0*5+3MaWef!pSpe<=F?zFd4 z5*muvoqY|OQ&rTQbxhfuf(UgVXYp>AA!}n*Ex10yEZKmD8-M~IV>iKeJE#+zd=PR3 z>sdgb^ObF21$HC&QBgbQ<(Qg0-(@V!ehvH%_$XZCc>dccx#x8}cb+y4@ez|t$FJy^ zbO=gdOEnYfP7LpppC2nV_FCmB*_y`H?0G%tj_V}Ubd|vlS%LEglg81FjpI}=aZ*4| z_YQ@0=1?QpY`M`RSc9q}B?g@h$@&;<f>&kyN14WdhRZjI45O;VLpi4=uW5F|>Ui48oLG7~k zI`7!~z}6hETX$^3`nk56c&ovwA3gAM#}R7$dg!4j3_r&bhedOLBJigCwJ>Yz3v1c|swb>=rrex4_~IWH9vF?KiP($megj0I~8^L$^fr%JKB z|K*R$igc0{3+?8!Q}k@r)V;iXaJ9Z}p}lbe^TJK;jcH~afi9Z~wis;ssJ0=vFN%yv zIfhYz(CGNOo|E1VPSqmw5Vy{YTEKjSbUNkZUE8<3wS912&xc_5wsP>uRYd4-&SOS= zXgP+{*Ih=iGhN-$OT`N+lCp*S!PTz~c9A)7h2OHQ1eKrW%;{={fQ{cIxS46v$L|06LW_BwfQ*ShM%bqmJN)%--DyH z1*}~dmw|wicOK2J9u1wpwMG-+xq}U&kLW(d+TqKr+n^ZaCpd7Fup*~gOFN5=-mtzB zBSIGS4e!Y6JgiY){;rNBAPaZ(4$MEe-PaMuK=$h5ZD6LzGc(OQwMTP8A?a}T+qFez zoyr&%Eu>yjt#3oAvFf*iX0R3)7f^5O#K^5kS=@2PZn|D^4pgX9>kr!ei7WF**B~-g zGbDI@emYhAx(LmYfz@RrsWc)Qtkvgr3BJ_E%)KI>8T6%jNiVmA!FkF@D)MAs6`8#A z9J8Fl&olqs28fs`JPtn3t*5U*k;g77XWc)RcVRbWDzGKc7D&g8DADV4#Ur^=;E|+; zQJeMx7?;ET1M<@~FVkyBwmDkA{ZEJRRXq~DdQI}INKWg41z?rvk~Q%>k@h}}&;&Q$ z)W3A0Sz;r#LAFxq%Fq&1iPbr|U7<=LwamC&vrC~$F;(`iyRz%L-gQoDWu+%WR!foG zqY{%3#X7ao`GyKIZ?-qqE$S4Y^wPG|=aa36zvQixjV$!qa*^9pC+X|hDZ8S7@QK0y zFt@q9E1{BI)K4HI)5ukdP#CA_?(#cDYX=WBCxyzLg|^3tf(=%G5KTe%$xLDjY9Dc3 zTvfoEqFt~Q0j{+|iloQD_!m803Xer>rga%<202RYAb||Lq6Uly(V66H${?ntO)r{NJ*KjObf#fKc};@XX^cv=5u z>>4HC$+6<~{25{Go0XB`CI zR03hB!p}3931qmj*e!`=t&p`yW3-Uw7(KjrU^rX^V=q~6NLjMo$(~}g5p=D3IiEDc zN6UVEXOlaQL3Gd6cAm3fudrUKPM)gMV~bVM@s|>EU46I%Su_aLD5)opgd}k>AgtbO zBtCB}i%HHD)t^T(8QU1WsMjTuDbvJniOP}0SHm4ywXxXCkia#C%}dK&B)^*`z~D*w zx~j>7fV0SGIWe~~U_lOV0GNjYVv{*eQ$;9S%NPjFpTnXPWEQ^d*pu+yV8NqKp-Zhy zhh!mgU2M#|b`2tDaI6Ydp?MZ>T4%&S^G{fQuCPK{ORkalsNAeP=AnI3f?y_RTpSUT zRIE%U-TEvG#nd!<(g_A6*==aJLQDkpaHC zS4dMdAMgR|BfdX83GID;kV~J(*g7K zrymp!8H!DN%Xx;X8+?v@qrhWiCKK+=v3`d%=Ra7B*#el48iWCz%gKsrJG)ZD&Qdf zE%*XNQeH-0e+Ec&s<*?f%tzpn<2jH+;K4zw$BTVMVV2VcVFYfa|1z??DCCgnfaGAX z48l4msnbkYfv9oP{?t>Ue5=EZHjH@4Wg1=%;YdbdW&^q%&WZa7z6>gmh~S$49TAa` zKu92nga}jwGVCh|ha8=wB6R7*hCG z^i_2?>2jXBgT*!Y{Q}#o4EnmGAut8vq$d2jgBekGJkeK&jj?XPZ3LMIL0;C^3-!kZ zcTqD4-G7Mi16};q_g9I71o>AHCW0mSD&a>U`3PZr1TQ52QTZJuhVix8e;t;myUZI! zdbplMR)BrYKCe~Y9`{k_-sCyiPmXrEq6U1--9MVo^4o@buh`nVB5_J6m>vCgb+agtf+ zc#)_oX+p8Fm(yZwxMa|yXRDXV6`KMxTls~szAv*8v6Xc#pAh>+p zLzK5J;Tu6{E3xF&h)1XM(mY+{D|v3bUxDMC7Hc|fLLrj2Fp++nmaoDCs_CV1$X`+B z3}hPAu+BVKJg^+UN6GJ2LXXwda1&DUliVr5$nAFL3^a(frNA{(Tz7ANwDPoC0#I2~ zThpy-t$ts%(k%DRST~ogBL|?IyL2p6ue4>Il?B!zxpqH+36w8TrYWOUQ5lnC(8hkY z`ZIHvOvN*5m+d;kC09;j+7z{;uRj?ETE>x9ubQc8B~PTOh&e|m|4{c?&!uhNp!ie6 zY<0iHde8iz$J_|s;~FP#I7bi(wNOoSomuDeqXTaQn`ns1g?D=G=drma)hu;!RYrSf z^9xh-lGQD}_bhotL-g0iRh?>BVVM-4_9C%eZ-U$z$m`}a7T?#H4~HVgil5e}@X&eTNl?e| zG3CLjphR@(wMA?~_j2DuQ)3nE@i{tdT-VylRr&ONu!P=_k9K0P`oxDzdv1B&cjde$ z2E8NFQmgyqz(3-KY^t#C0tdgM?2V~+OthAaQ6>10$t3n`K}#Kv0ZlAsMV~g|a5+?% zx9;Y=ZOPa{`RT5gpRB|H-h+uTyJ|6~aK%6fo<@3BH}7eh{KU&|E6&MFPha?Krtco&o<48I`2N~Sd0s-{NlR#wQGgLbcUJtpfr z#D9*JP)djJU-TuOWbO(t#(nxyUqy)GZDvGnI>Jw)IzzY&0bE7~4f+(e&dg4cLrxJy z&hJoAtbuj|oE;=?$gWqo1f9dzRWpM( z_vyB{X_>?ux_uy#sY9GPs$bAxlT^JRe+2=ssc^@~c_BzohX>RP%JcDK>NDylAuKNN*RwpK=e&mCa-uX6|3nEvt;va=B|F?{7%85tP=AA-WaClCA| z^@Lvy|2KZZesGWh(8%em#*i`d&VsJq&QZTh2|B<7_TfF?<$sa z9$gj&_ue_ti0+oP6r}Uaf-4#ZFWo4YkrYb#P#Sv1YL&A1M~*9E{}CUJRDD7rV-qD{ z*Qw;8&S%9>GrdS6y-R5sA0en`GtpqBtiJo3x4O0SKXv~9M+4zM_x3+#)xWHg|Cv<( z%Rk7(&i)Us!GDdie@jHO{MBdw-i!aMYmnu?bq%tzvT`#0*F^Mur@I%5k42lRW|CEhUuNIw)xR5>+8dCEagfB-vNq%NDa@uRKuS>9Qx<_~B+$`-Y5a=w z11Z9^k(4r*Tv34TOikEeFS4?k+xQ*p8D90sDW)KP@&3Ls_5OHxJ)wRuk?v@cz5mK{ zh-Hn_@xW9lxEm%qJ7mcgwe~m`|B58k^8*rx-DZBs+cy_db!d5E($M?SXCHbS~J(+a}ACs$ro~eE5))| z`x9bmz<}Zt`DM-NelZ#cPy5B1SV)$9>uuYTO^g2q`B9cLY1>EqtuMrq&eQW^69*|H zAb5s15m#f;v$;FvoqtnQI zs(z#UW1m{38e6T)1o8dzSk{I7Y&;IZh24`qz*YT&`K(0G*Ve}Tx$=w(HLauGD}hyT z7hlyiNazT!5g%;Ee9ccsWX_Dz1G1^W$BA7dNJmtb0Jj~eCx8Q0AnOPTwU2Kg*T$%y z$%)BDG$j=H2CJ#?o6;HHCBik?L>fIaB8dKS~4l*&4A4R z3pnn*Z*C+!b8~%zBlkl00t26dkUtpbiGd{tdM=_X_QQ$vMfsT~iY1Ir6k#{>>UAVG zWJZT>_?%KV_#lt?2%#0iq3Z}7fHOvXWYKy8u^dt|ewp+c;WMP~gmrg^=ENQKgqUHX zU=@1y4Ot%Zj~GTCoZW-ek+fAGT%}S>5=P2p@Ji?me>%r4@_0YTjv16jYe%}n3z3?jhp6pYn{*7CdaK4StmDO znb(5417&hI`#3&8r``?kD62!yrzTRnP&B*0AiG(XK=^7o2`2$Ev!+ zV)A^qrZ7nxy^>$s&VB%nZ?vzh`ppQVx)3yKg1R63G`T=&IKbY0qu|tn)El=Vub?}z zF8d$1DBs9@662YDOp>1cvW#@~Ka(vJM#rkA6VcqayMY?Pt^L`rjNMjTd%f@l`NilB zVc>U3CXSq2KTu5Y=Ac#)(p1y=>ssnxTN~{lt6o zn&Jl)k%AEXZbUBVSe{94&bWU@b-;D>Z?+H{A@%~^BbnUPj%lDf%!ya`JEj*94;*h$ z+i&{(QP0q=udD*jEj!%$9T@yEy1)5{>38{eWk-hQd(n+E(un4IotQJzHT63(IeR-N zJBQl=(PuI)-;-06KvF8`UR@p0pmN>(d72hWiHL2Hy-}$H_Kl z$H$2-hR3CwlN&gO4@Aj))F>y6s2iQ!UI=|pRElfLJLHiI{@J<@6lOJWRNG;o+z`;t zCL*1n)ZdGdsr_uDN=+`jvQZ3gs2^n~*YU%51>OOlJwF0CZt=BAUm|bBWsU9^i;4YZcWfw_Ti97`!^4CbGMj`f8 z$9iaeg+8+1Xy^}LpQWBNzh-#X6M@d2U@%+~V}x}!zA3+nrl)sgyF)znO~#D4Yy-I& zIGCV$vU-xgas&3CSg3beuJ9h9AIfhKmTe9cU8r^b@Wh^~grN_Iqw(3ZS{HIX0E20swi!1%OQ0 z#*btf{XD|mI?8LHZMj9~{{g-E#&OPn7s6Q@n3#r{x;8?+NKazcXs)_iBbwV=I=@ru|~9 zuA#D7SQJty7R-gI3^T}?>^}K2&kzBrPpHiR&E&W9`HzEX3_p+y6C#4Sc7cpHJa!`P z7xa-=W=DQfWX*>VEBa}`<1(m*KU3*IXMl!3`v>qUK|364zNsI$tr*t9>QV6x#|EfF z55^vOVDVKlMf3sztu;e)RxW+zPu!8dd%GoB!H-YqLLY<=oObxg-|BM|WAV(ccG?8# zA%Y(l!PY2Lg2&uPbk9hDOL_ce!hvu{gm1~8)a{^7lb<24-10b4wzMyJseba21nFYi z5tkFRKaj0j@>CfDU4Exwe9L)sj1;`tQ0zuFaRWOlHO@uR{h^xF6U?=>UPZB~uo1bK z+N0WyY5jwGJl5}RU576yW10?t*r0)a=s;koJ2WhS|4!eDvG-tbhdxq(*j#|1_X-u| z>wl)+82U;)GHLJ}bAulTmMw%h(pjD3RJ*!gA$ z2vs(ddbWt`I2Na>}RK|8`j zC-3i1)Z(ahvrk9@!O1n~cSq|_BvNwLT{cnpUi@bOMpJV7=H_!&p}a9^vS}b-IbIBkBt5}k3S}+;A-eN?01(+D3&Kjr~YiM!7BTf*S7S>`G>*y@Q36yITk_;fX z6e6AYJ`T~rrS0=6$HW-U%?3`FCE_2P_`+cwz;$FzwvU_0(-rLomJYW~2 zP4Dg0%c#8>iDrXvAHp&vPK{p3oE-za72qHrqxsYfjd^q4(@_tVt=kfzBwTbn zi9f%i!X^)U$d%NXu&mrNr)F`BIW}^R-dA!wYB6HT>p{i!7q-d=#lwQ@$VqUF zk+6T&?33?akG^;a5qLp#%46;VYfO@(td^vW{thD$0**zv?{8RVn9m3ay?jhu>Ts15 zN)^&~@OsuOqRE%i4vkBSL6BzZ-H2K7U01{byC0ai7~da4{oGWnMFa8lW^)d3jqi3B5nyouynVT-{z zL7AVgdMWp`^Wc?%9xLWXRe>IioYQnvaMnV4I+BvR9`gv*Z$NX{ zG%m8x{gKqegvpzq{GDdyUKv`ViBt3yljilTKKkw(VEZs3C4l}uzcz-s28;7--g1~p z=fK*Ph7xW9mrJaT2K{m#A9DdzV9%KPz_YFF`0DMI(;O=Ph9y>j_b}p50~i~yS(E9$ zKp?Nzn?U4l@BNkD0^qd#mKtoH0li{Fx9#a(f?qg1Q~_SaO|WI8$%O<7z(+h=5yDXc z&91n~h}b2joEn1TI3*1E&Jh~8KX6LYB(vly40B^D<|P_q-jF0_>MX9juydnWlSo#w zdu;^hZLk;%-RC{ydZ(E9L3k#Zr|^ZCY$Bck`sihD37i4(!i1^32!~h$JD3VP6<4Gq zco=-+Y-Vf4Au5 z@U*|!c^j0r%yh2Qz-2DeuJhBd%EB0LjKLcI*%7#T(3928ek<<5^&<2xb$z@zS9K7H zN=w(6Y|rbj3-;87V)zD|VcS{^DTm@Oa}*QUADTdk{dC$?)vJWx8;G|Hn3>hmIGKeVNok^lx(Vm( z1LsjEu8PgnvgAzUf8tN>i1DiE+h)CSJDyFngba&f1SQ(!z1v(GY8fY!LnPgtXyB)-L2ra-OV3|`Q)e*hYlShc39TRt z(*&~C44T!gb%qR5AWn$38RoBmgcrw+aDa${iMRDQeoe6&<5;Vdnw#LmU`fU5cJ4ns z1w8sTw;W#bXQkf0N6u|;3lko0#aFm`b+xfFJ@(tua6j)>*qYUGzEc5|9j~<^=m2eA zg3YGG`%7zGZ{4m*_4(}4zMe}Q;S88aLURfB6gGO$Z$ zUa`_eK8~r%reAPG9fg4}&sSs+ZNCfONbHHTQn8Vl>KV1DlEaR#o=th6`t5nn6zNQ()OL_so@HI4+LO( zZGtL7=pd#I6zr9EJuMQJC{!Xm;RYEBI!kd!GY7P@ppebCN3B+TWiomyiGl4Vp^Dh+ zhkK~*KV0IzHf7jtC^(Ek6~)2DhJFcV69Lm;Pcg7+vTH45{8|W_@Gx;!mcYQQ@e2z? zCK?C2P?{&3kAj@VIcz~s2^%3TFxIU=-SBK7S;fBS#TuJpkwQWNVu0Yo*siIRm-zoLgsi_lL>W3}dah zm_MaIF$4lybSq1clsyahnR_dc2{fwvO`JetiBqr%(gB~c&t+T)2{~y~yB@{@7|xlE z(7BAWAXrU3r=$W}A(eP?92KQ!&L=zQE$pcKmhINwL2DwjWQ5?_x0#@qCJcdO0(AmUS+fK9W)zbQ7u;?P| zy_*n~w<;0c!;=(a-L9dnr?F&QxU8ib_>1l@^TJGq#s2_WK&8LTC09?xd<)~Z&b@rg zJTtFtYq_WM8@SZwNDLPiuP0t6bNL@k8}|Zo;n^zRhdh!I*x4fyURG=Dgu^u!6PB51 z)}$lMZkj58dYG^{WX>EW+-)KcNJFkMsTB#m)yz#{0GC*fipOV998b?2!xg@Kds=u2 zn3Qs5g)Ah8O+zTsN{^QF@-BE8l%k!ri~}-~ndC;)Sgm(q%N1t4#Ej|fBsZ4Bz11!( zV@MO3La&D-NFO-D0RKk2AR|3YPC({ApC;!_CXd@t5hWlq;wO$1-7$M--Wpca4 z9F8LI~s((e{*rD&igJr$#+W za-Otvl8asBg*rJied%V6Kwh*)AO#IaH5SQooL8gqdC5CBz-t$vzqoKbPHzGoOI^ls z3x3%8l=bKMW#uu?n@YLyuPVG)*=1d0xfS1`+^v7p#rvejJm>4smYVka@Jp7Los8te zOBA)y7&#*G<3@F{kHZp&Pmp6jH_VN26Wk;x=RVR%a8lCj*D#t6Z$}Rmutd6+h|uhr zjIQhflYi|&jd#gGAGZW-py!A_K^*M9@^ni}%TUMQPmz;tL>w}+jqeNZyUr`Z3m>XZ zhyWk#F@|(uCgcvQLh`UdZx)dUJ4I|&Le9=Z&ZHGY>|)_yQQJi1kimgGYW%rWqw*94 z`Y0}8Kt6_RnQP@Ys&3TXXuRHft^HcJ0uWFI`zYOlq2Pku0uTM5x&nWI%s}V?>Y=a) zWMGr6jz~Kr#XXTQgHC+;s_n1teD%i7JAS<~f7QbMU)k{GD;BX&Jh1DDFP$BKaPN=5 z{2$k~7azFkmvetQ@GocX7$y>IQ~4D02cWeEE?1?rNS0!jtVHOD!FEDe*iOg^>s?Mo zL__K$em#hIN_2WcH;v@HzJXUn^nT75m*E>^_-YxJh0*|!>v_j@UcAwZy&=(whn*u% z#%WZe;;~W*-c}k?NJ@Y~i-bghLXW?8TzD;hp_FU%>mv%T-s&}`WK4YnU+KnS?2+NC zWM7govQRzW>BXD8+q{f7WK?4^!hcFmLa=&$w$Z83k*p$OBuONaZKN{mc>Gu;JqB;P zR3f`@>{zKN9HUwm21O`3rc5{zjM12q)P)4-FS~h2vo?IcaCcCq;z60khO;Bt@vK~* zox-BD3yAs^?JK%t!DFF623`-onRu6bH}G!o{e;?BOq3E|NbX4N!~2+h?6_szIqn*F z?@sPZX^Fk0VwD=XTb1}_-OB-mo3)yaZmY);b0zLo-mAJ_{6^p#LA5cijV6{R`m*b@ z*T=3;+@^aZ@I>}K_FcCorfBe@=NK>c;WQX0Q#gJIJ(rroPRUSj_d1?)d7VBd7MvnH zIdanRoRyrcGa7>dt(wzEXd?6CU!YXFz5&cgc&N@VI~;a`n9SBRd9ci{jTjqW^}pl) zyPx$>v1Um9}q?%4IFT&j3G;`lv8k?nkpcE&oftme^kLhAgEQFwOVz}cp0i# zFQu^y>=(#Zi0E)iRBCf5K17+?9gX=!0U(3V;0M(gQ@D{Rc-@GP%G|_e!Ng103hOgJZ86YhKKz7^P?)Bq#L0XhM%Lo;F__l33*Q?JD-)kP-F}>`~YwD98Srq|ZxAxHjK}A_h-_ zBN{rLF1{THy)*OCM*#1uc#lA;Y2nyQjl!{br3NIHa1114O)w7Tj0BhE=@IT2$w8;2 zOG89Oahys{w780@bd{Y}*=d!XR@v<>&Dc+?{j}OotNlp=^hhma{z(xZWX@8=mrS-a zpNIIStNG&u<-sgwifBHkK6D{0i%XG_$7B()&{Vl^S zBcw`d!J@(*^BSgDy=16M#=McGb*h+GSQ_xhyx}QUC#3@UNUA;O&39rk(uC+NBjK>Y zAgCPnpmIWmCskOl8d2?6y{h6=Q_OQxD2e>RlrPzz98QiTx$)#gl9^0mloXQF$rDK~ zIo$lvPKy4j@Nc$~q9R3tFqbw%q44p{S^P11_*8J1oo<;z9&&}n6={CUCyO?gAE;)}7A>6z5EA1DJxJ)`# zMw(k-ks4L3uQStd8)bLSUV3BK>WigE=YG0Iw7Y}AZNf#k z^PWr6xxP8~B`IGpXi~MTX6Ju*u~P_)5PaDN2OjuEjp~@Hzv3tgg1GPyayDuyxoiDY z^ZTjh_nYjjl2`zQtd&IblO~XPof1A|e)AM*t<>5HGf-xlD*xNzD!ZMmvD@oMD7T4I zzyY>C|5pD_P$6|&frp3XST2!Pa*$h3lMdu{auZ4yUysL2$4kQ7r3!wn0a##(I3Uks zgvM%|pcN?(`00`KbGWCcnrUyZWF$v(vwT33VGc6%)S73XX{&9uAHKCxQop zr-L#v*dJshasbIZ{bXZfj;1ZGl{A^Dq=67krIf>&0|qfIt<%Q5MqrDGqh0j+J2eiC zX#%EFK&Vc`n~bUnB~}(#q6a$iEY$P=~C%}v;Gza0oUY0b* zl?H<-WCTfI1wz9H189_*tS6bL2zd(+#K_YWig_u9#TY&iI~ikQCNt^6;`e9j@N^xn zqgtj;AXnBAg{vZ$);XdZzE6=5JjT*!Tdyz+J9+Y-kP67ZO9T;l^za^LW_G3GG5|RU zlzPEV9z8F#fgM^J1CS9_8Xd+ME~0|54=pvWM{A8+(Ury!`9>U~yn3=`i8sU#UGUI7P9 zk(3WtVF5=4q?`hU6xI7FD*+0r8a_zXXeL$hq0r2nM2R6KV1thft8C6tl->yHqR#?K z2%|j6NMjR42~Eu??5NuOAUdB?YP3}9vj28aB?sgXpNUt&!)$zddYXdd&*4LS`X!K- zfFFQmQSD{8q@((RufQ1P0*3!@D8H$iP)}&?*WYKj-*}&If8j}$s^BO%*9+?n>wQ-X zTMb)%_cO{5y)!;$TzRwZCH5u#`^@|L8N=U=ilU)tFZx=g8&K-lTPE zJbJIrCtt}9a4Tg)!YacmliZ>Ac)Y%q3|AHR=_Wf7$08P3RU{A3=q3%;dNErKsWY2)9 zJ$eq_P|sGe%|WINh>Z}A(AEa#l%3jByA;(7f(G`gw^DG!yic3r9e3$mKk5vJy8iks3|J2ZD*-u~qO?^Z9_P@BO73g+Gk%TyahNhaX;A zmkBx+%yooa(Ye1mQoVDj?tn$D*NIL`y#WidJI{{3)@jse%pOJ*nbf>D=l=L5e_E#s z2C>Ct%i_&*Cx%+=I2bgjZT{u#!u^X}27p#n(#SLH6KDLd|4N*&Eh^_|N3{+$o z29{-NG66ClP?WC@_shnS(lbgKMfr4O;5^a16!BsFO&GS%~EB{k_sv^vs_U5g1g z6c?=;kVu>K0PY*uIQIDr(}?K#J44cyl`~wbN4j zGML8)RGNt5U^6i>Np*9@)})z#(zDIYgUg5>AeGB%kPT7?fRWQ3 zrhw?2j~9!Cae?b5wLPl_pGV#0_fQw?Y1lL6_l`L24m%ijmA@gE74$AN{0 zh$R-+;)x+JxWt&(KE<3pT-O})Hb6#F*DZ^A7cH$b#Jo1Jxef>7F>hvy)gBJC$GqK; zkro67BE9XayaSzzSaYvbh(#5M4=q}~hP;?iLZedia!$rC>Tbx`ZK@%g%_$gy{)~u6 z#7U76r*K}67t?X*wfO}7%+MwZYhXcEp4o9$F3X}hTFvd(uwz>&Wq{qLnhuIf7~pmWw- z&7P|ZYV_JrARN^A-B_ou(}m8r=fIo;v_za8AXBJ0_y1zlRpm{DT6MhbbNqX*nm^Cl zy8snuasMV`a!YpgO_t4f_AD9oTeYgD`EzZid48LUb46C?uUf`1me%gMhGhk{%%A9M z%CAg18hYmD6&sxtK}Yo19A`e-qz~6`T7P{{&p_)FY)Q~x&Nsn z2JlO3UaHS4@`V30`TqQHek4DUmnAtY(fl}+CiC*i{E0j>na9IWF`Z{U3Tw=(uQ+95 zF>i2bog(JdEe&{L-ay4E(-5g|&v+X;-6+tQr85o&0(!kpWwQqP2?d^1V7+2Qv0w43 zf>RKuj4PJ)1nYgV{@8GAB*u-$CSsE@7R3axoQN@{1cr|d=PHhw`2XB7W3)S1ITv!U zHaC{Z?J{SLjfod`6#l{Z8KZug|4*+BaOC-wpF@Z&?)lzbJy(lXow{M++&q(%RdMaT z*KJqp2qT)i8}z;!AI`kkv%2l3xf|B_9Mm79@59&a82!qer)2d2r!CrqS3S7cN%)LG z8|J$C1lT4E(JK75bmc?nq4tm3S>!-&!C`UtI|kg_tvnV`^gZ-J`^nXxba8|I4_O|v zo>I#tJ-txh9Yzaz_p|ImxW9{CbY$7hP2O(M0?VZ)zB`p` zQmxp`wKOygtX6l|7o9&AT^X0;VqMPFg%ZXM@+3^U8YW|>#yVL90RMT@S9Ki zzjFyl>}D#lOT9C*C4i!zlt>f=q1M^Ikf?_mi|ITHCceMkwqBc zlIm^P>N8E@YoA1Rj}y|TvD@Wv3L#P_d5|swEf%+SY{N@imU)mY!+Ve_&Tm6z zzl~nya92`eKo98=tcmHj;d35xT#awK;I9%uF-oy;OA7+>W2>PFO~!nV2?pvo#$q;d zSrM7C4D#0nnY>^`*+$N2F*DW32YDqmHdA_S=7|!ic2dE?vhi!%-Encr@w*?Yz%OI`*xb`cpPsw-hl|@=);)RU&MUu;w~Vgr>iUAIZ`;o&28(@zPhY%$)541o zi{{UDv;PY;$vm_K4YA*nzGAfYe=B@%6N{3-KT`WVhJ9YTuXNv*4DleLc7Jebe?$`@MZr+)>$K+hP05xtDvU*PU2*a^2~5E~jY8 z3VCyrZ=LL6#nPst3t8DF|56unbbKBWuQZv=O2v2x8$(3x7|qN;hwgeze94QWP4E?oKneo z$8x+pkZM8Xb`=YonIuf0Zo``Z$9cdY@Dd;HC%SNJYqt}Y- zGV7#u2jH2@){#ryYE5pPZr?rKxSK{qbvKAsthbI>U$wGUvh-@8nq5QOW|eppE0O)C zdyBZ(kYW2-rk}-#6CB#Rm+iWyGHbYL23a8FMaf}3VkcGstB8Zro(kLM3F#)h+2@=vC8kaf- z50eE=rZf~EJ2O*?lXbhpuZG?ULCqN9?W!aqJAsgeTKv_GJ!@LKf_b;cX2-H{sIej2 zkZWM&?cu&~DpVg{9a`na?s;A}>dE(tXdy0&XuhoIM*YcNH(C*2CE`wdw;K;c*0}NN zHJ(-%GVkRq!(aeMB2~^kfsNAyAjh?B59}vXb zOs~R~^}lKu0+yd&f^vS<+T#aq8GbRYW92edAHS~U*n^#m5{k)UD}nM`!tH4DdX+`o3=*_*S2p-gbW z&c!*am6O9WbpgWtD|{8)<+I_lxhF#%Zx!2XN+un-2l~w9fVO2;S)QqXFRlnQFyIWKG zwM|^AC@Ts@Lrb_AE#xw-OVoWrpP}2kB)lxzlapFkJ64DKTd(DJs&@)I4LhwnZQtbg z3;PWZ+n)`4buzu6H|P^S!DsL#Vyc)e-Kr8=2b61@`de$Bu^^25h8EmHCbB(^)2VRI zuHsON%)y)TcnYahYoQvxLvUh|%tUy*L?%X$WKQ1?+wBf`B+2lWCu}HQbp7xGB&dX$c z$ief$e8`;7hcwnmB$L&cvsn!&GP_b^%SJ*DbxS&ISFxHLpVtE~_~1>XQ{**xkhuScbs!d*wUTCp_+0$cZ_=)evlm^4COa!fi-I!-${Qt_nTm~%YKG@&fw z@#aJMR0O2*lPHU`&oVE7RBdH?pY$K6Vx=@gkVw1~ADuZgkz6ZTVS_Xl)sx;%Kcz2(M14U;T=@C|PhvXtg+>z7 zsf80-T0{K(VUg?xs56l3h`(P&8XGH#fhLkmTM*y@7+|+afZYUr0aS1yAz8>G!RbSm zg0+$uiL1{-;uKCxCQG47VJSp2=0Xg1gThKYfzX+?5R(kBTMCV2hdbNI-C;ML=OX;? zfB!Xl0bg)pXvpNZ)Pfc$jv@;Y0Ii5avF1Mn=@p@1i@OGCB8$pewv~`X@`5&u8xrxo!4Fp>E5TjZTXv6k_dl zV-L?w-O#`WgJzx0RyuZUoxvVqfwUoW4+ThWV1jpC9UNpdwSDZzGA zO2zzoCEl-mLdhs^)m(Wav5x369U@_Bq4UjT5~VfS|Xn0t@$PSb>8!u}BcA@fAwN&Eu-1^)}j z`-)TU55zOrE@ze+*BJNu_KM?y(*fQf;-8jJA`x~UkR74jux?*(I32cZ z_j#9I`n?~1){!D#tZU1sWQReYCfMT@%6cm7_ZoCeg1BLHNEx;(xM;{H*H;uNXj0HQ zphiL6P$gQK@=+89sntnW)!o!-LXUO|F%^}gJ*?zVly-hY0w>V5AskX)3y4--={=E1 z`u(Y7O~Jvvilt(SYPPD@rrsOkzcJE}D%{1qH6jY4Arui)>r+=KM^f*H-j9A7`ZTH` z4Gx*|wB0XVzMMamifwB0I2=A#KuB?_uqT`d7s3O!hiwnr9}X+jq2^$7qz^5_z5Eiz zqF{HVH`*J!ogWv*4POi09=$y_p1M!Cn=}qRD;y0SjXt0HW$2gDH$!hmPo#WE#=-00 zY|0QHQAXvlysbm%F!ak-@T=`BV!PG*gxl@A9lHa!hi(s#r);~Fx7l`uS*>yiUng8= z;FL-Qywgxfg?Yw{1)ISuhylM>M6rYy=~X(f-skXoeN*Mzo>W95Kq5ON$sP)d3SOb) zgR!VN7K;K+gd!P*(yUM@?H0Sk5>$oEDpe>D3});OGoXT4IN-3`$VbL1cn{CwkC2GG z_@gI%SZ^RD0qO8Zl1i@^1fNe75ko35NMv8_ zDSYtoG`cJnAa;{Qa;5tn_<#dH=Xllej)QgF6-?Wwu^s2oOdKL>Pj4XJw zq>)tV^G3ta0IBh@WoDt5Dy^0#z zoRyU|Vtv#;@u=iyDp8EPWR;Lb3L6w8BdcXJU|x6w#YZ1kFb(ijtPk zEyVFSz~TUy5D_gN&-)F>ex9>OtZn%4Vy{_o;stZ0fcm@o%Lq6)MteZoIhR&1r+Da(B-G(?uX(9s3 zV5TeWW(#tKlxqJ_#Vb5hr2gRAa{Alx+SeB~&uda$RTCRG|uI8<@g))t(PSMOI{ZgxpG2x0s~`BU;E{0BZx7A9I$3}4G`=Wb(n zaSySNDfmS^ZdI5g+IExI+-bLI5a+TY&~@iV(%_R#$e3Z-xa`=Sh$Rl@&)NI8yf7#79qftyj?pW0+Td^<0 zkN0(iFbb-Q0*E4BDEUo60)!6iau_KkGy`3qBxC$fN@zZ^-b+>p zNQP3J&sQHiFUCPQhSJ63)%b=2CAh63BkCKOM!m#H`mb=jRFBu!V_(c`kI>b?+X9h@ z*dF#qI+03UZ!n7j=IrAn)J)J|%@E5X9+bj*IhN#Dp7Pb>dSnRtKmp)!aYAGeDA-AH z8lav`9F9G7?u)nzWsLy}qCsZD%-BrHP+6%fp!0&w#ztwtv8AboUTSMl`YXHsJI{RM^5k@tfatBqB{+=GY~3OO{1k!C=rz zSIagYnC~X;dE$9Nh?^w8uZ8|0wXVf$nYEs^-mCCc%vGMNyo$8H=y$p1-XGxY0pw!@y~01mOiLyujw1=|F{2*3>qk!@4oxvp$*EAvXdA1)jvh%fibDH%Z;21c1{AB}_wf8;9*gN_)gsku)wj8a>kp*)>GbJ112|0d zKLeJL8Vu{MHnC5-dmGxOCtc>-;SU-ugeKMNL(MaA!d3i^wV`nwW zv3F*6tkgD3m*#=uK#9x{HB#a7Dzj5{;ta<*MI;nf#6%S5;1K0QBCeMur~<(i)lnkB z4a6221>sO4U?o&rFv&LB@}Fyv%15F$Ss-s9ACOn=9p)Du<4f;3`RTvh&d zixKiQ(PV_nshfSR;$q)oQRY;b`anYk{C(a~B%p}kcHXP#6xAV*VhVRjCKb@F!$Iex zQ>j&IwV#r$4ozaL$0K+@eid_=ekx#eIDJb9xJiS#Y`a2DjenMuNd5c-)9CN)rMG>_a{h_?$j#-;M(9 z@&KeOUz8dM%w{(NZTcd*xxXd1-_+GRns7HS#_dDJ_%%I+wd~!qf7nl{^2PCmLwAhh zd)pgbI5d0zcz@F}hQFwp2?34H2hpnsscXSsuSNaa%AZuC{>>UW=BuPiQ4gl52W!ZC ztRm?T=yxxgT42A1g#S|@JyrhG5sIy4&jDpBVCRtu=u>SvhpKrJ4j(6p}3xv>AFd5BMLh&^koArVyh$5AwB;xhy3EQ;o zw2ie9`Bd!AkyL6e%*$chA?>E7ejAo-{kCD-h;71l02=a|n3rE#hhtuOBv6CdFeF~C zLO7_^RJ*DCG(mn|ZbF0mHF#JvqM6Vf(45xDG>5F`1=Ckz7m974BbpK(#YC1-@Oxow zPz}U<$&p($S1hKSI-lJcHDH76&d=Icw|HoDJS*M5sPat*M)iPG4g*ff;wGsml4CE~g-otpiGtn0N2)Cm6wI24k(67kvt zNx%yrpc3REXc}O_N=l=mff2F6PY`6*P{BNY`aWn_NOP90AfIX^S0L{PU_?A;_;Fmn zEs~RmLOPvs#lYO_LbT=GFK)>!Xpdg|*@u}-T(miZt1_HLAF*T`qnF8;+4lmeZFA9$ z?m%>|eQm@hrWfp(dpu+lq>b$8&E9Be?vGdXTlB=*{g1h&>@#4gL{NdLtLl{4JZh^n zs_IEXKI|gjwwWAAWMd}Eye5(UoQPP{8e+}v70=ndA{&hxIi1{DQzL4-!=4K1nug?j zgvLxE8Z(73SSWyuiZkgM8Xk3lAqrRH;z9m>#eXQZnR$cRq1@FuPMU|) z3N{)un#7pbaa)~*N?7GGVpK3zI46DXfPpDYc zhazL54kS_RC(iP5KPFD*iep*kA8sWkbmgZ7D*A$0&m?$>d`n|H_bm;p69^=t+Cog{ zd95Op3v0reP@ZoTaas$9tg=bO4eHc602Hr&Y)000L5r}Vtfh&5Wm#LIjnqU+)_UI8 zWwMIFR9WDlCKQ96;YIuU_FO!A`^ck9o1%@jLeHG&XpWdHLcnVe;ha);&B{#+mR~Fl zX3{~nF!uTl8?OH9Ycu!nwCIy_?_ZMjhCfH+qrX zh|1+kG@)!66Q;l0%p*5?3`DzMGGVE`zkQ;e?Qh5J%NHz!hg4FS_{wVX5p54vgroYX^Zr5LD+RLz)n{H%o;MpsgEBH-%_Fm>5{UZ#E zaL#bE@;Z&ydNapqk!Fit>(i#Stab{IJdL(shjZ{xRGHI|B&xrKwllM5DvmVrX9`rF zXXRHNtn%8g4e|0Ok-PGuSY7hLsMw(M;cO}0cWp6YiP_cMlHE6I4c9acl&+cIA2$XK z#M)T~*l;B~iOk5u?x=Yk6jo4g8WP-qbTrXXnWwX4B!oqjf$NY!eqyscP1jsVMlz6K z3WU_Ikbx%>mLanGFu9tit2EG#=ZIP+ImrC#X@VuW2DO?lFp%H;0qcVB5X_G%V<T z@#)VUS{}%oY-zl~jSk@m}Z#iyx=IA5uD2D#aV=SYf0T13HZB?Ip)B z8aBVq${eD*V1wN%xeGorDpkkQoPz$GgpZmZ(HyN_S)a!#u!ZnB8vW3;Zwjr+Ed3 zdF@vjR!M9qIoME3o0Q$mB4wX%6|+itDKp0GHtlxYYx<$`hpH*X5#^-n7tCLolbSOs zv*HAg5r2YbMoCJZ-2^MH21c&l}%b)S{Bo-v!p6*!}qP%s(AKE*o}eg=(eO)nmb!DlsSzI?8|$4NrC=A} zE(xKDR|9HDoXr@(ck=E2Rtqi-5s*W^Fc}>yP!~c=3kf{w7(6UTm|;eT=(mt`8Fq{= zY4arRDp1f!$$}PkV!<4Wk_Bgy5c~0vt5R}R&Q(jQN=a2IDQQX4DGL_CQE-Tcf>xv- zp5Y6Zfr&3$Uik>!R$U1*5?@ltAFlk0*jsqhrd?}qP5Laq`u2k#{^P0pUYgy7ACU=; zjZG_WVdnjM+qR9@n|J>i<2OIV{40;P4hCDKn?XXc%n)3o~TA06x+z^zz*vD z!#IGM1#^~u{Gsg5|6DD5l*q(Bkf%4w?m%%yQTyGYB*kz^`VDQ8er@6cjH8odg)Uab z^+p|u)ix55pfgfoLvfW(PJn0^5G^Fv0t0`T+9v@l&feh#=#6DK&J zcCuX%1$`9h={1P_IFBbL4?<6hSQWj~nCB{nC&PH7@=G#0S`X#7sE<;oOD1X#5$Xk{ zKFZq9$}HF`-fOux%yzP!n#GP=*;_TT`#79V?(|Q{C;0t}{mKV~2Mm)*r632%xW0aU zoN+63hrNos>hNJNKgB8}U%^*Bh_GjB@2}u!8KeET<4wBO<7QB#LKXjiRC$ z5Cj%5N)k1i=##t`jph;)G#Vu#?-3J~9e$sxp5-w5-uwRb`{&JWReiduy1Kf$j?d>) zpU|O@I+SOK)i;^X69yA(=eT(;eir0T283Z-k=)oqR|H&G*Ir9 zY}H1y9tzK!Cz!`b_qiHTIdo8_bKO#lcllFSpsW)x25SY~2#PJ@laYLFs?N z6oVj{S%=dp2%_Nc$Db>r8SY_rn-ohwlRMZP#KC^%6U8Kxnf|PaH9amb*-CLzj~5Uh zH`%8g6m=rx(m6^l5uqlcYrMIYN;PRVy!iEdk(;FrFE(f!;2-9E!iO7_x#@15g~L~f z(BLYp%GXeBJw3zj8Tha3B17jDuDQljH5~sgir>z+P96B@s(fnM2cO`V-)c^Vvf6mu z?9P3cyY7qoZof(sk8_!D*&J+SVgtV=b72WkzDEE*l+k`5C6Gi^EU^-q!7O4{Gh5~R z?XvA7xkp?Zr!( ze&$6b>vU1-)I}#u7sb?E5mD4p@>EA-b(B2S?F`Rt9n|S2Od`s1r@O+0KXke^pHHjX z8EK$7UF;xFeNY=Z0V7n!(8)07c7%Jr_@HWf+~H47u3{E0ogqtx%5Tnp=o^diYHeYA zyiV?6mu!^F00A#m)}G%xHRP~oRszONZHQ@>0mjWyj5~^U0>&Ls%uI6_Zw%uwlE$SO z9J+{Yw=SpH_9vW!snINhX2>gMShcVjBHv^*E|(W3_JKp}t&E4$^fThY@cWNa4b#cz z22_o!?Bp}86nlmx%f{3c-idT*mK7eyvq-s9aW6BIaY4C_ip*$w0}E<5YA}X*WIrsA zjD%Zo8{Url@JY-=zpg%ndbw${Nk1KECH%E4u|+@%Pus$d@Ki=K@CD<#mz1o(a7yzG zeE$so=24V`kzJat&e4$`qoFd*>90=l_537$t(l8Q?DikxT$an1~c)LQ7kR#zwoy~Eu;?y zwU9n2Y9YZ`l|)fc40%CmtdWJBzzB5P!cGLh>9&PHjk%H7!&FtuOKUo+u|~?_u3TSk zf9_O{%Y|gx>tuCjLsd{++$DPgt%JR9iUb&&DlvVj zOAdrFc0?>A_1= z7AC#Blq%OC!i6V;{-Q=dwNnO*4%Mo;r08#_c3O))p8W+rRn?MqTy^HP-+z#kM?)W< zP(3Z?2~66yc+D7PSv>VHr`T7w^pq@Lt_}s%M_4FIj^TL{i~wk+26e`(Y+f*v`*E{bYJUXJyck- zCPF^(Tt|)FWA{eIh%RiAtueRkk-ha|URQ6;yK6l4-U-5Zag=Vfd$eb~w?lYHxL^F9 z_W|Fo$R6~Buv`4T=lk9#e9r@UaaecQeZ+Ijd)#*-@}~P!-KXv^yyd$@9HEv(+Nx=o zu292Zi5iX_tA@#>8b+gPXtB^xQ9S-?b7Vd0#@$SpX1#o~W|L)GM64I8b=B^??`8f( z_-(KDcHI{DW)C~WI?m15-1eXi`Q#w7>MTKP|ApI>GSTai-5yU))Y)N*^m)B8Q2>Y@ zNx%tA5ZkO)BFXFZ=-vG|pjhYVu%wIWcIgi5eyP*wHi$mLQ;`%t+b0|q{!L(o4WehI zml%bWk*G@aibbUXsxe+!LxLlQ8YG?&8L=O~a9E1q-iX>7kc)(e&9>?=5$N$qX&`FO z(Urr+}KH!m>JBUXX2hAGo5fJ06s|QH^R*Asa%S6y;M@DVs#ng7^88 zC5|`WatZoKHBMLCqyED2lEP7EDrBi-?~W(rXs*CB#=3w>H0xo}v;@bT{|l?B%}SyG z>w{_oh^!AOdXiT3hX_R!J#O~mjoxiu#_J?(e!`IPT(Lx8^-gvla$u?_-h2M+f~H+nalQ&F6ZBW`epvT+jWI09h9v~TdEpiRHPvk62~kJV*klhnMj5qE zq@|pFBaTs)zK7Vyp)CFFhO-8S@bwwP0auZuPgweA)Qz9U25bIGn>fTI4&mzKuQ7vj zllRN!Z`gfbW%P#Zlouv&2wFP;AK;foEZdu)OF_cnB!Pp++F+5wGZB$*x;t+2sstWc zKTLzB8coD53nlq9$JC7)MbZX%bI=-%yZMq?R=w7wa$MDo!%JH=Cn&F1Ww)O2m6A{9 zD<$8{M`uT`*&CcLvACS7mdoyBOF5&I_m)4J>MQ4R-dwn`v@YE&DPASqTskg2)7;{n z6>JI51{$qXn&+Jt?krs|E%$B=E)Q=^Z}Q%ie#pGT`%rL4_`cGe=_j0zd7tt>oj&S( z9%}IG^e5>r(xr0wiuj7uHru_nd+jI6wNq_40)%c*n=J0v_}u1Th>dznFnO(LJm7|} zYx4O}C}bj&OBRIy-C)`PkKTvb;y&lci3-Wl;$U8Iyg_ZrQgKtq$g;uxYhtf(Al*vT zP^pa&^6k$w4s=tCuti$U9ZT6>XJK4ro4GI!v9AY@OE=|OD)0g^4 zafhL}gN>-3`4F~fC`{G)W0$zACKM`dbpgBk+S|u(`USTCB;S^(ulZ(jL1S0nBP)hp z$L{-L;mk^ZJTB?;SL3ZqoB#9YAK|zx`(p!H{DX5sUNbYE~^=)^8f7r#-vQRvn5^4qlA1R$Bk zQbrp#82WKSF$z9yAmnp}BYc=)NKA>w$D2YvXE+)R`4Zu1x-6v=44ejVs3`PbS2>Ep z1FN72SY3uTV)9N(;m)47$L#kbEvWBONyF&wmp=#|H zCU|V2%wTGWo{Gg>As9pToz(pyNXL)-a-3PPqQh3jpy%q%j*z1lI&eQw1^SSAj+rrg+z&mf zG9M;We)pNvR@IWGx)EtpNixdb9<;Dc7zfK1Ef=*~ecWoVsGnFnV$rt3Q)Q8DEjFWQ z7wfAk#;lmL=ovCkMW8pOshm_9UUL*>U;_PaeN8sA(%s|h@vl#HW$y87*Se3yj-`I% z`;GtCG2WAuGO0v9o=*-<|ap5OR1Po(hAV(++q9eXGF zcIx98?^mLMlmOjI2uE~eHHb>#ZXdR^~r_;d*T4)ll!?a6b+Iv(RP&i^XsYVXeex}Z+JIgcuc=f?B z=~%=9#l?nFwDc*z%8jG$2NVsZbl4FIvw~&B1hWrtrr~Tz+>vl_+tMqZIt$ zB|W88IPQy94es&Wd@~w9ZLJ~&BjHeVC>IIJLs3``Axu$sl)jmYzjR}2axnd68(Kx8 zveH>(0VM||DamKXkNOjns|St)b!qnjb&3CW_}{nx=9P->rkbk*i|-wG>$IvC=BC2R z-Vjiib)g=1DS;*)SohdT(^#GE;oh0|PPD1?H@g(@ZU^3@WUT_{=5}$rjJr&GxPDH% z%Y}`umBxzN76g;NgY|JPlg)fRceVLl?xa~;L?BX_bvaoxW6~HVYVb`O+@fjIFq)i! zA7#cpW<1B-2|YN+=nzb{t*z9%G+Oh3YNJmjsmT!}hQDJWmDon<*z z&v0gJFu9E6DO`&NYjQ>dFU>Jya}F~)^KoW4G9iu`u9UGjvkP7;(_+LqqhjnbvPN&# z)#z$=u`WYKUjsxj<8itkR#nEPoLfHm-03M~1G;#U{=Ug%tYss@ZQIwb7CVY<)FUZ+3*Hq%!4 z<=h6Fk4y0^8h8Lt>6qw}^w?AQQ;aS3L@Os0;^%)EEt40KJ?i;|F?gG18`8s+{bCV2 z(Wh*b6>SRmTn<0v#k>cnNs~4X zsWGMx0Jfr}ThiOpPnezv^rd+jE_&0f1TiPmte2=rG$n(nQ6BP2{53YOSnBb~B?hgt zADa}TgpffCPd4uYa-3il4W+8-MP+Oan@PJ|UW1`%NsR|t{CaA_<_>&FTw=Tq*F{$+DIkk38!W9x%8QC=}apXl~RY$e*Sgev(yIU zneJIc5-D$?{mz;$n!8a2k^DiEIS}`oLw+1I`G^iN9^@iJ$5`I_Wh0K49k$@C`VtbG zN;fp5OB)(`U+KGcW<}WRv&;>)di!eg~GHYd!ZtDi{O9)NPuLGV@%gdyKgZLKk8|35Inwfm!Wi}(%=VQRWm15$PnWW2O%f*q zR^CqKZ|y{B+Co7K0T~K11gxZBW&a=}CVd7F`cKl0+1FbK)v1fCLQqVjfZf8ZtHhPa z$|F9yjy%I`w*&rKU3F2t>vyd$Ha4ny%c>~*ere*gnLk9n3;#r(3ulq{!r5nZQqd6B zQzFrRH>K|>VQkeI=YraAYBuqVC~B;NNAQYiyEh@mtTAsQU59I}HNLUd#o}UJhi9R8 zzHf2a8ey$&t!K5j$G4_zi*AeOK6IaWuXjiKI67JVJ|7iDA)PKOE!APl+hjJH516ZAI`I&_ zDBm_6eph#v2%&W8{;Fej8ydxCagNA}8w4^f1=4Ss$@H>IX5?*i%5b)|E2IC4_$fzudHCJeEm|Rx#-;I;Tl5s}sNHwf&`Cpb;e1LL92;vY z95IJIlBIBco>5=)%UHPG3ZH59Y`k9y zq`($!XHj%hAVR>DT}%vy1}MvTuG|&w4WA0LIjYFY5})*C zH9dQSYmMh+_e;6A+;8RHcfX%AnTd7ah)k>lM=~K_DjZ=5i4m13{TdGWlHsV!?T#R9 zM{W>u8<;XAa>Klskj$^f=}aKVyu_g@Etgjn-O&m{GD5Qe$_=Ay{l%Y z0?GInzv1ZR`K=cdwtjI3ksPCP^>oC#iX-+m7_lM6iknO3lysJCEa6H5PQs^5eQDfI zD@6FhV-<2~(s6kfvVywCgEX?@Upcn@Su| zsZa+D6Q)K&Ltx&51=ba0nDzIzZ+{3^etOf+DPiw~4TaA5q=nzcTYrgb@r7ljqdqC@ zc9h`cC04?f3ga{^Jlq160MZGII;eoE9M1B+j+u}CYb9{2tp-M> z)gd7*kmy#JMl($2zV>Yo72f#AO}i$CJrmb!7L-n0_?^P)Hw!;2;AQdAALAu2y}5tu zW26RWfjZ+gi;)xEtJoEHo4e0_%FQ9S;$~JsQ!=I|8}7hONW^_Gj#&x|07sz-|B1}F z134iE;r~=j7$zo>!5UF8Ff2NT{{h*@D^`=qtXOJt=8fj<<~}oL_PCBQF?_lx=|Cvs zGpCDuQc4V6w7*DOczLT$RnQ>2!o!)12IefW#b-E~AW zlnGRRu-UHNCvliwbCkkU$nWgvX1Gh={NN-A-RnjW^X6ZiL{f<|CuLgc8 z32uwk9tg5p2j1+xJ;C{Zj&aaXi2dMe6B!(X*Yti8gx0-e_RosoZGOby!oCWzvoGQk;3 zevqr^_Xf=lDQ-^$&Hm}w>i{oc2~Ed7n`ioEyn@!{xVv?E)s^JG%t7zb^5G;bw8$bM zaymy9j8VF!oWeOg>_>ZlR9N|&jnhBGm4$yhJ9|ZZNO%Rilx!<+Ej<4ph4-KT7Z3_K@+uvG+Hh1#E2sQvi^^(5$3qC;vV zR%W}{UY6@+x3f$ii`mT@em}-7OdG>69zpEK6$iurK3gTNsg}h#)r9__SR8tKX z4I8$?x*c|a1HyG2?l1fvM+!G+ar0*nK|LoHIvAGL^HwFMhpM_?A0nv?zarzXD(;!}~+@f{s^Dei4 zShZUL&qF+O(CIAEHfYCd_h@-VzLuLUT~ok-W+StWd4YL@d6)SsBQT!OG5jq+ zdy72E(+z}PTK*|%S8BhjfgE1i0CbZ|9UR#v;upj>M26VKNS`j+=c1j0k&37NZ1CLW zf%I9XhRu>@!;2F5>>5MU6tSNjE$0P84dv1Pg41≤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 KpQ4r$O?PQ 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

    1tta>8-wYx#@V%J`iN6$r$vC@$B0(psz-i; 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

  • xkaSNQ`IE9?K5u>VGV{68k_ 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

    YXN?Z* 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�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�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 Q&dveGprsXgB#QC>0Oj8kwg3PC diff --git a/files/bitcoin-paper/bitcoin_se.pdf b/files/bitcoin-paper/bitcoin_se.pdf deleted file mode 100644 index 31857be91be72707761744d975070e6edaeb2e9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177902 zcma&NQ>-XW)UG>idrjN6ZQHhO+qP}3Y1_7K+n#%Ue@@Q1*gHA+1BK0Usjp(PYIH=VSJt(mhqKGVMuMLJOnYiAQjI#Fu_ zXA@x)BRgXgUS23CXGaqQ8z}ee8tm~%;?8?sy?HaCW+g9D6i^+OW$;~Gm^XdzM<8B| zFWMg;sYrQh%?7JnJYW_biV~DaA0?aHlk48ypU0MCzxlOR=e1V7-=FJQKle{I-t8UV z@6*=LIJ=Qxw^uay&z|1zx6MsFzUi!cJHDU$w5rzowqdJ>)~Ie#bUwQu%(ypaJlD>Q zD)`nYx+1``r80|7oh_D7t#A5Gmi5i!wvAi1T~*4ohnq){@sdG^43J zRI!(7>pz2_Qd#Zmm!^}HSybRV-hiHyYZ0q7rv9x>*UyszR~u{M9l0hf#k4)BF8U2Ua5ayKaQDxEm|1I)1#q+_j|T{b{XS@Z+EWiI_r;j zX|PQMyjb8^T|D-I5UR5;&MEO-(70KDOc~Q>k6Si%F_y5CgtENP)K$Z;&)`LSB4BYy zj}J4t;jT>%L*XRo^Ap4(ZtQR1<;tnISr zc@STb)7U1b%G>*`ZcKE!#i^j5l6UI3UaW>i+CxO%T911Jcl^ViO`nq2A% zKOW|FU{EJzwU7-o;z~!XoPB`J%LJ3(*-km-vIE#0k(6H&lWlkuqNllvNqXXZx7bsI z(n%raY(%j>N<1Rfj^rM@f+&m(8()LQuO}!xsH!u0#+yi(D4^}1ix$MNnhSY=ZDiYDKQD40a9wZ2KcZs_p&IK^` zrMX;pWlaN|BAbcABa4FI0Ha)YxQ*nI;0?{Zg1Wsf8sRrq_8kB_HI6&siD@8DhKuh; zNFxRTWRTI|li1snmw{KC2FO&8wBKJV%?|1K#5iF?6RdZ(scRE5<^mB_V17RyFo7sK z0y#P=+{J1@PQNfkMPqlOHHDeBS8aK}|NG9Rawv0e?UUqBtgg1-B8e(%30}(`Phj`J z*pHZ7MaVC)It)u}Pz}8(*v6E=vcW+WVq;vaevHGwn>3#9J_xpk@Y-Ev5WFaQ2P#i> zNTmN2gMsHf7yINov2QdySk5X#hEN*K4}lE!o+n{II+vM~&(d23bSM%~S^K9{^!*-V z7|?2DqApP8!QMMm*BQ2|-s!-M_LYfD47)~yg>mnAG0D~`G3^q>YLaa>b#DfUpA+M` zhKP0AF|TBBV@#Jvj!PvCjGaZ;fTR!s$IdKr4JYbcmi^oLq?AX2R>>JnJ7y`g1y&jP}U z8uHa562D#o2?EH<)y&g9;JF+d+jR?yohtyCGo)mg0~e{sb6Ggy8H<8ed39{_*?&R6 znX6zh^{fx~`H5u@knN?Ps&iiAo1eA(ZclKNVXBo`2mcltDNBBA<1=FTdp%>!+#m#o zup@xDMNKR9$PdC_x%kF&bTe*bHrJiFs+<^?qgWRkmISw`k@(PqqCk_F3n4nRB63b+oYJC;?a&Z>dAnd6nK z+s47jo`;jIz*89rq=pXzWSEY`$Z;Ju#)m!;?`c7Iy;cf7K80>+4LD$J6b+`E*#d@a zKQAXpG++#54xZiySY7nnQPR^dJ@q*mX4bXmktnmY+9QeA6=VkFw0(ay7`bc*TMVt^ z4~$hAuhb-x?WLU<-W|$=6xZAo!VrP~yJw~Vbrlw^VK!&fHrBZQ^P5rA;$5?lV0<(E z2`3dH9gh^)v!I|2f-|XMnKB00eCJeIL0%7Y-vVR>f`O)fZwR8_-(h^;UDHaYSkpGA zI?fW3t@E9QMo#G*3(MeQ|Jqs$NEKH?zkz8mXX|JNR>NXZa5Fqv5||EFNSwQut+!$l zu#&&e>koBRE(1Tfs>%GnjrGyzFmUB~4UW)M%Xo?7(6(&ph7W_EbLEpCPXQZJ_px!G z)er=Z#znG~#%x&F@8OiRHMEM#f&)+7rsE>s>8tf6cR;oWz$y=6kt~|2U8WwdFPNX} zVf)W|cT`!JJ9{YZ>4^%p#K*w0&bm4>`FlHEluOP7PoyhPz?8Aem)_aS_Xs zEl)n+J1z%Zxi$HafP9tnjv%TO@@KC!ah=%9Gk|C!IpbH86iZhxmW{CP@3dq)=&m>x z(nk}LQSwSP@8(C2Wf3c%W*bje1K^o-JTerPL3@Zak4qqTQtv~Ls!(sBcN>2F0T*1J zR)|G-guoMZ2P)2YC_eYT`$Mn_%+}2Nd%0V_fGV_(4#^L zQsOqDQzTaqy)6}`+%`4p8uR=CmD)Kg#fHn)fJt&`jmR7K^a_ zBLOE!Jgg3RN13cI+>QTP$An3OG>{*dsC69(AzakIMoOgVB88^hqHfNl^| zI)9bG5_@g=3+X|aU?9B;G3nz0C8`)Ty5Lj%0|4*w&Sf^daO*u7r%qBKGZ_PWhT#fd zid3OO!-fto5! zOgXJta%ebPvj%bbB#%BCqr*qOlq$vpMIqBJT>Q#(yb@mR#LONY!;^_M|M;@W-UQL> zEh5swpf8^HVsY16&9ZqYqTqxc=Zan=#Jzbgnari=aDqTUAXx-?uP?h(ha^)E4Kiq6gQT+h-Tg)~tNH3Q!~?riC!*tobIDV) zll6soi3Es_pz%hpnR{Zx{j%aQ$ubo~Nd|@I;qnNd^i>9+aNCZ0G(xB@Fmdu3(r3ax zX||i)bk9o0`9O6|+w}AM1}(dO=H-(Ig&@;Wsb!t36XNtLy(NR=o5EFibb|ucr+#Vb zBalw#XJ8{g>NoAAi(Tqd);o&Tn#^Xzd{ek8wCKcO*?|m>ny|RAPN#S}&qzUpwLIuk z+$t)#X3t3!a@d;@klruPxekN0A0hv681!jzrkxnOQ4<%PWc12N37}Fei*ym#Xz;xhX-`|qgIQ}YgKk6m0#CwSfR{u5k&xoba{k#>l6?P zMfF_1IvEmq0qTIKz$(*j(~@9Dx@Gz9i9>D@=l1dpIKe=~R&0Z9Q<9@FT<$HSu<#U3 z)^v-+z;oGl{7p(uB>ipPg4c}j(kx_mHG^DywwT}Ga|cz21$81}a?Hn2qNUuDe&XmL^|Cv13Kw=FXi`IZN>pwoC;4z7twz_Bi*7-0rp6|pXQaXH5R)S5I;2Q*E^= zbc|=h=GaA81Hy-)dJ%n0xCG7E)>B4}P*Y3#{)ad;b9VyqjjR32uIEhXZ?w^i(a#~F z9yyysm6gk_s&+K)K2T{$Ef zOCvIz!m)-2jj)?JvY^OB7%j16%EJPWKn^(?5BXLFQgM(mX2@;ie5jHHi7iQtN@3iJ zH%+VKOu@65JzC8ZXFdw0^XU(>{5AY|Pr!3?N`S!lhN}cZo52E%T<1e^^(w-4irdE| z+c*?fK2eHk2e;my!_aBj(`KhG3z5I~6F@ZY%w7o;@~*Fcayn*-9)-UO`%7_SY~@D|El zlr0d-)NZ=J>kjn0O|xjm00dEQ`De#2>t)48N`0qOhu6h^*CARBWKc7k!vkiNwO=iL zKemk`S6+IshAN_2xn*FJs>Y=GS1d{v9 z5t)Z1(K(-B9XCb}4g0Oj#=04v%@ec-wadiwgsWY2V7>=XMST`YNlvoPNs;a%(^jwd z!mJ(6Pt*)D$F~s+2t-pYR3X(5SCbq`^4_W$W{Rg9<{$o)88O*HgZ2!6c zXOQK8LshK*7pQ7jM=FlEJ*H>%?^t6%<+2u3emuXL%rj7rM_B+5jQ67_tkFi_$3buJ zfe;cZ0R@p$*<^3-&u!s@pFoz>*3@y{@8i?1U)xuZpGunF z&+X!7D_MU{<9poSkHqud@8>i%tEtiF^=?cTo8ROXw^g%8%<1R#UNE2L zzx#)oo2-7TA1qxud52b0%=;|XYBsuqYQ-RhdroY?gJ18PczL`%Jl_^miq+H^QL69g z`V&J{ySge}yk$?7ia!v4Id#6PV*BEEYG=`Kt)44)0<=)yBRWIXQr@Spj&Enjmu}v) zHB34MD%8gE?p1vH3#efa>iUZgrE$@qgvV2VE@0C=(ThFa#0TvFJJuMHASP46ne}e! zn+tlHp8FMLbcaK&Bsvx_yuVZ$;v*77o)fr^;U|Rwd0SUf+Q1pFp&LVu1-W7;Z4IY( z%e+pL{UipvgU)-teYVKD*WP`ta)w4iy1eyE?(KjcBBM}@`G+3H4OuYJA5c>vPDBQt~qiB5Q&Dupus_wwW~!(Z-nVQhR>YJ(gdN1We)I=WR}^jTWwH zwy7Q?xYsu?+E~=(>5SFeD86-u3lRr4%!OkZH#q)?vQNpYS631I;arI-UC@krFI3-q zm|{0$d|0!B;XvcWf7!TI(k(~r+~M94;F00+BHRM0q7ySGo zpb&hiR0$HjP%(Ew(6pPBbA)gGD8eWJ7uga(p9qc4b$JHxJe_+-U||vzFO*%C(5=Ml zNF-M4gWp;PsbCf~*X(;P?Xu~=va$Dc*m@O{UM0Di^DsIt!q}MkAZWhp%P_2|RP9YK zqJ829+=X}wV3Dd`C!q|)qof|#u1<(_DfxxF!z9ARzSA7m5JBmXT?ME~$ju^S+;9E8PaBem zdX7|URh4O!gEdjy8cAij>!ej<(glv@|LD<6l7S8>Ap+JjpP-vUo? zvHnoYtqT|;>4Mpd`DCu%d$hW6OymaS+E*UZ}o2h%owRT-) z4Tp$$Eym+u_%VpRy_ga0Ho7j=1;Y4R+AuH<+#ctRW_wl?8N{B;nl@9gZFG|K(tgW4 zxC_pN#-5!LkWAr_jEdlPizXAtOSvDw0hx>kfNfaSKZgp(wB{3wdfj4f2jLt=M9U|3 zF8m2`?PG@+nm-_gyyaRchHUCjB5AKfIE_^hyFD<5-orvgu}BV#VlzpBg62+#J2StG zpSfHFQ8MgY5b|h~$WsUbemw8hi|Lw0jm)H|*b}nvj2(7r0AL|{+8Z0Wu^{%$bAxr^ z0M4E%eg$$%eII)HHWe7@=x5qKSl-BhOC_A}u(?B72$UUHZQ~epHOXzK3Usn0%aG|b zctN)mAUxI;|3t(TQJf=l;$SEJwbc%iuoIJ@2{DY+2AaIg z$I~GR^3-E~U0))g2OeC=XLpO-=|Fk$V@@X3@33v|Ljma~oj#~=G1HiG(%8UJ>{QOXXUHmo!lK^_Lp?i>Yb3` zMN&({#DPYwUK!-xA<3CC+W4`d7I-mhTLtSa1mjvupPI}5)XoWhaL!^Nje^$ND9b6q zG-HB#nZU5>5g4w&@tCsimuTD{*Xou>OSc9SN$FqmnB6JqQ(7F3S%>5zC@Ln_#5^q! zl4H~roFhQ>BLF{UeG^~W=MaCg89q;}jBYSkA<4-EcuzVsRU}SuJR#JqV!;OlWVL4qqn>SGvV%Dm9kIEk2i z4C}Pygh*ICw3VPeqhcm~T*`~d_S>eqOIr5c!9JVsQa6IaaBdt#Q$zzLd*F#x4PT>I zrMqo(ai2ZYQMxNUEgf&mMnZhmX1K1jKuf{Xmdk_v;!!zgKqI*UXiV_xap&f1#hL6! z*rc4M-!EFX4?M5xsN=p^xwXxz*Xo0^Flf#KalEj!y)S<74~}XBHLM;y;Cy=dg>AuT%${9ZFSCQG`E}yiMOc|`<0w!$>D6y| zD0paJ%8YOT`>l>(YXu~dr)|dEg(CMv0BH21tt=N;LWI2pwP@ZkV1e-)XTnthNMK}E zv}_X9w`D3JeQ2gQJm{d3}+5~VbIbN8sH(jOu=ZNSTxr91J87*b(oYY3RQRz zcZ-xRlwWy_BH6XpgLSQFA0@BKx>kn_RC+&!Nf@VdWw?D(2Gvd^D>#V(!nJNLS>cV=9dP#xBFBa zEV-CW$hA5M7~!@#iB^f(|0>W$d9QjQfJxon>=HJW{2}8*%FbDytXQ|F=%oT%~*vGJJ!< z5ngr}LuGvuDeRF}*!htb+{IQo*yY{H zO@>ga>p}=U^(9}Qb!o;i^q6BQN;{e!?2@9F?b}t4_sqH4%7}|?HQvonp^)7fxSLAW z&t@0Qe_vOLSwr#4>iZse>PI0GQWZ^^)3__Vy6<5KzX=J*pbvjo`B>x8FJlX%PEL1l zxZ_sNGf2+z+p|Cwj5VV|k8b4iD*6*m$+hUq^L=ws@Apm^=6ltT(C&BQ_tPl%?v~HI zC+{)wtrdmo`<1K+AEi+BCZ;C81*Sruy3J&%HN64rcuA7iqbDz}bt}d1J}uv;{rHA1 z!C6?3CdVWiE&JhJue>*9DRpCs`P>*~%kXYfHBr_BDji_t+i@5;3O@`<(46&gHSg}3 z`0GKX@>w?rhWehXA-4@wus@Zl&0?h8D2lvOLDpt~Y?f^U#JzXBb;u7Hedj}UkLtmL z&3Qb@@FRHN(3s(;SVwdpQbskHETV?RS^Y}UbTRX=sY-`%v3Y|eN$lQtQZloobpHUo zxxu&`6_uhYq{^TZO~JJY#uf4>JY=m5kHKiYY}X36o&od2Ln$gt5N}~Q<=U?(&3zJA zL>Vb#xWWiCDLv!1Ja#T}3_}z8L)XGK>T_q_J)%P`u(PN0`*EVnun6DJn^WoMB=TlFA+BZp%olYW z)>5C&vj-{oOZ^9}B`Td+P8j-Fr|P|jV{)^?7sF!=9AMYUbr1)3K+F@)^fr2fgWYOy znp^BjI2om*be41R8fERG=G&FlaKeOwY{Y5ODOR`{^xdj5TI}Yt@8=%}Yt7GVo6cP; zAxrOLcz2rNsDnJ@O5J45D>j>!q%bru1&)adoVTNQQ7(PNqpuxZEG2t4uWPNfNPVAr zeboYRL$5&^*3*^rv?jZHyQHG6hCV*ik)qX~`bXz5@R^TO51Vp>j0=mJmn*FrQKkM} ztZAEoUA~>Mbq3h1wgscTb`8@jqneH2xaQ0mT?>|pB+tjb^21^0jeefYQ(O9A>9CMu z1`O9BD%OVGpicB13rom}Ec&B;g)n;IJ`e!d@M-T#E~jF6>3~wCv}+%5E!U?A3It}3 zXgqEQ=Hl189te4S)w@hBPf5G@0jBQ3TPMrp@GxNTCBWV+3KxFM$tB3%O$ruwf!lr% zuOWv|krE_&;!2zMf6D};) zQhu3mkTCR21eRF5N2mZ?;v_94%cw)pQqk3mf#i)trZko^VJnI%Yt- zU@x=xDGFPeS5{P}z>fH6dP*ZtDHL&;0+5`2hGsITVmSAMnG(D}jj7uN#t2t)6c zAentP0*Q=ur8cQo{F}HxlH;emc=hfcGm$7pj%hCv@O%Cw%5(PbFW(h=t1$8%k)u8W z$URh!Gl7K9HAq8a3M=VPqf_8g2fGuAjSrugZ1PpY z7&8F&S6U=H@kQC1 zP^_aR{J$MPkGrhJ8;KU^DrQc=XFUlO=-?OUl ztq*AY&YnDB4y={nV=dT@2$Ph|mUe$vJ~#{^4g?SaljBlH5BZ%ydOT{4it3(MmRMVQ()wsW<9wij&(EJJ&>dv_`|<)T!Li(%9=b&{nL{G18A`J-6^^%U?!|`J%qFj;1o4PeLx`QO2}S2%W?>Uu)nF0@J9$ONP`DT z{yM)!{J%L9X|Sw-erX9*0l*@-9sIlD95W3tGgd{5lzUob&%YUr^r2*454XU~t%chE z3%|JM7T$!ZzV0s^%OSwTuD^B-Ux_IBNfl7pgk zXXVu~^Xj4#7D>aNb+SQ(18$bQpRz&3!AzNSr764;=W>F-e=nh zZ}-Y0ZEogaWXb)~P{eRi8X-Q|#-~CgUdS0Laf{;^i7DQ~c3=;o>FjgGbZgaT3F5j% zQ->|*@en?}`$TDF?;El;A`T>hnJeO;^Vbh3+#9Lp(8~PuO|y5wDiYnZ4p~58p%mG| z$9$5UZNCT0BcfBDlBbf6Tock5iT01nXE_B+NOf$I!&OMp+@lptnPB2m2az}EhcARj zg^ZG)7aH~eLEQ5ov;{(QTVg#W&Ho%G62(BKjV-d@62jcP4jasUAnXA-e!&gZPFKlR|WQcCWGsmV~{y>h0GxTk8d^9kbVdrvU^h zpgRUM?+?{HF+*_G+cSx>WF2l5I6Hwmplhi}d@v4p4Nx!xRnekhK~bJwP!tkSQIoRi z(%G;G8tYKEB>!7lQWI*mSifO;7)6rnB(%bjibSn>&|VXYnP8#?OQPP`w5%OyqGc1P zp=n7zZ@a82#KB5q(+oMxsRWoxeZQqD6tSYB1$(UC*|aQQ$nu|GmCmL)qViw(s;!h1 z?D2-O4NJ1s;ex7AKdZ79ET~rRzmg6A71#PNr{TYx@&C!uYF;9>rL+3y+5Rub?q80R zM4C;r#4wUvy9C@SdOLnJ#dt^!D}}O@jiUC3MGw$`D<<{Oh9cI)Lt_cpClXrfM{xg^ zJCWSzm&E$fBY>~dcwhKa2{(OmrDBW7_7QfzqyPS44Iofqs*agUOXFcs@(XZR4mSQl z`})iFcKeOJbhE92*ZGfc1D8tV{jWqVUSBqLei!iJEAZNTtYwwKm@zYKgx;H5k6wX_ zk;Pwv&H-~sj0$dTAU<1%aPi}PohV>Yj){zcGqc&(J_aCY;~Nf9`R6V^KKfdzTSx2} zw`Jt%8lPw35Y=jd-VqYa5Z{R2u*TuMPBE-Pc~r{IT`4M8SMM;<7M^GG3eiKEx(6`e zA6O1wD}kcT8KSslvGMFyBnrEezOUOegE1OjH1 z3EoU}FzYkiS!m$5&41TNlP)o)K>*nA!wiF-wpVl0HT(0U{wex4^iOxwwyo{)jvdP=400p`ieKvC%X<3!$FYr9OkGQr`WrzPzyl&SqfFR1BrJkKB*Af;Dc?hyZOtgu;xbfJzH+lOkgs}rCGJXT`8@xp#X5rAx-xOD+ z7}zxw1PVDSOKY5HQeRDMMb`JgBpk9jyq-LdT$G$9CC3;dnGmu9Bl<$~(piK@Af^Kk zv3=FVViMw1Ki$2J7e!Tqf%z|&ARIxnoss75dg$?5M7J^0k!mPmc&{#)ewMMZmo8g9 zuZ7~FYD3$g0$4@RLh*KG*+oRPv{YA%tSGqYMVC@5bq=*j^8VFv-lf83pKQ!&vS{ zN^Vjnco$~37RiT_wsiv;tqg%5OMDkf`jeNtW{UwH4cXMpkd!BNq7roP z_E)sOFVCFPPk^c6gAkKgn(Q2i)`${OL;kxPYT}ELx7|3Z zlp}#7=FO5Z{MPh3BEYAKW^H+VHcg;yWIccE_3q3o(SHA@?6 zn_(w(Zyres>M0ut;?JJ~G?`K8J)6epSgR%XW1keHeT!b=_ZQf)(+8O;9MmC+OW)cE z_L8UC(C9rvpI1SRnsPK7WNTaOm2Bc%e5%?<^r$KkW$@21+qnZQ6qvizAC`%-M9tJZ zCM(-cut=E&{l{Ga?3YfG{BPp%Pa#bqRuA4=VqLN&KP-7_#ZMxHwI4mKmhT_EbJ=*# z4Z?tvreETjG%^^C;`?qpic^Db1$yM_;ksgjsRW&_VN#1}1y@?+t11)P4-teVYo0Z* zeYAir1MT1)jrcMi8w{;ii9d}SmlNZHVj*rq8#?ApKxR`nxJsN3v{oNWR4nFD2u79i zYcl&&%q|Cm8kku?d_*RgJ$KgwVI%U~&i$K3j8zeie9+@8iICU=L;}fy_p~Bhq_0WX z+9a$XGOP%R4fDGW%+DHx{O(+#^Lgb9IA?6&ogYp-H9UN+sO#W?K zq`p_$h(B~Ky)83Q!q!6)4i2B205!7=3@_R4aUCfS=CD>QO6Y2hdsNS<$+S0*tHohc zo97^8^JOMQpvF?$v(a;Uu&6277_p^sR;XvP?@N`7zm{8lhfBNpFmB-1kDGC5nJ0;~ zES1H!OJ>jcU=`q6Yq>89kmH%O+d{T2=*6?wyEqSY9TzD6t&UqrVd3jk+jZzIaU_xo zxJ16>+KJ$-IG@-XdY#Fw)|oLdVq>w4tXA2c!l{84aLt2U1iS-tq2)sA9Jac?`(*;{ zecl!oHkO>`f70A-a6G}zCt+wYWq^H(L?&!rZ*2T>)2O)WG4;F#8lKAsI%z^i0NRoa zBWT3fG>}1zTETQ#*IjB}ii)DW+IL7l%L>HRqS2PdQ69?Xh>#S& zQItn_Ip`RuMqJCVYO`mdA4nS&F>*?qSpv~tys@+gy?w(jzHC*D;mB6Lwu;ayduV2Q z8h|0&iK?zAu?&(}vi(BZ?8b-bkAFf-O)lro;FQ_Q{!_bfmw}JFZR46o6wV#sE|>6Gh|Ubk)1S|OTdaW>^u(K5G67o>k1y`|c1MgT9k%g#+4%{cg6 z9_eHo(3Ra>!h@EDflskge^`LWs5)ogRA3T%R~`g{JKHT8@#s`C-OLQF05{c3y+!N2 z#plXlIyn|QlYgWt>_)x=o@<9TDKtz&`HJeia1$X=ve?$`n`c&3zgaw=3 z1l1tC=}TsER@k8Klcd{7CKZe&zB#ln-Z79Nc~F$HCYDcIqyDI=E#5)lD}+E+-C$r@ zwoBwT^rf?1ALTe$esV0G!i`Fkrm=5u<+W;2&3aV8e;EafEE54=WjnkEY=Cn#xW9yo zg6A+&OT&er%p*?u$MtgU4zNgiT4V_sd>G5DfOZ}Ge5Gqw0!~q0?M~)2POr{V@XzMD z?s1i4ujH7DQ{QJMo7JjCD75MxV(@lh}$j3ZUul=}TK)vwwg~L6= zAucsWBfxgCFg`{LI?6sj46tVucNB*jk!dN4`X*;5)amEhkWGMJCUt@CQ{mH zk**da7|s5Iq#u5iR@DhCW25&pcPqqARcmyRxqZ7BUv2g}%lhh}=6FgRT>1>&q-YTj zuQ_4pDZ+5kQFwMqhPA8e9@qpu9Gl4|WZ zanqYNs$Xl*YY(%)KjXT3y%#t0>xB+{u3&OrKmXCBYn;38830J8jIBZFCpnfOvnO3-O8|p|RbvCYft~P}m)&*)(bMs;oU_ zS@bst%{@o%g_0rbSXs0~O~FM)El*g<#YF%-Zb0>~REyM0^Ysc#RY|TqUr}OnM)y_j zE7Gmtf^h5BFqe;wssq#HkTR5VnR@xCyYCFAc4;*DnJy6X^xwoTRiA@6XeyZlnov&< z>)(|V#L4eWi<`1ejN0li?oN^8xouPwz4(yGEXZvt96?9P=y4N0E>BwzO;8W9A9mJ1 zt8|8hO`bk&I|QP_+9cKAQ|=6OJ_*J-tJw3KIt?nTk^dzBsP{_eiVW9FS9vUghmhQ# zm_Scp$0aw1tbMgEc||CkNm;lgRnJNMTAf1IW(CL|x3L)L>5^M1?um+%Udcnkof7bi z4W#&^@%TMh(=^(L=h6)blGG@#iJ&;-UIhEKFum{U{)-seo=8&Pt$a^rbv zU+Wq1zc`}oQL4UvAES%AzK_8mU-xbyslO+`etC#rk5PNS*%B>)ib}Wp@~_}Jf&B`( zQALTvM+#8%jd=T0a1*bKk&bVWX`-J(^gq%MAAb7@=waCQY>E;%vhpOx-E}K%7UQbe zsNd?5!jv|R2~GRqR;>6WD5NEFP zu_rDFFis*`@|6X|>4`tW^IqmE9u z(4#CMo@yIt7~uJq5`)kRWHawbZ{~# zVO3*rKgee>kcOH6SQ_(VqNiz=_LIxpY%OqRd+1fZ{VBI>V5jpi2|Drkna#nUM6}f2 z3&o~~q9q&}HV7|LptMe6f){zWD6gcyUJ?lE{B#j%{iEl(?lQ}J$*&K0Q0^!{!`<{K zC#1rLymxAY*)*nzndq*yrT1jNkp;@$FN|#h+BbhCDQUw*H^@GafrDaFB;fry^cp&YgI>4w{Dk23|XwebH@BQl3LLa#!RWj0uLR zqKWoKkYu1tfh-T_@q-WzHH#N1cDE(8@xV~a1)r18KIl?}$MTV^5JPVf>HdI}FSZ(I zZVGO)tHukKHxQK^Y5LcrejP{v=4d$Qewr=MT-bLrZFc}q^k|qQ8CaGZBrh@Ba|-j# z4NEhlda2L#Q4NU-8={RUTbupRYwQ>RwHD>su8oD1i`~7tl>Z#Ef;mR~J*Ra5#ay@) zzW|#|Ij*mK$pwCxXh>cc=F6O)h^1nw;9dE`Uin-CZ11&5GRNO>tJfVww8rmV{NHm9 z6Z4&DpJq7lH{*fAVX9b8_{@p|+ zt}mi4RjkQn*smg{Za<#!s#2U6P^rS3jKIYF*REtljym45S$w*LvGO?e-_j8I_)~tN zDtWS&pD|4cm!u$x5-x>uXN4M9AplAt#-b1}4;R@Mwzudhq9w5rpAK_W02R+G6*9NM zxYA$2DsHii`71y5*M4fAY()(oOA4Lk}$Vs>y<8xYa7;(DT>F-o9f`!1H|4QUe@Lnj%Ez#Waf_$@~0U+kil`gTQ=W1=A zQZs`QYgWx5ND6DgM8-2?sxl)Z=jN6I9*$V`wM|?**T&W?ZUi?(5JKx3 z+p>FF z<$2q`?AfS03T(ADUZ6@q*_?-P=@O%*28yPTvh(je2T&7dm>+bD*Y#no`8qW$i~#6M z_SYZ;)j`;-<4;~RF7ChABJ%g>T13gf*wWsK&r#W)nnaN!y-mc<*{`M}0Lm6UO8gLK=PLGZ8yVGQ7VRf>!3^I$* zKqHper|q{kR+{%RcOQTZ1eHM!er3P)xdtS3j_|VCnk}AmGP1aDpp`-%=0g)EYX-X7 zsP(EPWxSsAU1dJAE?hcQ#}ncWPcz#i^$=#89Ebw?kT*TW(#(lSG=O3Vt+vSFdbii* zYJ)nOlM9hMh_{WRJ3AXJt89|d{Ddzlgz5`0t2 zdqeC|iMI`AU$2uEeXAsZP%_{<>w@TmMloqz_;_h|&8ynviRJi(AguY+m8T z>b$Jh0ITx6?S>cm%i7@G1P0s9u7b^te@(X$5yC&^>M&JqXKQ^WMiEGc)j;@*OrY3|z74_I z5%{?gg9u$lpAo&mx|YkLpGnaBCKcXMKZsHypO%?>Nv7j0&?VM#N+^HuRrz1->dePk zE`cS4NTCNLp99p&$bBeA9$7?SRG2;Hv5<$i-p;=HJI}d1xIefE6BBpZni&(h@?aVC zxet!j?;^J#=D(`uq=3nN#ts-AZA++R`5Ou+*x8NREjWAu?hZH>#tJh>-&i~gj*Tnf zybsZEm#o=tZ{CW;I!DuKZ`OK`BU2js5>8YN(WJQ>_5KlH%0C-X?1ba zRqLe{mSjc)afPt0st_c$P>q>2P}}0`DiLFZBXHZcD7|E(I}q3plMl>kNbSJrVZw%} zr5UOnIf*Ixr~V9Ygj*53D-Fuf6TyMrqD~0oR;)CpKqEBg>((m)m z<{+$8Z-~Gqa|3d~89;?O*Ck_s zbU4IT5Uq~sT8Fbu0rN9*ZMtsFy7Wf0&oaG~CAnpp;z^n?s%5?%-KO*m|P7)EwvL2bUM^;dNP+TTL(XAnCSvA-mK9`QqBBCR$ zDyK$@Nsz{j9(h}T}U&Zg&exkAK_~Yp>ZAW(q@L>T)T#8ZG=6q;JHuOyh;GO z9b;#B`J#JDhsR`-g%Mcvc(p+oyv9aEA8dA1VkLUbc{Nli#4ckcc@(9|Odr^g(nxid zh{`6(jgL~`ndb+6QM}^BwPwwfOUm8ElFVgaaEU=9C-dr_jT_h+G~O*_k`an#buck; zmakKf#8&98HEI^fjaI(x%D;E9XU=&|N{aE+W%2#ikU}ZDrb|4zYiNY4m^Ox#KtP>6 z46|&)1?+0h#xe=TI{g+YWd7e)3tJ=TZ+6KgJEI18aqE^vA z8kIq&PUWPE#&5@4D{DLY)$>|2GI#~>D?@Fcb$uv%JNSfr*_WBpF(s+GXfLU%>A*W; ztkpwx2anRu%1q@Fr>NlxGP+2LSGd%-G;vP$uRiCEzvv`zlI?xm>L+pz~ojGNJ|~yh{S9+j4tgCWq9M!+B7cKyld(j3u=K% zwPWP3n*r6@a&(L3;DehY?nOSAI||coWNzc*kHish$C_wepq;JpnF6U6OJZqJMb>?b zLAcZu6g+mg^(fCMIg(gh>q=OQs{VP$OBH{c9+YQ>1Tw>3dLYNTVi|DCs8=#qvj?{lITleEll!Im-jwEx|dTEM4QA#>aXK{kj2< z6|E-bt>emP&4r~tylatgUpWK6E5VaT8kX_m-&0~@4m$*Oz_(v(p%4$Rf6W?yt}ETb z8aD9x62F>7d!?BZcE(Q&x2m;0UEu^Hvr)uefFee3wVS5UEuD252a26gJL$fhST;6s z$oEBZKbAPxoEJN~LjmcM9l4lr zBx5A!fOSM-QJ0HjnLG#ahcvwKU4TPLUQl$Rgk41y;C1GP(_HRThcfUf*HD$yfIh#q z<fv?62}S)rfNdh05wvw1FF<|Y#mDG-_md~K*zxo6ed6GACp*}Cy#AP)8Nz+Y&J=>rPe!N8e1FHTegcE)jQ`vxHtm# z=aVEsRqy}u%qn*GPqz5?M{jvaxo$$TwfirsmHIZ*nYgzAW2psv9YMK|iGue>RJFP9 zQ$`%{lY9eEy%IweyhE^-FoxuoM9bthMjTlv6(@Y4BRM^#R1;b3oD8gFBP@D!MJ_yV zaVzzjFL34xM$JogRtI|Ov#QudpF>xFZ}+cZiIbTWuqm40JkkZIoH%o@-ntU@HSZ=_ zSJ2znD?HVZC*bR%0@uOH&CIVeE1jk!X*A)gtn-}5bAmk&<~WZZFTrI1O{ox!o$rJ8 z_x1ifCSdt57JGt#@L0Rd;e|bLeaIKRp*#uXxzANJuO+)?t@=Lcdf6VkQA)BITN2MQ zX8YCENRbx{p*``6Sv>P=hqEYXIsTI9uJZ=b5-tnfKv z*VRgp8Jv@TOLpQcCCtwjvZ6GD`E*Kva@~_D+Kb7d9}eLD5Uc?GNIA!!Q2_C|_TR#a z%r?`J04%_W#Pn|D!^FgpbB zYfXm!k*uQ3rBk$d4v)Mp2WUet2LbczhG?Nc0SZ&e)qVdt7NI~{oNGyFN2|f8naW*U zDvNZRS)wv2buFk!9aH@c20Er}S50k)dB0x;QxHzsU_u#o6h3k$gXk<0ej#6tC0%p| zZK#*y{8R0z%OXLA<6`Mq9)C$?Hsn3|SVdJ@Ao!!Lx$ysW_q^S4OJtFeaO!~TckEGm~~)WA-ak;@ct&zkxfPZq5z~B zT!_?bFyoQ}{wo`NSb^3@~V>O%J=6u z&qZ~ABWcG$wlm}xpMHWi7hM6L(f_Q6Pbk7&BLj#>?pF|4Flm*^!o?Fi24WDrllheB zE+hn{tYY6e0Qw7^QS*Vbd!mr~Pl1D#JlU4;Q@U*|oRj2jy6T6XYhcyLM%;fn~z`ee0(a%OkiChzln z$gOvc(WJPPlu_@psY>Q{ZjIOO)%^M>X$rR3B$leBxzjC_jsfstI#qy5zx394Ebc z{e-AepCF@!eu7P)^Z8tV`6^y2{4DgO8B{VdulE>`C-zCS<`2vgcy2AIS(K`7^V&c4 z`Y`yE3wca$j+-^9^Ps0Ow!O^zO|@jblwcUDRMAfng}C@69?;6#h5W86Lim9w5W4G3 zEy6pN)QZM^P3qXA*CO^mC>@Ey;UkxL0St5J}WOgA1>&lgA^-w%9{3B1q$K!5&=>iie} zVP$0ce_Ad^mj8}_{^Rog-|){2?^NtRPxsqrBoFqv<2f!M3R1Zm{eG4k*7{IC``tQ& zDVn<8_ZKyvumY5bsH${mgLyu8GGzja9ucMJ>$5f8U(e6IspP-HM)Vd9|6JT}OMX8G zkAJ=|oIlR?a(8`sGAw4Df^u?qPR8`;{l0DKJbvT!e0?37e!6|1=v_Nk`zF`NuJnAr zFD3|zyNBiGoB|&INw@mM0w0++uHyX4Eub)^k&P#G`$Ez%4$oGk=^t)BX?up>s(d0& zFLevamlt%6a+AMbw2tlUXUV@?`VsPw`X%W^-bonDzqxe#4y28s;Q$8j&yVgnzL4AA zK8`NtjC^GV>Ae`0enHp_dL;by9oOuprdWWLqbOuX_urE)Zm@K#1ynVW%UFC);V-d} z1FRs({tl3ydgTJv#{kNE2r@wnN(U$KHFE@{aq!3Y$pC;Km}uYKA0+#aeMh(31kebZ z`hsgfD8>bv7dJHfOX7U;B8s3LyfISI-WyJ~?g5Lq7$0`>3&ONW$1!%z#iE z&TREmMEQa(Qx}W;0)essN(>2cnsMJBQHZnuCm-Ec3-0VRUQ>&DRj;~b0qv~|E`r?W37&1<$qkUr6 zzNxL#Bu)v_6O70y2mS&B1K7I>plEJvTBWSQOt(@%Qg<~8gEL~7Wbp!x7t&2HcGd7% z)bJQCHd}~2uM-J<3@)P6^_sIct3sQB^qY}ZZ(6xVV4>BAt)Rl@r(oSf^6BBBB?xsCG%tyB-0_zz5Wf*3(ZSXoE|MR}%RNhkk3osCspNZqEyLp<-gH{kx(f7K%WOW_7BOn|Wv8uG>V4 zO>>3QY>x?A(RZPsm}0lNR98V^bbAj>1{wg!m4ojoOHf*y zd{uQRMq}8Vv|@EwIEOY+o2#oiv1^@-uCku-D3|HiA7DWM+*%9KZ`8m{ATU-<Wa8L%g24q2tG5$TKkT)iU^MPH}tZsN~a@&7|_@djR;SeVx6K`Or z0s{+!`-cl|jjRRE<)tMRU&GL3wy@CTA)@s|cfnVQamG-r%mDj5X``fue=pr4s~Xk~ z`*>CmpPp+s+z{6)t)%C){(W-K&gv!&%29-z%RZ-5nW%-PMa_-M65qa|js0O$#VsBv zrTf?)kyxtZs$$6&U2nM{I7uqu4VqM!86N4#5J%I6Q5>XIxHe&=-oejMxmx8Bb&IxI zOv-CaVR*GfrjyQ)<321hC3z*wx;}zLo*Ue?6;yFHUJ;caS5~tvigUS10ZN;({78il zHs?|3gJikzFwL&to!O$2z*Z*=rharjyTq>8qm7l6u4u{5U3^cWyO5fUjS>4ZdrzHQ z&*q~@F<0ML;$tnu6Awc zc)+$p4KD{OKE`*z|MX6w%O>VAC_jP;L7q@$zVS6-zO} zrocw(7$pXvw8w6f-0hOTY2oE0+P=N%W@kzmf1lEL?&`=BH$HM8&1jS;H&_RYvvHn2 zKpH_Je4~fYrAOtj*~Y5#t*!ld45eJ~%r8W(+pr`Nk7RON19?M2Q!;kQdz35`7N7JZ zwHC264&SJF0f%o1js$e3LUY8(jHw1V`<)KYxbFPD;S4_{#Bo1W>3w1S3y;|A@5@ZX zj2S`O+UyfiylqDjl?qL7I}?ZGH4gbtFS@iy&fr7vwhVu4FCiibjpZ<)!NY*{Uz<%5a$z&Wz8@`l+Y12&= z>w?LS$|08IQxsJHM@4|im=2OjypCeLm?rT$Mnqw#ufCJ|FeXn(Pf1KKg7fk z9yX*p8b2=)R&uOAiJ@D!9pN8A+{#Zb&HwPPCMro#@v2K%dX|1NKvtY3QGZ||p+sH~ zn2WK)SH>87gj8fjG(5Saou%w1a1%Hmv(=Uy!qGGi6!=-*pyNshpsUZ@O(1062 zP96OygOney-seBC8V|;PYz#KH@W6WFabd;)AJLNI#7t_K2X*AB?btRo% zR&|;JT$)}Seso{c%oQ3~}?5@{s_8WUA zh2&w65tf%--ckbz-wLVHQwnrUB>D^Ic5au#Lj~5P4ZJU0@4yCUh73L&Dd4h--p*7! zducJQt;0y3&U=PWuA8~}4a8Z>iWk)v2aT1B&p-MhTk5X3sSL^h3TOKSW~$Y_9+J1w z>uqGCtD&XSM;#nyhy`(o@-B%X)p;|ZotrxzzbIpj@j@t5P^lnW#w*n;P1NPsKO2G1D zmQ2_b%a!RJ=U;|p14+4+CLVBJ^-v{I9i2iF$>7z{@$F&cG|_0)x$dXlJAh?_h>%2t z-DudR=*}5;8e{Zk-`B`69>ZqO(_Pb8AzYhKIiua^Jjx3k>rwZ(P$6?z6@N_HIE=d9f_URSMRiWn){mr9O*42XA4EL$lXIfi7PrJ`N6TTfS9FyQIYvdqHZ~Dwtn;t;L~;Wh| z1~!MpEA1#cI-o9VekTPEZ})=fc%daE@|>XzRZ}e!mo$C!|5%!9HL(V=q3TE@SPpc` zEt9fyVVlRL3!2InR5gv*9odNCu4K4PegG`rGzAzxXZ5?fYsS?=m?dZGj8%4lHMC1X z{QC-5^9Qm;?Zv>0SQJz?#m28U5$BW{Tx&D%VxiRya*)M0`a~#XQ!!bn;&I5dZp!;t z@tTTFfM?Y?mWXv5PV7w_nI@O#&0n_@lUM&!@;6}HWCu7X z4zeS~Cj5)L{KJqigR?vUloO`SAxoC$apTU097kGL>?pc0>jGhW{Q~OL=bk}q`TV$i z*6&J`oT2-lV{N>j8+H4O2WdXc^Vd2VGW5q?$@0+z=++ihz7IOYkqifw#wP>XmC26LC4gkDP(z+2mboeo&&}@A$dnrhCBwvHlp&QhDFiKb+a0lN6C1VW-K8EA$T$DP`r~ zg^Jpf0vC;+C^zxX3H{fi)VXow2n{vBH9J`>_+ktGnk(J4RH4`Caw*h3pQjolR@*bo zq=Z7p6l$BxRw)#y3Vn1w&lVh{KhKtkNYE#EucfvnyJebER<_vPt8NtBp=&boBWqG> zQ!k6OVL{eFO#*J@2o4Es|F3y>x2HNxU!H@aL%a$z^ zZ1o<-;#x@ANavU ztn^PoAVJ|g(DG{I*NCz-1vGYzC^5h-o+>?@vq0(cv}1-#aULC6j`>DQafhf!ZMdhG zXJDP6HGsl#c@6$l^TD{3D;$H*uK}}AqqBaB8G!Q)6(~=37XLMz8!nkbv z+&-HQ247v7TGH|z@@Eme2=0u8(P2s)RuA++i zb(O3OC*N95%-tgc?3It04LlZ5_XOhcK_LI$w+HC;($m)(FKN}&4%jpoVOBA@{=rP~ zSSlAT+U;B^7cRz{yd8O`#1N}dH#=NNo4m)qUzn6y?rLz`l#K2UGol+_q+~u~c9}dr z3qC%O!kl5ANoeW%;rn-F>VFOyREhfIg@zTtWhHo*YdJJbxhgYL-e%nC7991D<5I;; z+El?i_tc7=+^Ps|TsZTA?(s*!+I~R8{Vkf>SE&;kKKCEwO6!g$SnOA@KxTXL95(0- zZN%2g33Ncv`?r{Rz2!ZB>22*BLacovvhZpDE;8>N5W%U}-Px-Ym5*%)a zn8o+&&28JE@Itw)!=NM$4+G5Db2UzeeiyG0fGY)#$^|Ej&p)~5YzU+asfo&Fvjg!O z_il*q1;kZHJm&pggFoGyPUsH+3w`|Bf_|*9y3Q(kxjFjGFEe=Jgp%g@7(1R0llPsI&=Nfd$_eR#j3^4Cs4(hjn+B;^} zYVt0Ia>0q9I!PgLc}Oo}%jFuj2bPv@<3_&W#)t63Jpg!iW)g1YN8=Ra__qSs%@*z{ z?e51uugrIx+DB@N7{cy+7qU@`yO^gP?4wN4LKZct#c9wgFU>o=u*D2)^*)x^-aXo5 zTB)h~u_FS>$|@vcR&&g`Yxn;hrqF)7P`vPMg;{B)6pIjvnDo-hS1&nR93T!?oq6m4 za>S1xjs?RKc)Ij(NPoFTn0cRa2_7((V>&Cv1M^l?x!@Ux=wE#b5`WL8{sKZ$M#}$B zVE6x~acK>7C{olZDkM_T?&NkTIxw`YF0Nbk?s{Dn1XD>2;yIH#U zpaiW$kWpLz_rpH?h+>LMg%#eQjQ;!Ua!rv3(nsPFJeS3=KY71i@)v#iGlaFL_hbK_ zUWX3;JS*e=zOOC4TqUVWWn!zkX~OIMb$EYJ!C(BY>-+I+t@7x=+1V(U`cW9Y_2j&C za__p8wx{j_^qXH-G22JX?D^iBU$CwG5WVU^;ym{6OG}+0*SBso~0N)l}AnNJNnPW z6Y@ZlCt1%|6Wm1~3;iXNP+#eoINBQPqmqkE9v18!HmQp&~DC$-4Hp~B!`)(2Wd%;{h*c-+Gh-) z)G3^aIMTGyT{{~n$U|xM$!6AGdS-uqaPQCsS)KcrhKaFf@-mCFyB+Z(O-e)w?1g5H*+L z5%7NS_w0%sHm_F5^(-AH;I|Q!aUUjrwN=}?@AG?#mTVw~qAj~jtTEDBvuSNk8*MGM zj=RAmZw{r$!ufie zIRJ2?iNe+Uwv-T%VxtV8_OlmPtFKhjBybd@(dE~l9EBqSB3!!^8DJPfNHs3O1BRGG zuMR0d;pp_|)tG!wY^>7C{BBfwXLcJO3vtVc>GFfN4l06AuX#?%;SR~2>74o2LIt3vlfuOB~^*^MNtB}58Og{Np@~4PL?lAkYCU1=JHA1q(=qwsKvPF5zP zWnC6buEn6Ap`hP_DJrE?=X@_Fw1#(VQ((t0)qBgZ_f4GHn8NOk)MznJ?r~9m| zZ?z%_Kc=q)qLGxyli7jhZoZq!kJ5Pn7t<2FvPp!hShtGgc0HrP`lb!qI!qyBZS;D-NPX)+h5d0UqfdQdO-`?&fs=P$1n%$H*#0 z)=0R`uF#|fu_A|EB}@TILZ_0oy00r%?W~)@q0VO4#T`;5)$Va>X&0QBqJZ|>vo+Yn^v*!h7SO5vTy07=Uw9IOnF)b@;5 z-B%p4UOGNKIzsjQ`pMk(X}g`?%dF#I$*Y9y8xkHY9BBHApTdP}D|m11k)Y5#brim_ z877ITE#5&i3wjz29k4_c+m?)eB~aP*wdg4#GrTuX3MV?$y7i10&TCfJou+abq3+K) ziL&z)+okiJ{7Rv2WfR>h~j`Lv0^D6U=*BXE`>p zceRzickqN~KJ5)Su*(g=2ccR0O5oXd1`9q^Q78~$^4gQyzDga)*ysa15x*czBFJ^* zv>&I)g@`5`na?#83##=w`6kLwH~rHo7|fS~wl}4CAh9ja%Olt)?EQ%>Dw|1mQ*Cncu*+aJlmK7^?Wy09v!9g~eM32KDBcB(MV9O=3A@`bX zyBVIevt|`S_dUObFg&NFE{KQlBZ%sYU9K`M%PCR0y|lFqj|r1v3|^7^v}H{z-*Sfg zj=AiIR38$vuv>Q4$_ux15kQGmsaoufWYWRN)K{!-bfNY47MeG@Vbr!~=DK4TN+=Q~ z<8?BbLnd?rYogFgaejFrpzm(w7 z9AA!X%O-skt=}fySya6^x#Lb)X_B>`Xf$T?Na@%ny7FQKj3xfml=gCHaEnJQjjS|f zZoo|GQ(`u9=A!-b>(5k~=p8?!vQEZif16wj7p|VK)tyQGU98!%ne{PSzPg4} zxlu4XuqZSUEp!4E3$2#<lb_YE|Kt;yy(~6~Fww_i-E>cW$Y{Stp^hS=%3^u&b1{@nW`KJ%J zx@G7e#Z&IZ{r!2~f|nbg*ZT|9{gd(gmy`DWi@fHIG{Sf_Tdqe>FO8SFe|d7zw1A?+vfP6iu>aI!L*RAo6_0Y7X7XK5pf4&d zX3k|Yzu>;nn{#`OdKqIl2_7fFF;Hq?t~%UAc%&&_n}4%W#cup=xq@DaiKE1_bH^3S zNn9z87s^4zjLUEp%9EAxl)wHn=&PKjSYVhp2aj48a57TW?#D>?O{($bcFBwdFHlU# zB3E?kHrybrrs*y$#a*eSW6LrRSdgI2!9v?mS_H$uib&9?i8)H5q{jlo2oJNsuDF93 zL}By%ofDw8aKFD4hhL+MKpRkXA~Qb9A+E9;h=C<^9G8Lh{Gjz}mvm;fzvwZDJa7#EwdR!`@7zMF&FxQ>H|2HTIQN7g*Bhl=__)c@WoIlMsWTy4Y zb{-qcr)z$KOZs?<+~~O|M^izgo~`$+r@So(F$H!JhzS;|=77W`2hn8WWG_ix)2_J| zuF4~pRd#bNoyA-EoT&=?$-Y#$yV~J&ANjFg(SQuzPq-!X(j+ArkfYPH7aV5BNeZ&+ z6ZcGlom{@3l8Nsz7qWHYGV-b9WD1hYKI-$JBPocR?yP--Hz#|g*3!Roxie(dm=>A5 z_5OoEv|}4flFcC^m_GSnjrCy5#Wb*7osn&1t0gjqSXmrstn;U5`ta>8eP3uTBOQRH z=ykXQAQz0?KvkkX9S>E~yHG#WL78w+r67W_jigK&3uZF#Jg zIbxOX?zN&R(~RGlnk%+LfP97h^4wjeL$YNS@VzWSvmh2%%@wP4g(cPhuVvQV_NFy1 z^bT7SMOmH|Nx-Za&U9?G7&T%dO-Afp4~5fGTBmkkPsi{=i$MglvW>ehou8gA zT_HWOJhouD(!Ef~Ecw#7jZhBB12EBvVg7dIIB@^`)Yj$Oz;byFc>nI`&AmcwE<8b^ zA*$nk@m1J}CK4xj?w`>wr~49Rm%}U)dDp-LnC*Wdig3X6o6UtkR*liN z{%atMMZZZ;W{j3%UQU%Yv3?2zznllG#*d!p@P=APunVA9M^uNf7*`CDn1b}P9r&}m z0uK1I^JwZ8-h)}LXj6rmYCOKYj>9jsnM3OqaH)-y;8fk_Md*{1BL(*)_~g2N&-LDKThQcNB{|^|M)0yr2Gd6Xz6{WfQ zUb{CqlGFQh^BgAUqbTM5cypGgo6?bcQw6owk_)RbTV=;#b>3mIWIDrRrzg`*Vn!E3KVBvmtL#;k)Wzan$rp*a)mC*BSylcH&7AWf^(~*g@(pw7gNP@}z$T0R zU^CHv^m4K-No?w9W;YV5^(Z`Xmsl0x7 zy?ufj&FME(y41U1lK>yX=&)>+`7(Axw|MJnm&(g7y!q~&f25hRme~O7?`&vv;YJDI zc{;dg_J??(oL7=mVqzw)##rKQ>XhogE~Uj)&Hz!dolD-^hlgT%r1=n6sXYAURQt7B zt{@`|%2|CVG9SH-j4~NAq8{IzTbZ$1P3^3S%f=~vKTJ49i(5mC4qZ)*WS4{H({dRR zljt!^t(=qBF-^H&m8F$UK<@S-a-I{}6oNb7-rNfmk0+#i(peU*{?}?B(#Yrq%&&r z@K>Q5)O=Rrgh0)V2^KHovL?;QWi2c>)1Ycs85~OYFb^d)))|y5g7Z#YqO43(V#B@w zSQO1wB!mtoO%VeMa9D`FfHQBoP9xCq5L!$cZowF8zzVB5ysSIDES(ag-Ne*U7yo4-Ftl^#Wl@-^j6blnIL8Rl5XUIOt+f<&FnC<`+7GP$b zOC-e-zuQ+jI0f6|mQ;}P4C0T+)I3)y1~>>BTGh2qg1X6C7az|zVJ8%D+V1-~?=(;x zec1Ez$8Wavuy>Ur=9&1%Y&}9r6!0QIccT)8=%AEL z?T6}{OolhE1SkK}L(#BLio#GV3CYwF;810~wTmWd=AanX#YbxD+6yM#0ZG{L)J&w% z^%cz|)Qi6>OLs{PV8Xn7AdDy^_JS~m;K#n7EiLFgBT0St}!_b8R8B?)r%`puSp0r%d%riamUpk)Wg5o z?xp9%Qa*L%C+1&im~+g_HJxEqi;4?AJ31M(`mk`r)?t{UCn#Ro!0YJ{ZGFHMk;cX( zab_f81TBK4kiPMczv9WK=#-7_R375o-N>^1eeIPl&oU-F`7T<$Ad1y~fo1H7*jiL9<%;rzR z_cj`ctt+XL^X*-yZxvpzhO@~x;*7lU_Tk*`?D^AVqAo3JwTf&`-L`-D9m>f1UJ#1O zE5jv|N$M9BY<3Lx*O$#Pm=&R{5$I(}qGOEhTy9>&H3g}NmR+F5s)kb>)zG?y> z6q{}e*G${^uo_RTucJpkK)6?z; zzI`8c@x2>SA|}^q!U?n#VYos>tn9!j(c&{Mf-LJ%hXa`QC3p+s#|qh{LC#((FIB}- zO0_zq|12*zb9FP1Dp8|$iA5Y1GBaZ;^Jxw&q{cCULPo?)Ebr;5g;#l)t^3z2`p-5Z zx0^-@n0*_TP-<5kd9(22bnZqZ+XZ;cqrFc1?t%eR=E`8RfFD~r#NI6psSNGn2p=)X z#mZ40A0uM$Gk9(~fdGa8KnaZVG(MFL>J+9Tpl`!SyrOoL7RP>Kg1`c2$V4Z5m+ zr8-*JW0~&LK=405T5&zCEL|6#D|NKJ{A-rCz-Alg&(h*O7NoV^OyVog`!W3d%57m1 z_sMQcYOib}S-sUhBiMwv{lS}oL&T^zldgRo=1-qbvupgNZagaCv~G_7yb_#V^U))0 zAakl=cHue_mTr-NNagl4P;r2`9jT!;$PG2lhOf;!!*Vw5J`bP2$xA43C z;&?Rj@tphL%r`||&*~ZQi>OOz$0*aOc1rUDF00(5dBx`aAZY-zNiYeilZkB&PZf!G zfDf7So%>br4#AcuN`{wt1lY%Ngmk7tnO`jhq^2Q}$fQ6a{Po31%jw)ixA+s(-%f*+ zoGXJgvMGWwMHlkCpYY4j+$JQmW%p`sciB_8xqw2OYlW#FWUzUn3^KIIS1L(WDeJat z90!f7)4HNa#M+hDr7IaGPO(z3Y-BK2>hUth>X)c_PE!DkeTvB z&=vIzA97M)0NrvZnan{%>Rafx=jL;x*HYfmX`Jd-3%IQPepx7bPNxV|jtF+9Xhx{1J=*R~BG>#uDOnY+ zEd9upITY~#6(F>)LhHKrkW4RP9J!fm@iELf+-e~90Bi5uo3|&Jd(2djob3JIM?Riq zBxTC~h%DS{rwXHY${k~J0k&~xbAjD;kmkJ2;mu?%KD-BIOgW_sE`XxnO1hg*XWniB z6Q7>5)uzmqex^*XZHhgcT`;85qv*xWMy&zi*eulmS5!UGTc7WDl4Wm?9)u>wZ#Oc< zAw0QU%-Ytula*&c?wAqs=XWg;MnWi8q$QO088fF;FX~oNC8>-_ea22!jriq`kdgP6 zc<-YP20ho>i{M|aIwRK=mTUi-g%Io?U;eDSP?c<=q|!xeUtHkFlXm8nxO{%|ML=Po z-F?gePuD4@Wo18A^9Pg!%bk%q#b09qZHx z+?;3LX8mZ4#JU|fF>l{*y|Trz0yL9KhP=&&CkTQ15=XL;i6p-B}Yk64ai1P+HTpG=2(ywlnXUfRR;hPAM!ix7yp#G)3-m?fLEdoYpX?k7prW7fZ+8yxI`` z47~nTF_kqnP%6AF29a&$->-lA7HA9N(oU(D{DC3czlwqfO!FfiLFs1P=p-F+Kg>hu zjgA%U^4NMde6QDebK;(O61Mx& z576fBOk8A}%M_?__RFZbK()1y4y`dF(rHG9}qo3Qc=+0s?StIku2p z8>hF~uBZb;evdpfZz)EYHB5Z=w~vuK*pE}jL~IhVt9MICnRV4(n&4Aj5I?1lH{m;c zx4>ivXWgIg<>g2Wp@i*?QQ!gbpvRjVBx_ap{oabg;PtH?gLbo*8 z$x_s4zTbFY%wcnYr9S!Vbqg9igSkyF*T*+HBc&Fk>cq1y%Blm_&b z;J4b!IJ>(W4Wn!wj;%>3&qk8K{@{J%f#UsR+Tcep^bz>KGkzuC{63f>h`0v;4K8RG zZ!aJ)^uY;iI{^uK=EFvefjf|YY z5^D)sAMI_0igCCqqd$XFEaY4-T8lK&s%hhv6bWb!{Zh*D_j~tj@4@9)OD@jk?UZxA z!!N?dB`8LlIBRIm$4kl{Pobg`#^{d9#F~2mZL6my7rAF1qd?-_YQSaNs0{rx4}GoW z1MN{rpJD0ZNm{vVHc1U7{U>^Nn__h%nBu-8w<=rLx)7BIs8880*Ty9Wi$bHq?YE{?;+RPMWw0) zJgqNlvw_{XaZUmsK+uorOsfBvZCWF(t}JzmM%(M{@$QAl==+HzdvGb7o*$mk_uHP^ zzqZ{fo>_F1cIXEi@`kgl#=k_eCKt3EvxQ{x$z&)^%E!KjVvG|aX;vmmM`jS*qbC3T zcb?btXv=Pr5%orbiy#BHl6p@CS0y_6zbMOK`}3OGet2K;S*|WuV7X?H@&GAvR~9#tqY6B=)ops%gwAi>BI?Bc0&HXDlcc~>k%M+852fgIs?R_JqZ007{$6aGRuE=Ba-{v_sc3JJyKoqw!5EF zacpRffjp{Gtp?fO;Q5G2$7V*O0?ODpPAh{5jZRPcE_vKsoH3l}FK1;}eq(?rcxHLP zFM4EIo_8JGE>!{0>b5e=_kjDDW#~XLU}pJvW#C@vH^l|GWnvLzsiiF)vKGae(&l-I zmgR>avIOtk%ua)@H&gUt1lOzDvf?5ST5$YX$B?em3$+htT0veaY`C*r&?+e}xU)jQ zM5ZT=H*>4clE;r+)Qn|hTxzA)78h-=sF6F1O3!TUJ+3^k_CQwvYG%3ziDf(`Z!1*a;O zArhiMH&iQm_2s3;pKbq^5<<0rPZ&LBc&8pjd&@}lq?_ob??}bCZL*?Ut$_mUYtFsq zu@CvY*1UDHpFwwgo!7-66^h3U3s)s4)$#mMeeA>7H9HmeokcyCwVH*M%`~39d-gAj z(YVD;CdDMr8+70<5bC@ zCld2l|DzY#Zx0NCvCzkHH0;lQd(~q|8u7OxXEraSaZ4UC=9AAge(gl?{Jf3->E`;H+TWYJ z+WUU{J7)0n^y1KSvHSgY8vi**uuqPgefp5N>;L`tdQRa79KP=BYpgDsVU5*5*J)|R zfY7JCELvvm)i=o5Z%pR?1E1d6qxS>`-ZTECD!&%#Uz*R!BTH`^hWe% z;Nlkb0R)gHN|3lpMFdi#9nho6xNurYq(?5|xyzm{c*UY!pQSmIYsLGmJsd7%OHcCa zhZLsVroF$IYXS^!AWegz&}N!g9NrYq&*T%LgTSiFv!vd)hwkFe-L*tFv9Ph5!l8;a zXGhGgNP<)Xe=`N3iKHg211Dn2mbw;3F+)5w36x89(%C!r;g+FT9FsCMW6^l=+o z5UTf@l#>6mnVWoI@*yoLxDWKl9~c&NPCFTjO=~i`Kl+`-Ufsy1szWK}l&i zy(1SxjulKo)K~vc0Th*;mz+2nHDkhiXM_O*O<)bg_K!cC6ar~r0M9w=vLHa;aT)$} zIPhnh{$q_j?G;r(P+b5h7ID~ z>li64O@FEoXO=8Gn_mvKt?E|8&qT9xH|KDI(&9v4zstfk zl3fR;BXkIcEo#u1ia)I?YaJwNP#eIB8KAa9EN*~P?aE7b2JVJOrrFaErS6B9;;SI1 zX`8#$RtlT1||G`n@b^BP=H^meV>Ti{YT|JfvQ~Z*6_}+n`jw z4pwKW`*M9xFJ+a?vM;U`CmviG`>ycNMgb2TX#0u!pHVMi5u1}kh8T{e>vdf^wx69A zUz#|34|IL^L@ZpN2ceX6j>pU%MY<_GG@6gR`|-Lc>|w-n9XUb%B)17gPC4D(PbG8O z9!uwB*~}GTR-DYNDcfE6&92pTy)Gpwc32IduOqAl$@?f=sF_%E^{&jAPG#avr9G^v=C;Xvujd)t0k(qPDZ?i=m1-fqH770BNH}-S4kI_ZBw!q z*qEVO#*(I*LDd`tID*43xuytEg7^8WwT>*CRK~)M5ZH+k2XFVq>r0+< zwRx7WmZbfgl!gtawCOCnQz*p;`HmgyMHkJi3by$nDkxdevzIjPiO?(l6Od?^4e4(hAcnirO@{-j=rp`Jv} z@&_Iiz9!9Qo2evkRu}5xzY8g03v6IHVrZ*Gv&d&C_fSQI=Cqo%EUppTKG^xX3DGqZ zHx*v7wj_E}wuL{_smD#?gC?#JSrT2sBo|11@jJ|sgw=o@Oh^++Az4#q zKW!ulDT3k zt#h+=>s!oGs2d#%64^oxk2SXXIPPCxZHL)xLC2@4`n;}ooO!BramsgfJ(fLqZ(j!E z4QtuS^|4}->W;sZ*L_!7nin2%tpa`q0XK^O_pW4?1K{dX)!+fWthPY`&@-uLyFF8c zYHdL#@_)p%Mzw9!g|7CLT*KViYct+y-Pq7{rC^R)5!Be%x9wo~IXI?o@EOGw_w zrCfO$k;?YRnwau7JOg~`W;qqaV&h|FJ9S1(#QU}!VsY2!it^>f36^E|cJ6Iu?jfqp z(pEMW9iKn=j^=u%cwY?P4y8#y>KTk-!uEZmbgN?lqttgI!eyH#DzIWt z_SZW+bvqoaPKBT;er%NbMQXP~&m>h1@sHY)z<2%#3^t{Z=~@pvMCJM=X9fG}7=g3h zzJy!`j^9Vhj+^4%pctT~QMSed`rW@Iy=&mAm4f!dIxa?WP^4glr|wsR0Q24PaRX@} z&{jvom$uyN?{BvEOiGF^qk~{_rP5xNjyc#DtRpYC!Sr`YPqoWoT9HMTx<;TZqlfYy7G%W zgK5Q{76ezD>>#c_TU=!CuB$UBmGomQ;sa?WO?UL^&O7?)XE+qNGeUS-?OAo zmSy}nyF*6X)ksGrHN0SRQQRME`J>3VZOS_YrjUhzi;2>}b?tLngB*nLCu zAo<4KmpFSnoI#d8AXq0=XW3XyaUPT8kB9Y9rf%>T&4~`SB-AGJDJ8f~TkK%g;%UP~ z^%I~F4oc3zRt@Q@ENw#RB}OR#TV}jst>#vPTNS?2=(cR2Dr(~Id9ZNBb$jwj`@+_O zC^Wk9+vp-DeLG%E6T^GnZkBFa*}?nZXSP%yHRs5#)8}Wa7FxCo@RaSn+DiT#ZdDO# z>ZM2}TnGM+oXEG{QW7dsoID_F7^c z)u1rUmg1o>41#9s5oj|9VLK7AvLM$(F@HS5iGpGO2RE^e|J)pAaB zEMqk`n)p#F4k2DHj=hTcB%ZUlS|(fHN6G%gS3cW1_33t)R54H^uURNyaiKiL-bf6 z#l5HKI%a$mlCeY=rarf7oF4eud(Z$gtm(|Vg=W&MUA?@REGV%`*T;_)IRe-pO#R z`6yK`jkSP*M6`-s0p4Ni>F-?|q>~in#QQ-_7l(j{1;7WgvM}Z}F|qJlNMhz*I8>Tm z2#1U$;r{NBg_-aN^1M0GZmDY)^4>XAx{!af)6KYGFX1H%eNjToTj!^C;-Alfsze~T z*`zyQOHqyYhXFD*6G=HT8Kv;tJq2G#($?aYqCA{j;43}?Uc?*Q6FY<#*5G9Uh|0uD zm`k5rgHp{pR=pepRy=tF8N)$NvYCvmd>wCARU?askA#J0D>*s)bcTWQ39axapZ_cS zEBnm77fMSp-?bMoq(;cH88zR6pm{OM)p+wmkMa8q0QLm;1nUjk1H4?gUQ=vI@WI^a zDs!)~(6-QYM(+yD7jyH?Gm{tLZl7H7sdT$XAD%CaVu|66{LzE5=>ujr?2=K$&l-Cp z2s7`Iz%$i@t`+1TGFP}(k9<9X{{VD%*S}|Zr~iby`Rg=&|BG>ouutMO37b{ES2lZ| z3Dbx`3wWbWXs>!cxgEz26b1*39#N5`tvOXby_m$3L6L=H?*IXjK-u6El9NAN{uf2D zCC`PpUBlKXq$X5n_NEc5fe3@N*I4?+WL{bF@h>G>f8ZUEz0^BA(U3QIS7<&otSH`K z{871fs2Pdxz{3Un-l#vKSvGwD0fo3?r{-UF!v0S-%i}o1Wwo<$FKl+zAvM+NwU%1D zxSA&p*0vROC^j}#)zmbTQ_?cOVIF$CI=C{i&Tm*Xs+R28a6o(HtJSH{oU!JVf|cZx zr}j=E%U{DfTr~(2rWR}c$ItqxiW#l~X@6?W2IKfEGmci1h*P$|DwB+xOFVl>(Q(x( zs5!<&?1^0H&E}TQ_B%h?CP8Lf;(UIjTmK|BOB(U*}wofggKRsfm z*`C>ieJob0z%_;vs5u~V)hdHjLC|JhE_s?J_#EKOlw%R&wQH z*~^<~ILf*HxUfmLDgMKQXs#lr$;fewV_lxLAKA{9c66bGHdoFSW4Xe;IGn*Q`B(5r zWS^YGg~H`Ird2cLwEU|m$9z}h99vmOeW_R1*{pqCaxRv^J=qDKVtQo?K4`D?b+nNW zpp`g5=NFH83h_KW`J#^qsCB3fIM}=*PZx2V$z8ELA?c@CY-?|!ix`*F>OATHQT{>YLD;A78Dcz8ezc^ z#2?#G=?G=CLtrbvmb0)=`RXoZhS#t5xL-jsT^^!YusVY#sG^z5B_w_Jjo72xAOvv^ zUR=BlHdF7Or7P#xuos6!!@55{0|mjmQ0Z_B8yzbc`L}_~nmhY84EwJiqgZk5;!{{p z?L_^CT7VxvmX2Jp4R{K!dh{4&RXCn>K?0F7e|-%T?-sgnXRj{X09P)3|YtYYL|*=Dr`y0OJ>*86mQt% z@R!*%w%W9nOP(p?7*U7%6Hbq%@+>E}&7zsW$uKngu;S!(OAJ(0!l46*K{W%g)B5e2 zKoOuInGRXC%WB-*_3$)l5S#;Ai6upoKe#e`i+tQQ|!4j7JZS!n|WaDKNguk%(D`2%Y$mN9IP5p2b1*<%ajhPCBpIwvD;~LWAwIdMc!B*Tx`WPIYY(V# z9li8rN0jiSzXWhcYq1mJs!wRindLMA*i{JCde5|dX@E8HM>ARj_^hBKNBh}4uEL4u z1~v`tT_utn@OOB@3Fj0KbP|UZF0ORf(z`z~KT0cH(t)BDR8uEfFI*k8@5xmz8Guh% z`H(FuM|NZhQn&zq=0T6I_YLtIy2_o7ac=rVow!9stW8>an~Ce$og^6?m`xaP7)vo^ z`mzj#rjnTwJn19VIMFfuv78W=j~(Cn&{Mhi%*YAV1HEu%Cu=3f0ep*QGYBuzg3Upi zmX=PXi@5s^{~Hk$q;=)ReT8PS@pBY1m*S3;>cw zRh;HD)v$)9NMxbEi%m3xHW2^kj1 zTrh2!6GdB`KjDODm?kxaG`tZo%CvyR>5EHwJIi)8?p)MpJ5WU4zpL_g1O*dD=o0NT zfG1-O#A1AFsp;?UwWi$IT?*f}dcr-`t7b#avhz6ssWO4`+}AwO{=z4}$bugwWb;k2sD$fra$|SK>;l@H+|=CE;88J`dD#T4 z?3oTK6iKp*$SO9JHuD$rr0GAj8p4tc9${~wsy?M@GlM#OTXk~~IYy;G;_2pK*-`La z%8!gx^vtV<21d~AlLBlgH^%v4HhNxXVKYOgH?~$>Z-eXe8zD6Mle#T@^~RlSEY)sR zUK^^_6pQaT55qQzKkvtlW(tNYHV(!!R7$*P?`JbAw>LD@yRUy$5d0ik|Jc6xR0ez` zgT~#fDGn1DBS?}cEzd(}B8G9|gVaCkGhs5_!Au^pzQMj-IMh=-fT-{LqdN%k8j0!| zb1@r+2xSmLhvAv<)sED(W8@E)3mP0_UV;XLF-w_4kqw)who(qZB|~wB{vpg7)XsOP z#8Fgne}LA2?%@M_?=>z5ZfovYIg$6WlOXTTqD`?Qx zk~t6*pO3}+JvfYI$_c>pJ_XylQUbe0vt=LM!@FW8n){{ut12vf{QXGwF2X=b`Xw3v z?47OEi%$hQV)DB_SY_OMrf3n7F&j{(PnL?KR8zu>KamEL`QYhY`}D-vGhmMA#5E9@ zYq;=GYki#M1y){clf&V>1a_eT*)w}iYfnLxE`TPJB}S~)BI;c7I$1X~{0zyo z)6GIzo)fsxJ!?BCpKrfy-VQTfrdX^gGe9(h;*xpj9=RSBeBTv)MjO8;lkfxLe1)jw zdHLBtRx-0%B=USsSA}{7mVS=;AZ|IEyRG#)=t`@q7wZr26vh1Kbk{~1W(YERh5{I} zi;XZJ5vLQOt&}1(d8xPPc*u)CQ#C79_n~TR^LW9du@-E|LE&8@VW>QNMr-e_$ysy6 zLspov!Vi`|FhBQoVbW={7m^-c4B44R)-CR|Qr4yN{f(S{U;Q0}Nqmn44+ym(*&A;0 zSm4XY1v6Ow#S17vIUH3Qu^(Xq!%MwQBS>BX++Q9^C07oKDvQ++C1m{` zrMqD*_ZvJ=j6#p0O{cxptQbiu$M35ebg14{NvsfYj=+r@o);ybokm?0md`{yT(Le$ z&PbKYS^+^BOsS?g$=Y`v(a;>Xokz(=m0D1KloYpuHp6!Jv(_aqACV&S5Nk(w+N1HI z=;d80`0V6vvZCD2*Un9b>!tD#({u7&m&uKeNP0Yl5YOKvI)n+CyLrZNyS>+8)}hwR z+n04&xr2^RIA%`{=%8qv)uXi!0A>2|g)}{c*qIhyv1I$`Ylf5+4rZjikJh6P7V=U7yzIldwvZ^26Vlf@M>W_1NiPtn5jA5?31*Y3t==s z#kY&5I40^c=sHKdQuIuy<&M)(r3C4t>`nxq#i(!lcPOZHxC~jn=Td zJW8k47gde;KTlu7>MZM51Ql|>tJiULyE>NlrLAFW>~bxCHS@H1&xo2Z?=JbztzKNv zz5dZcw`Ndw?#y}_I2_&joTT}9VMB*&)v)1IbNX~Yd~8+g&{eb3_s~(X*H_s(r0LL` za(4c8*^??V)zqXNUdjf-2mSJoo7irwv_EFX440)?4OW80D%#|Dom9cD1A<)wWo5?8 zf@)5LFJ*rP#6his6kSc3m=eqYaQ@8Wt3MRJb8HV-kXLYKm=pV^dvHG{kmvhN<3uFS z<2onz(txj4^g0rh`5*!?Ex?Ti3^+GdpIIVpXou?j?u;I9el18J|Mw2wY%xz$oM~c> zefMrGM2x3mG*5HJ2AYw&nER4R$`#od6qOV$W}Vv;cjQpes9X^g2?~3Ik*e08AW@Yf zDYabwyu?C$3+;!(-{Q|Dq(mthl*c9IUBX<>^|VTSb>vsBYI5m+{#fudvE;82p2IF> z&?vP*TpSv4`0ZY6z~(Du=FM&DL9y^4(8p;TcG9T1C)=bvMcP#E_}PE-!z`gqrlaKn zwzA^+w^_Tl+Psn-y1O3cb9ru;x+~ys{F-e}mvsDYPND#IZEZexs;_(@WNtcfY&etb z%jMTwJMF!kH;JK(wVMsOKIE=^E;}7&ejcpp@O5a4=bh*?#$v7!pu_i(3yXVsOSw_E*eEDo%JH~Rp+WE z+&*==u^;=i!yesA(h^VY$XC#1L)EE`lujPNxYd)-WjZI5=dk2t%3#}Vqy;M z&6L_?_Yb_Z6AW2jF`OW&g%;#5^jDSk+;@|4{k;cj_vOhiwfeo)d~N%>6}QnSY7C`d zqhDYl)qa_DCeLm|L9V_|cN<%O`N{>pzqDv+pUPNcAg*_+v*CZ*cshM-%J8=q8L_6_ zR_&@_wi_yW+w8cj(#iJI<3bD?iFi7_@txLce;WjXsifhi=j6$nA#RkKSTA2L=S-GJ z$~QWilSL@~vH%=iQ8~+_J8;{bC`=tH=%Dm8ry*xa*1R(-p{FPfT+}B`tyZfWr)kwN zv#4>wfyat_VOQ2m4_M7wCO5D{L0P~;p^H=lw_$t35nxvcHJ5|G*eF;lSXouKYREK$ z*966LD51r7^M?~^lGfw-1`V8ssI@V=4=hej<4T~0*jv2z@GWAK=o)o!5CCy{^JX*x zFwxC8bw~I)bI1wIA`l*O$v-?nPKf)ia1C(Ybw52n+X6Q4cxZ32Z-;fb$9VesDA^Ah zz_l^F>}*U!M=IYQb)248DbcVtu)W|kWSIG>jLJEHO>7b=%O(N5WA_&TplHSifl-sZ zwR1I_Wl4P1GbD@>CP6(Mv3J>Y!EB(fAZxVat{}7icSln}PmyoDy%#C=Z|H*JAK#-` z6bkwI6qLO#SE|kvUWC8oj@1b`YSHJ(l}(kQE?K!tvmx@c*Z;!BLPrvtT8NIpw3ZmM z-gF@kVf8O>Y4t9u5xL=H0Mh{mPEZ5rmN(s-ZW-YDiTT)w8TUaj z%`q+PRzu_D>mRnsty)`T+0&zGWu!XN{pL;JxlWyg4jQ)_`JrkOp|W=|zaC@q^3E2I zI*>eHwv8v+%g0bdh}UK`8rPB*-zr>q>tAj#ygB$-57zXN%{~6)YMHk&WS_5l4>~Gs za6X^yH)wdIC8SV%o3*w(?!<}fy;`214TXf1kJ5~`T4CF7Y4*Mhv;}?+F*@Lo`rSuG zL4z%&U1k+2holu`Hy?M#`Kk+z12UYuBLaY`2Er6X&HV69?IJSfVzY*G{#H_`Oz59F zQ7Cbtys}7 zl)0XWV27lGt+J&8p<*RtK=-(3H_Bb}PDrk(D6XtZ^Tl7@)lsy)iK8n|b z(Altmzw_gYM6mN$6nH?hF=8pB*z~@9V#NRTFstY zJDfJ1Za6sj{JfhbgYr%&h=`pTMqZn2SSr#8ig`P-(#KwJpHXMOs8O>qlx#XLhAG-N z#|w3>yl%a>yV=64@I*-n_w!5g?D7*^8zKL^>v4q2U^thfxiu*%u*ecX{w2U851&qP ztXd8@ap&*>q40NnCAr0?vbEkl^Zt%{N?glqba8{3sT>$@(V7o z27WLnwHW18>7~UZPvZh4F3jdOQcv2Bu!T1;ft}&5>ecR+jp6!H-a86!wN{(K?)k<0 z)kndbYvA(k#HVsiC$j*Gu%>`aqeZi>W+kbu<<=^yU}V!+i;;*enHl3I_QR2J>CG|$ zZfalEcCyuBk6w;=Xcm8N&;6p{Os01SjgGVlGg8Xrkuyi^{G>cnJs>VOl6~fM?o!u+ zSX@D?UuQ=j^#_$ktuM(pcB8rObao}$K>OiCYsBm%#*FNxSIEJ|$awixVv6s1`EWVGcl*mtObg)I>cSkz2qxe7HAZKezUF(J~*N3YQ_kCHuY+suE(o*gK z?f?dB(Ta1&=(sChy`w7}kZVK9T>@n^v1zN;!F5zskHiD~{yQC03N2T+YuQW7+iFh+ zXY>H>Dfm{!s54$m#!-9f2dbX6NM{|_oV1x#Y_7@_f!`mum#7y6+tO>Zuxgs^MwqI_ z0f@Hl`|GQb0G%cax08{@sM^L_s5p6Q)YionGO_E_xFv*tBY!fkV=_DzjonW?WRB2Y z3*ZH?C1q&WR^Q^#+a59U^MC!_Dl|V7y;i#@aDN^6$UTz8bcuhNld8><+8HQo&Px6$ z9dOv)ESF1(y%Qv=R0C5Wno|KaI!2|4*wka&Ly8|%!$pV|KSm*BP^Qh_iUl}l0uDCb zij&8zIfkNDio&GlS80HWAQ_1Jo{n23x5)|EIY}BLC@)voA0GdtKrh$P7+1so&XAq2 zjN4I=7h9tY*CP!upfQ)dFn0@G%4%8K4AGw5=fKY8mAWVS{FA$W4Ia%lEVErwO9-e9My>tfjRI&#Sw9>CIA?nrqHF5ZDPQZV<1hh+~U zLGq4A$}$8U;tBr+e;~Dd>)4%nMCCDbKkg}9f&YbED~4hz;FAiOgCM-`D%j_{wljM< z=m8Vf2k?-NPHoS4&wbwa@c*92xC6xxplrOap{%v=tirODir1}>`GYSz^1a+rY03!o znY>D#NT`!MTL zDb_GF;cjV*S=VK#7o)s2x2MPHevRPo3r=3DiSdr7O>LW7bGJQlhK#bj?@w*nXjg9l z^4L-6c!22c-s^E$%%32N*PG9WvgsH(1EV8P{81$Y?|nhB3WGoC!ad>!T@LdSI=VZx zboAN-M~9@-TXZj2pF}(nY0q2@OInACnSaMwZHUXB42^#q3Tw;ogOV)({Li)GOUU^+ z_%4tPfzGk$TLt#33Kz8*l3A_?0_=RB_ufaJSl$`aQ3GPRhA}droZc1Yx?et~s9JiS zpG{^mGiQq3TKtNVOT_(=yaKMvh8KA$%AZuhnA>R*YmXn=hu;=<#~p|Ta=#WGg>LSa z+OB<@IYMgQLgh$b$%oCIO~qA=d!ho-T9xQ_FjXj7!1ZiG3XF?&&C{lua|p+ry|(>t zNF_MA$a~C_t$NVg`jLr34#&suvgg*8K*(X@U}bnF`9>c|WD7%O(o6JwY-p7d5Reev zjPj9B7hv&HRVd1{bbK$@FF7CT-i}80tdbAma4Ci2Lq`(Lc?mZ2^g@DZX_@+}+-`Dv`A1@*gu$GU8ovn_-qyl$w zI$rl-81@PL1r}raqJLaeOoIa+ll_ZgJuwJUz6NfMa?tBJcpjqj^cstq2g$NfpwbQH zfiM6uDj#aWh8l7eFV*r@oNBmsGRUAk$ezE6toQ8nZI*MzTad;Mqj9QTd~MxMXm<~? zUWRa>_2(hQH=3M#f5_2upOpG=q7e1OrrxoSv@;X4B;|sM~&U;vv6w%W7V$JOeM|_l$mp# z7(oUl(0Lc#+4#xFe2(8Z2fCnU_48B1R-51ilY8Vl{QC||f+>Hml5_#>c8m}Ed@eRN zEph5GFi?lsVtXwu@}ue~5awBwy$N_1*<4w;%NN}}bT&zKd8zP`#543FB`lB~#V8zf zBxe1s!~2dOH&~ptdDwb&1$B2nUW>)Errqv#a&xmb+&dpQr)cHKVyNJo0>=r_xlE4k z^5967hxb@1KdOvNCP9NSa7nMNlW9`>Q}^tV)&aYD9CMgf7~X4g$=tN*4w2hyD3#RY zt7fkz6EsxOWRcz$%ku7zcAP!hQo!sgd9`gl(sdL+l3a7|`3E%OUj~nG3VIbSp;LTaDTQXyfxLxxU@Wy)JAHu8f=clts$iyowNXV=1zI zeJOH%SH%mpMDp-6`%}J6Iu;!xbsJGz)igz>I>*=8^(aJzCbpb)gf4rM2K<*+@9fUh zuph|Et$&xBy-m}Nlb61T&+b^Bn$G1#oSnny2+fP@@rHG{#=6X<@=Exh&ac6XE7WA7 zCVNMKpMg{@o+a~X8W$VFNox5PtZ-`pPO_4pDV_)Hp#slaXe(;#W@UN^BELX@x*Ji9lCZl*pih1)w8A8eWIBgG|c;EyiAT;f3=rAI% z6!@4QvQ#15AZa zLAgQ+qs|DP5(FrPp!VLp1)=!mp_a_QH^MEY=tlWr&9y{iVPBAsrEUjsT#J`whQroO)N{om`hJiea(#%l(!K5#u0J>hogPAe9HYC41F z5*7SQCm@O+FeE^ni|k^G3&rn8aFKoqX>(!JFt1AEPS4)tTy`}dNLsKn z&HVuW5=iIF;U$Yd*7bd%ES2Vm(03Hp{bD7-_Bcbhl)4fkYzUUm*a%H$24v9ngMsl& z%-(u(7*r2n#~KMBaKb&>KaY9KRhtWoC|J*0Mv5or-!-5C0%B}sZi#@76Z1sgN=BG3 zihX>Q5y4)_uALZXqp|c2XUDCgxNp`)z`?(18p6m|?DPQlwb*y>;ObtPz(xQB=gUSp zt!JA?UYiT%kR5@@KT}ZhtcSasZe&r%m{PQQIw7B5$u%2ebY4?3#0FG*^C`u|RokO^ zzsJ+ZI^$S;L67QAgDFwe3W*w=>XAQb*3^^e@VBqd9}u;?bwA>shR*+`*EFc>pMW3` zmCtL{rNzs5OjNJqO3rLzoIaBR(l(0*Q#7Ul3qQiXpe!}l%N8!uTncp3G%+gpk9 zEbb&XLAgPYzyQeBAt7u>2)5(@h=Ch>x?GLSYj~J8w!5mCg37PGkAe|gV+N8}UT71E z^m*p=b<^s~9!hG)3%`Tk_WkyH{O%Iz%x=DyB!msF=I99mc&$aM?|57ZGC|$s(4P@o zMS(fIH*oxx!eXVgjW;goJkch`Zh2oY_hq*+-f`K26^w5eU4OGl(*rZ6n8G!JmbD5d zLeytuAomvyAOmHL1qi(qd=U*pZPRkh@r~Z&zC!-g|Kgh_E~QzU3FWi8r^SK^L76tJ z{r(56Z^WvyV2Jzz)SGh2=Ko0Y7v4VX331=W-tRQhF+)uQl`mb9t1=f7Fy*$&7pz`^5iK3GF3DWLT|}%pMzvi^u0Ufh6`!$r zmwNx>t1l0j-(MS$Ja(r0eG~Grj_-{CBE1OZzkngXOC5lRTd1b_4)gLgPRJ)lJ$}10 zE{Nhj_IU5iHcRQ2{;(_|ZzN`a{P&TEz|-`UgSc;Y#Ck^QX5t`ZCIH^h84m1w-PaRl zHffX>%*GsJol$JXcoBCL5D4jE@;gcpG9dC0xij+yC`@R7#=scO@|U<0g|hnk&`Hzu z*tRS0+Yyzv?@e;s%ojjF;x*y~D7{6}>3H-}60BMX3YHb?Q;Kd&E;TU)H6(pG392za zCp1uwwF{&GZdec&-ojUL$Xz?xi?3C(!OXTRl`p`sI%EwoIw+GNvbT4?8(xA|i8CoC z7k%+f_;^k;jmOiPnhR6coC#bTr0hek2=6C6@4E!=*Fk7u^3De8;gAm{p_|LZDEdlN zDd!_tBntu9*EVhE3O6ju4AnhL5p27vk}#|Gc*0|+Z{T;NkNkwd+;rO=fj2K?*}0$9 zrlG%YR074!_GiJTk~$o%CWXaKwCiE{&5%N3uOtt@9|J$0RUgOZt2pLg_IfBbZU%Y! zBSw(h65O&A%rYKS&LAUqG^NQ(;j%QNqT`BSiEe00;#121L)$w5S<*F&+HKo5X4n?vALawK7*$)!va=QM)3aO!*xayFR6v zJQ9<_ID&Ps0Sz~!13~~WwMl!W3MD9u2d6loq(gTKRlpS0D-SHt(@r_e+u4JNa`IcG@ZbC8w$SOnnn_Ap6KAL=HuVB64gyfe@uc!5pb^n3fDG*1n4U+Rp zD->?f@qF#USvfnki)BOu%bvZG?PS&@Pl|M1o#Wj~ z`hGJ)o{+nOf|g1n-@S+Gy3~3u8&dIrn5ljnH;>6j!!->2vxlb#fk6V$;FDUv8@Cph zfp%K_GNo>Zl_%9hJj-a_n(^75(+pQeY!+esX>~?x$rOmCsJJ;S7=p1x&$azE%xH?& z-IQ&XQc7YDp+%v(^QWs0#}cqao}8eB&t5vX5m})|;k4P29L8r|#mH}$wz;#hvskT4 zgKNpf=uX&?7WGOKMjwjW$@Z`3&g9xoS8Jf-#JiWWAF?0Xy)cCGZN&F>6qpmMna)%Z zWc1>ylnsDYs4^#BtS)VU3>a>k$gT{D1we?4{_f$4ZB_fE*4Uqt+UD-U#J{i zv@hVRZ{`q)YA@WDFfJ;O%*R2yvghh^ajIz5vrO5uHaL!BxK!#Im3k3LPc4XbEixbu zgwCjX}7F4|>&t^WcI=q)?rCC3uflK_~;ltk%!}@FKUbDw{&~0AG;Y6Bz z=pNB5Kw>zfZ2DAZ-p@7!?%2{q`^?Y)-tz4_vAIJf_#&tBfsg1o;Emz=j{%z<5f$cs zzH-e!1LPg6+$k%?EcH?#2=R(e^|fw>e1sMiEVB9s`Jj&O=Qth#b4ADOxI>W0H3j z1>FI;CcL8gDkTwnqQ5OPp{NYxhhI`KCQg-vD}gVBov<>&O%xo&u}Hr*N6($lc9eEW zPeZ~(ZXpu|6ZJt4QWzFrBPwQ;&fFCon;t|ZDJNY@5L1g-TfG!+Fax?1?g%p_4+`SN z%OUA_YU6n?83)ATDX^(X!trrPC?gM2H*s1Rfp`msr095_!}OCe&IAmB`&Mu0mJHiLpX z6OJ*#pL&fkkx$~G8kq$6t`wP+A9Hj{ui?kg5`MC)bN}1;6s>bTEG!4m`y6}p!L=Wk=*D6NTq)l$Ju?bc z+A2L$%Awkf*4Dhr(&l>WC_R?L9cNMT3wTK5y{xsplvQWLNBE4ipyK;nKJspKBJwV> zwO}8k=4I^T>ky)2cjq~lnj3425M?Eu(R(vQ~sThE4Lq^5?+@2Z0Ma^%Q z9Ivp*it)(uc#Bf-=NJyY>hnD7E!yW-5@ZsV?97@Y|v7D4RFXzEbFDBiJ6%8^d>@b-X{bDx>xt+ z`yS zncz8J6Vb!GixR~a{18*ZMM$ln8MapOG}>@FU;3xbCuPnDSt-6t$UCb8&P8QHC9*O2BKB;J7BWF%OR;iNQuaN>e>U$QNM2k;K?nZ%_^jx0!m8dvig|)e#(T!YycVbdm zh6JbI!vgqAH)odxrf*FPr<`n|>TP$>*vn&^*9h-h6h^a?oWeG+V-?~{fK;$(SHFAT z=8RWR!}qUF#Ftph-F((>GN}y~kPH!;Cxzr%ISt+xur&FZRD_C~Y0bKl<))?&VkAy% z%`$X3MQMyLYOd-tj#ZXlAU)<{e5M!rF-hvE!i^aKQC2&$j*`plTp_HUQ8#1!s zjJ-0kO17_aWPK)k&taT6J_~|en`DuzO6izeHgr6Z}GgXnfgjL zdAYp_-i(GkjlkEO_g%m@d5N{aWAPIF+Ip&5@x705dVTFGY5crF|NfBuIc}@^2@}D4 zJGA2Kv104Hf8$E?dBuQA`zrC4{I2o}Y9+$F9LiBGKCd(v{rJmw{W|^x-??3(xZfTC zarHMB1bB-JE&(QdL!S!Bgo z1IbzLhnNb*Lmo<@&f5Y6z5ay9KY^pg*#HXk`Rlj0iM?Z_cm%qx_*&m@Kb$;20(Jrd zxt%-+Xhx=<9Mc`4JhRdCQmk<(rig-zz>OKDz3hQBU@aOMWB!bFt0y zGOIcLU@Pd}b>;GAQ+S{aBwp7IwaibQc{C)T7o>D*fb;DTlMoEF?(@md>9uBG`5|BQ z*SRR1%F0)f4ijEy2xxFz@LTxVH_q!1U^T9s`6od-SmYedT{{v3OHu!+Rl>&^I7}%s z{PokI-M5A@HJ{0>i)080-S{``CGa!sH_!*0=E{(=(&^%N@a)0}H2p zwfXwS+dFzKNKe|oXNEw~013C=O%J@n8M zfy`{(F=-VBI)TIOslVtYb!ScAIekk4W+q@hPmP_-k`wzCTDS_q@uNs^TRyk9o*cw2 zTRR8r6v4v4&QuP3G}uE>VM+ntZUZB(b%2lH8y#*q15)jSjnI)VAYvjc{C@xx{^Ab) zAnx=Gj7)U@;N2Pj6s7$m{vs5V-0h5MMQm-Hgp3^xzlzj3**g3+mC?60rj_9T^P!Y7 zH!yb4cQUuNk+!w5g`yR)(l>P^VE!6>*$D{Px@l5>m5rfhq@yEXp<^XrV`R{#6?f9N zGB@P6F|{%#po602cQiD%ar&czqWyEGKa)QOP_%;jc4Efnre^=GRCF@7Rv}>fQv5l% zh`E(91HoTJg#y$U9`QG^|HTvh;~V^U;Tk4pdfKn$PR3u?Z>8^KEM#nGYh?VdNQHL% zM07eGO3))$Q1aXWgqQdkCM2P8Tv&pz@4OWLk00?w%s(L1_s&lpW7Z_JNnT(Mdk;?~ zJGsx`1iSXO4r;iA2QprB)BCL3r>yCU?T$mn!;fEF#3|oxt0ofmYaX7OsegN5Od2X1 zKR>!%HjcyJ)*lZlJ|*ny9@31z+tJJNHV!rOY!)A@HV5m|3#%*@K_5P4OikPswghXH zWx;E=Z_vgZs@>3DU8ndXYHR+gH$=BloC|Kjq#-N|&tqBe(KXdS`e*GjlEVFr1Vx|KRMFdGH6^WYUKWrqT$mmogX zd&lDJmOd@Za~bfvHdlhg(d9I9?kCh#?A|9>QP&d8`_dKqi|77c%)7)1?1M(nh1HLdvj*DBD%FV$1>2>v^*;%6-F@#SwhGT#hCao?^vKdJbTnf|6* z(>-a=>_fJT7r)~S!`@fIw|B5&dx69cAK-k0{r~9U|5Cx|AFfQR=xpHh$FG$foQ?mI z3g|l;|M92)tw)@Y`#{5tC5d0Nr{~mgOm(chZyy;KZv;Q;R#PW6j`PW$d z!kgSQ7ZR^J9?iFm&*QAQ)f=tU7Y)WFacrl`j5x#gP*-|ta4*%Zh9v!0GHOZfA;fF0k*%$pp6nX`^!|K&pNidV zIm~R!d|xjfpBRrJ09}p1=!ZSW$@q9$$MzM0ct;@2V5#?ves?jl#OuB!5Ne(|uE})o zY5EBL`9oNY3TLf`&f^sSstjVpZ}5KqI=1KcHHyADOlKpjuyNZ^bWA|<;fn)qKV#27y(gD|E4f}2>Ri&-(G zO(GVOvSQ6man&c!a8zxwIPu><-67!#fxT1-nbVL|AX&9O65Ns0kG%KaCA*Nj#I4kx zpFR&LNXohmk4Rdf-x*(CmD(VMXFys3>5_G}__u&txv!|gJ!Y=E*w5mRn7E2nQDAe@ zr@egxF2GA*Iv|PqI)R}nju(odGm{>S?(O~p!l%kjVQbL;q$T) zP$fv#y2S%U-0e_0#5OgsFLfMX8W4U3JodzYizyRyezLzK@WC)?Hnbi}%vRrmJp%A* z`htzH&m|`mMWuROhy+;$rf`3##k9%;V+qbhhUap8Ft>-o_i{&f#$gp=KO1FQF z)kSeh4&P}1;D+*!&f|x{Aqz>-kPv&L#9Ce$`&R9bWEh6wgZc^6ycFmYV){cc{zz_z zzaADJ-Qt>2%TTtwtS-NU8f&HAUeHp~k!^l{Sx#4VY(Ys?S*4s-S5-wr0psem9n`(0 zGQ-L=sn2H7lG!3rfhJy}pD6bSAqFZFM>^PYvn2tI9ebZXtu-e&AiW!;0l_5DuVaTa zHqP$&nq)->K6VdK(&U1@#cwsi6+(%dK#emagTC|IMzXt`jTqe_SQ*?_Z$R+2d-{G6 zw%>Ap+ws9S&TwsZ4_*VTVc4#6ch0j-1MFtTjh$rP6EoNXa*)OYe*^!Pb(p~ubo+}Q z{%8B(eKADbx8r(yvSNEXHazPHW|n1~XgphfN3DIUZTwshpW)^b9-4y?Bl4r!8U6>Q zo(RdN?8Tf4V7!59N4KjJwG7O_PD!cV+1bwKMPye_?41kCE#|&S(H+pq;KAmQ=+)Iu z7TME*@Ag_L`S!Jv_(aRmx4o~)hG2>q^3ex^LOo=9m$M4-@zxqxYFJzywXS9H3v9_U z-%%vzqPq1_qWG)kD5r4i2hwdW!z{rDuV3a((pNQiTN@{8*hb6^hQI-VKP@t%omoN} zO%uspn(&DAK&pY=PVA(E2cv)ts_X+s8%gJq3nHRWiw!=$!RNj=$&TBJyo;I zo$>AbnKU^KB<=ZSZma7M-MsARI$bG`=2$48ipeTpA|`%oNzB#mf8b>$1t~Mb%U0Xx zLN5b#(3}IL3A9m}KLwxAj;w)VOKr~<)$Ge)1V_&uS>cGiuW{Q11FC&-0B7Rios4LQ zSOD8#iVPN9s8@n9J%9)^Lcp}0&0FlaOPr^Rd*aCpY%_?vZ3V3Z_xJWpbO|S@kE|@y zsVjqpe!+W4M{1Le%a|xy?uSbBmYy7;;qtP;q%4a8IxSeq27USVuRp9YsH_vBR&eYq z!9mt{Bctx*gn{8&w)~E9-XiT4wlFQv?HU{J2Nw&`;=K4mkoTB$=pz|TB;kN5(3AJX zmN9DRx%o-}LDoQi)KwyN?(X0~dNFm|;YlhtRK`W=V`~%!8~1Nm?TQJ8M>o=9D~Ti^UT<_ z%7_>|+Wh9}MpK;9bIV0qHaVt|Ob5Ljh;!xEz@Lg~d$UYqY{S*xw3POn5|6ct$0V6# zaxt2eqnVMJz(0|72vJ$zCUbF6lefXtbdCUnUX96iO0t+Odi92ld5zTc_A0K9SY<>p z0KBEgg*uZGwqa*+lEW5|t*%v3roHPNCFIfdZgA3!;C^)r(=%L8fmd$HkpeqwV6qy* zo-0X?N_ZAb65FZ3#Z1i2V+|87x8qF_FlKvAu$X?wK28}&M6g&KsaSmgu^TduEqZ7M zy1)nz953M0#weuJtMU?47wagOBRaAh@hN0?SsixWUM0I%s33GKgV@==r7n8M@>?fa z7`l8r1`{xLP1E)&sdWCWU|lkN8iF?>CYlR>5tT@%BE~aiHWIXtXYNsg*i*!4F$NF; z$ADb@&%A7;2nOB?FDOMXxzp(bw)$wWUb5Qjjxc-ur6E}+2p^DL2C=4_nr-!AN~50< ziMimDd}=-+ilz0x^)E9X(P-z+2PWr!go~m64lr1kuV;W6xtR(q~G$ zId*9O=}r)DWMWh>b_Z5EKb@Xcg+D#awo-qVB1I5C!uV1M>@ukL6TaY4b53p|2wK?Z zNrLk6vQ;kneN343%=6ip8qOlX+j})^`wfEnDmSar^PDZsbPIt(fX!X%!DE4otJ**jDn! z%gZi9oae^Upto?%X*%|!mU04H^3#56ZkgxX-jsT7Y1D2XlE*gzsrvB8GDIL72p17n& z8b%PP#o*-6kW|!Qx?)wGJ*IA1krjO;2qGfpa5^wOi1$7p*{w1(O4;DEHJ=vWR5N1~>aF1rh{8 zja;UH>1;h6{uZ+{7=|8!I|b`y8%SeZ!6%BqR0b6PjSL<3iT&Yper|+~9L zn6Ee2Q~?^j^{31?p%TetH<>8==i< zkd@)#x#?vl!(CwEw}$7^2O~olYt%g=>1FxFwA+@{BM1^C{>u|_{n+_HVQPGvkCkH; z(R(zs^oD4c5kWJ~E{^u~QorFqq9Cmv;>ZlU5B(QZE83^L&>u=fWa#nTf zs7C2beg>Fm*$je9sr{-u8n!{5RM`PVe1N#N23hMvqQHqz!b}o#h~C#j$zq_w3gyRZ zut+Hx42@$rX#=1*dDO~jbss65!wwMNDBxVwCZcWKf=1TFLIEFXg;gcWvH1;vJ{Owc&lS=#}U2I9#~p^>nhkpB$?MWw_O@uF`PYhWVxKeyEO+ zsT4gh&oc+;l2iWkRh|6f7xLC_zl>>^5GqTBSxwT#2rN|b!Xo^ZV!ucN8u8vP_xkj%5a!?UaGh6J3tCoi!=ytoxpx7o zw3*DT5@c)iRdQ{$Z9Ovph#s|y>3R?Y)wXk~-o`sM1{IDQY$pi<`mM+rb>C<8V1a0( zrnGJh7n`K(QIryAO?3X*kI2wpjqf5@AY1Y`HDjA3WlQ8fI&VPE!4=Xu^T3+L!YF=9 zacZ(W8B|`TmX4sl>2Eti#-xZgNBd~#seL_6==C_gjIdt*ww&-Dc={C9H5iLVsW48i zLNz4>;b1b(Uvm&%=LWlJu!@`Vu)i@IDKYjcet6I|m#`<7+KtA6cEc!|t25J3QbUJ( z!zg0~@WjjEQW(Otk%Vm-Ic?%oY+<>y3G^*(VOFF=F#w4WC486YDjgfO*W`S({x0#T zQXSoz21U929#DfPdkA~J5re1Q{A;>|90n1xzm|KHDah_9HyO;rW3-}Zoe2AARz@!n z=){pe+>W6Qh4}kNJPLFv#lGJIG$=O^6+oA<>6;X6-&+_54Qw9+V6c9-F(C?Ju(Bb5 ztTqY=sNcEHPHlB&YYFtcaL;Iw?uAuRsye%r_z_)2^YxX8KO4XIa}y>I0dzkYxO~_| zwDW9O{E)D%XDB0LK`Z-qs#yZRrINX;TBwU^wWTq`xv1%PugiAA^7g{#!JpPfuePqF zqO`U)-C992m*e3bGO&sDy_}NL{HXX1Tl*RJmg<(|=`vF*EiBRE3(kdDzXkl>DH2|o zKx#5AUpk)|B=ArI8lzcRbJj#>jb_E(af4-=@V!sr$2nq%2CU6Ggv~mEa`8GFt&E&9 zmY>`Ex#V#bIr;JGs1twilD-KuR-(N6oFO3S{f@Qt!FP+wur1x4fdK`6D+zz9jF$TBG%V_SQfYz=dX?_sdxk~x$z^?1~FwUD$A zDBGu8%MfjEoXZ95I61G>;B*KjT52&%rj|dy)#r4FL$Y5a>>|16XEb*Uj!HWaxr&~P zNQ<}0PqcOIjjF=1tu=xQGknO_vj} zjwX+l^s7cQY5{A#lJ!VXBTA=i!3nFnCnqu6Xj0&&C&fbQy+|1O7WuqQ<3{=%zJ9L& zjW=gNtPC)H){@vDGmTLQR>*dk1qC~$1B?qCczPK;b){09xd*xjrRiJxi%$V{)6?ri zDsz^1RwXJwL7C@#Xwtz^t;pjC_ae5mAs2m;KkmkqE9R57l`yDeKRxQeqMTPpN(vQ zP|ioaS!tbw%s?Jyyem{Wmx9zsEG$t;{N{&3DOKfn9`!eY>lFijAGgtFGZGO~Cc*rh zCd;VW&{=|TF*yo&$zT0J+Lk(8V%#`pqPknZSVN{&14?gv7fTiKbC5{9-OVwNV#J6{ zxE>|#`oPO{Ivgw&E6dD}Uh-%1SX$}|3!EhDi@HH3*E=r`C=O1cY;$GbZA~tROx>z3 z+D-<=9`i*Xv{2>7)5<%C8!c^jN{E=2{NSAUWDY?%>GM2j0`$izO)`oSDFrBGFqM%C zDe~kgVa@YgKrY?~O#KiA2>rk5?me36Wur5)QcU&&$h6jsDX`oid-LgR+oSfcvR1D> zyIEBq-rw1n=pZuqs*hKOdn8{L%0G}NcAPSnoY5^`j3F4_|EyRai(*mTy>WKy=e;D) z^ojJs!XMezBQ>O0ujpl$;Hv5d&9bZDe@cSjCGL$0C-}}uK(tFVjuKI=7zl}EE+j}dCk{L)z+7qu%g{# zTo zMouoy9k?njvwZC8o$h{#2&S=edNy_#m-C2n*o;sz#9I@khPJ$Hc4dD%sT|QUEvK2H zjMQG5y-m#bY<)Lq(YP_+h<*iwQUZ&3+rZ8Q%{u5&*j${@JGB*zl8@e5f73#61mrp& z!u1({xsHT)L1e!F74J6Na>92v{#L$YHnWzhOe@FuCPuy z5Tr_ZQ^`^t4nV>P7L>c56)W#Ic8j87@B5v5F?g>_>F}&6PbwqT95si;Hh#;iB+y|3 ze@}4V6!`1!2EE-+aZt$_i)y2|p18w~;civ7%5~TVHN{Pb#4gL4HRRA}E9@{Z3-r!T z!=v2bUJXLdxmhmxDKrrgauMR72G$O*v8bxW-z(_jcp;M=_M(F336#`j$ICNb_p>J1 z{ON3;fy`^lTbf$)8p^fNmRopOFFQuUbohGu3^&D|}B;Wpoi9D|xr;vCS% zs97S0dY$6s1+XA5mSp@4=ku-%0BLeM`#~WU`1waHN!e79vTF6y>EhBY??mgE5T(0J z!qNIiS%?=zwiRJ3?A&z~5}e579v&)cA?MoFgH*pVI2_*l%AOhZU)JzFE^pgEHm~e*uepjjAQk`Q_X}qy}~A`PRFV0V@`bc_PF)GD!;|X}Y7O>E7^1F&}FL zEMcZ+m|6d=xgk>xC3FSE!g{I0azcK4xicdr49RvGS+*ert>u&{cNm75Y3Ddicsq7m zi%pz_VHvj$go)aKMm}#H5lOUb4@cjZxyk*eb?G-uq^G?lzQZ{=z!#{cPI7Sk;eHh? zK|;}0;(jodQb<|`H}U|@)CrgoW8)LM3qPE1;l0nVghf#7tRHpQpQBM-XM;;^^mBU` zE-|gC46Kt5hC4+=U@Yp44u(x@#ZdTwb9Tb(EanLd5b|yA3%mjAre^N*hq*qfj}r*` z<}fFeHz;5T_fsj4GvC2GPDnxnutF^xN?1rKWg_vNgHI_Zpo0WYS8Z0cO2(>&Kwp9{ zdh&opSvT(EHS0WH4Ac+NNx~eXcIwX=GL;3h>{8ACi$(R=jTsJ@#{nDePQ=-hOT57$t2&m(N^n8 z*pKSuYv@9Wk!ZZ6Ty@+D1LcJ-$zT7 z$8Y88h!Z>T_lZJQc?W8zbL3^UZ z_3*Q#T-cF^T`aM0<0$xfiVF1%d_%rhARfIB^;;a%hc9@{m@OvUq-lo*^jK;8hrc2M zrxH9=pZc&Hdk`7bbP+w_m6pWCb5FdZ=?SQz{*i3Zonr zvc)m;-4DhICA_;T4vr}Yd3^5u{;WMn@_T?0TaP11h6gjgLAL$3qhu^Y-0C1dB^b{K zal7B~Pb1Vw8Pw*IZ*RIy5}TjT8w)Y=#Sh0EZ`Bj0%%q!|AJcmSw)j$9sR_(rS?z%A zf-J2`W4NQe(&|rW;92(Dgy0trdgu|N=W2Qjn&OQRTU7mRfp-YoOos}r@X&THE-wX2 z#eIsi!rx;hw5zcyqK}+@28M?@va*m!zEV<#&^E7D*qsk+t# zBXOq0$@-dQzI-g%;!|X%PnJ{A&e}U~9-+5_$H0M5G;Q6w@@|SpZ!OrnZFPD^$JlOB zD4!bX4w6jlY*ts;Y*RksaJi9;4pl+)S8YM9^&~*abE+<4cS9rezBR9fJsRn^j202u zfTGcP1W#*A(fHfeg5HvmGC?O+*J0JTs+fsqnz^}MI+-&B2nW6xqB{>2nzuL3_6CC; zDeX654U|FN_KknM%U*h%1q!6HSM%~bFEfr_N+clp&EQj5rJj}76pX-b2J_uIslq-dfJxrwvtZcucfS1=QB5*f9T?4z8ZwCEuL)N1?g610p4)v z{6L!`pvFi?-9a=ngVB$mN${b9)=dmbtu2>B8_9E+A5BlC(ncdxSMT)tzAOGkb*JHp z5*B}_QzJSCGoM7AX)#f@{2VQ%xt~@A`zj(1VE+7LEJs1l5GYkiqBgGsxMwQsq%sT3 zD=21yqp#HqBa@&3(@Z&xZg$pGz8VL~>Uw z0fBpjY#?w&@(PFTeSO_aG`*C=P;oFRQrF~-UN9wAUt%g^m`)*Jmqwznj|s8p-u@RG z+|384GA^)31K-6irBP;|i*b}!&EmGKh6P=`Cd~acKF)*DM22!oN?A%uigo<~hnjY@ zs^Ry?dgdjy_N^3?EUn4G$8vnFvV3xmB+=j)X;q|Lv8Mn)MR}v{waGh;AGY{@HC|NZ z0$;!8b7kyV@=weD*8!o5exoX+2w|e%p(w6`^wi1uI?QaqEhW0W1p2)3N%hWlyKP6m z5vV_YxA~$g2WK?gBHF37;l)#BC-+bBkP)JdD9US!-zUY=VjzkiOU1fjAry+*n{yyaK1~G#H6(a9b9UG^`x!&rZJEXjsD=U2J6~2g z(8D(7g5kQ*%yNY7bw^Hcc!UGF_(1t9wF|vDW~3)4Fv+NCe<; z&i($d^DXE1J(F zFOlr3Db?1rwOM;@4jEZ^DzIw0zyvHYVlR#+b-nQzv5sIW@BWelV2LZB!1#qGcyDj? zdasQ{u24YK07+;_-~|C$C@^hGMS3vqs0yC(?4^CW9K%+IU*7Gl^7o2!-*)wQ3^q(k z#mU);<4RWy&=+}Hv~Ol+zS2qD)A%XaNtLPI&j#2>pk7X1U9uUqbH$N82!Z9;ZzMAz zy{31h*Sp$&jS$I;4MeJ1$*HctSrA!W?GO{Vay}h861Xz{+SdXq)sg7WM^FvwI3NVk z2Z=B*sQncQ?9iZ5iJa%tdqq^-!thYl;dGSWNsfu}yu;-V1C3V_dG`D(0ipnY!#vWe zt+eG@#MP%lF5`HVb^QY2E!JYIn0Di8@8O5^V_N`Jro@ePiml1Mza5Z4KKA)ec?ixE z2RKcmezN_%mo|GyRf6|3FV9E=MqPTNm;_cVKQp7nGN!1 z9LED5J#=mnMBSj`^6yF>;BL_;e3{6{fk4Rg7cGb`d>#|h?c21i1$I$6K^F>~ailHX zy6pD-MoCe9Z_K2OR@m4S7h0B6FE^O%Cl1+EUxPLBo224rbnsf;nH|unY4Li^*0n6rUKvg1=7jRpV>>CQZ zbLZHhsOkaXM|gGowk^Z92uYHzUVOvT8O-T@_woWFh5R0g*Gut&E#%9jPno|zK`cU} z1}oI$^zTaiun#~|{Z_+Qs%k=sS*T#3k}9Qwr34DpL7>?Uk-`(EvTCdHJv4*9kUq|* z4_m?u+D$c5Xq)r+c%SAYGREJFM#lPk$$pHjzqwar-VzTZe!)1_=0I`%!tVrKE`X(( zlO%DLk<-b?te7#RQzLR+U#(!Ll}_!H zacOL%s%_yrustjGDY2PkmNMDk;)AmAWE-5L9q&z)Y7#$K-cAATg6F=I6dQ6NVccUT>lO)Gs0)Rqqj7mnc5gr+hF7sZj2V}4w? zMsK=5)|1^NSv`}k5Z|#vC2I28|mt^dn95ggph>HOSMTiL2zXL^rs1Xo|5ur&Iy2auB#3ys}+dc;wf>4Qv zcqa|e(;=F-s1YH_OZA353gRuLvb+>|6Gm{18%R&Wd%X^MhY8$Zuv6ow@9P@thr2nf z6&+3bl#%^#I$M5>`lL|`Bc0u^+Fr7^-wA1c!aCTLHMJpv*Ti1NS*lI+U2+83yY>TU$U(IU2_l9+-DLe-geZ?b8@BT+rX_N0|5aXI#Q7V zu?FBt!$_{9MI+bfJe~Ym!?E}WNxV;p=CWMTTi>jH;J$x zNCgM9ieRL5fY6GucKkIzsZ=WNC%L1fjp}gO$OiQKy41)Z>abm0yh&*V-gesdQ}6^qHJ4( zx_QzhnXc4|jRyuOuH0>yyEJOBnP)oCwuY@~H>i4pydf0N2QCykmUHVJp3OaUxa4j` z!_+}ViRfQX5Yg{UEfekrm5hJt1wB61yFb$sU9I+PklISpx;uv|HpCOU?1^bOV&+gOO#-)}9ZYBuavR$`;qTJ5(X zey)+jU!8HyM`Fq`vg8G1I5c}yz9d-$8!NBcfx*7Qz4(k+F~*}&tIP$|g3XEtLlV#D zu8QXy%^nwoCqw%)aYV_$rfC(}k_c>y!;&)xF$-vKTFJ|s?3YVtu$M`xB;PTm;AIqB zjPC)$b92aQAio#Jle^PMAv1nRWuRq_?7_wb?M>yVV1gr_hO;>G@Xo8QcQo9z9`ZhJ z*y6UOpHgJ{7+lORCHc-bA=IXZuTfUE77gfsKW4+jtg1P=!G_uvA4mSlK>|IZMvk91f?ooVJ_@T+%Bjp~WjOS3*bAm$W zptZ4rLdQa7O7##K2~8F2(YK=QI3XnwaBrsg7m5XeD^}wy(ltEr>UllsL8;_@_aXx= zlVctUSgGNIsz4txgBlDq*7}}806Lf8kNH#46AFz0-%%C{Ezjv-AB9Q)be!|MTI7dx zj#v*;f@lB{yrg`qowE+R2Dm)~B<1u%@2O%n(!0Ww?02=GN_1{bUgi!uMtT;Wp##{K zl{~(jNNapdlfD2)P^;U$pD`61H39pOCM&72E3v5?#C<$2f{xmTp4O(0M#!A>V{o;O zi~)VboZzO7b&C1Pk6Uy#&PFD7HU<`P=NPG}7}i-6+WoSaMy>|6|e9xIfP%OnF^ ze6BI$;|f~2v~mZOonrlSZoG5%zO`)2Gt2#F>%%YvXCMTlC zWu&90CZww#Umwp_cCn=p;Q=db%`A#PyF6H$=(riU7&z%!AYrberq0)E0MVG(p`o)6 zO#>ISMn{WE#SxaHNu&WeIT?Cqf1B#R&BW@ft=^5#H^%0&Z_SUV_)hgdK>9kghmFvG z4(K0!D|P?y?2zY918URaV>APb%C%<-Q48G>lq;+$fdJjEg2{1V0`iF!)@Oo10R>>r z7tgr?REluv#`he7sPnP}xgfUNns_Wsz|K*{?QeBCnuD|hu?9K=k>!QRX3xO`Sw*Zz zzF;)t+%B3v@@4-7JL*cz4&g}!coBD7?J*?Fv1QZ)*Y`%|(}re*?THuniN?&iy(xRC z64j%{-t~=XO&^-7oI&jk|1RoX@>CV=WRG+C*<1d}JxOZJG#K-hl%H9Uu|0GF6b_d~ zG5T1bmA-45zE{feIU0$WVxORUIZT=$__pjsI}%$AfG2zHi=B4($O)ZLzjd-{qJJSrjvsk%{Mp%`JYk?2XkCqwx@v=I#$5N12RuFanS&NI6V{)uYvJ#-GhDAB zGZL?#PdT$bV5fFiu9AiCG3XTMmmw-=T@kJ4mpz9~mny5Dq#6dk=saB>WM;mHm}T#e zhXD^wQ=sQvM*c3J&mXrDhq77dC4g-1KKopOkB-f=zLf{-J1yvwklzs4U6H!$4pk<@ z77njybC!68=gw_=4^6M0&7B55P9A@qZAB=pc46E1DeR3fzv%Wd)8hJsc^yhpKA`J; zFRr;MmBU&`*#a1EYHB_|nNu4Szh>>yvGTn*rF;VvypnR!nM*Zm>^Q)FQa`%uWmNO7 z{oI=$36X^=l0DpGX?NMlM8?lR@WwUk3~DHWvXnz# za?eL?-?*X(#K;O*=$EP z2<&{a$j@hTQ+5cr|J{3Wyr@jD+}qK%dlTDX?VhdTtME3OL6IZ?aM?3H%_C#PxVQ+@ zH2p?RQ-Hbc?b@2&57#_=p)d}Em?vT>%Wr13fIdti6z9LEIoddk;GYFe1#Lq

    {HB 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 L&6>%bjmrN4h_*UX diff --git a/gavinandresen.asc b/gavinandresen.asc deleted file mode 100644 index 6b9f2d7b..00000000 --- a/gavinandresen.asc +++ /dev/null @@ -1,313 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG/MacGPG2 v2.0.20 (Darwin) - -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 -=hXFd ------END PGP PUBLIC KEY BLOCK----- diff --git a/gmaxwell.asc b/gmaxwell.asc deleted file mode 100644 index 906d5a6a..00000000 --- a/gmaxwell.asc +++ /dev/null @@ -1,605 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.13 (GNU/Linux) - -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 -SACYmLxqT70DZHIzvP7E4ELZiTsXYQ== -=62SY ------END PGP PUBLIC KEY BLOCK----- diff --git a/jgarzik-pobox.asc b/jgarzik-pobox.asc deleted file mode 100644 index 7e3a0a8d..00000000 --- a/jgarzik-pobox.asc +++ /dev/null @@ -1,137 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 - -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 -0wiVlUrBocZh0Q== -=sGRP ------END PGP PUBLIC KEY BLOCK----- diff --git a/jonasschnelli.asc b/jonasschnelli.asc deleted file mode 100644 index e7048ec4..00000000 --- a/jonasschnelli.asc +++ /dev/null @@ -1,63 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 - -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 -=xtTA ------END PGP PUBLIC KEY BLOCK----- diff --git a/laanwj-releases.asc b/laanwj-releases.asc deleted file mode 100644 index 69fc13e8..00000000 --- a/laanwj-releases.asc +++ /dev/null @@ -1,280 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 - -mQINBFWKlBcBEACgZJd/6LrSgNSVxiyq5N9h0E7zgSHG/ahuWAnWeFtxaxHeukH+ -Q2Zq6F8FLbq40PphyroRylMBpzPBcyxjee7mDj1DpJ9ayv6GGPTyQzOImhChEV8p -bA42dvXnB5ju0rPh2GxctbiZZD1kiPH4jlmDIgomvupAj9OFntA5jfkuSFBekZrw -QyZowz/paMBIe24YH2LyaZjC2DqLy8Znh78OfAZxZsWSdZxK5LsbkCE9l8Li3gQa -rxm4aEMBHhvns+s8Ufa47sdJAYAfVnAWb5Dfe4oVFh70PvB8GSGFS9qeib0eEQBD -71c9MN+REDTSOYO2VnUSFbu7IrKsPsClqwfT9KzI/uz5fpHSKdCp5AO7oDZiU36s -LsSOBbukTmFQfVrAniFEZxHLCBufXCsAwp07xtUH9ytbW0Y/eHYlZojoWJJPT//1 -cQ/A2Ix/nxbSkSPq8wpCUhBxvTQoU9BXeQIbSy0yUmj5nS+3DR7IK2Q7ACyVClr7 -LVQOGxgZhHr9Kq87RDqc1wlvbCxb+KTJQhJySpOVoiaME6jLBzgE7G+5N6IXTK5u -OriOsQwcLdeBu7TPgft79uBYnmYeaNVdovlBB//7H7UvY0kAxAg4NPgK6eYRdzn+ -8ZtbntNXi/23RJvzeZJVBqQ7bYt4fjmHmRYrbM4jWKJEoJOE6wzpmELUowARAQAB -tFVXbGFkaW1pciBKLiB2YW4gZGVyIExhYW4gKEJpdGNvaW4gQ29yZSBiaW5hcnkg -cmVsZWFzZSBzaWduaW5nIGtleSkgPGxhYW53akBnbWFpbC5jb20+iQI+BBMBAgAo -BQJVipQXAhsDBQkDFwQABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCQyAGe -NsLpZOBRD/wLfujEC4ZYMFwPXnhvOGEWAPeuOg06iXhEqJ1biOvxhFfwwjPoXGMQ -i/pdfGck5xZVFcxObpdHBp0p9ardos1aRXAS8JTnTQXTX0qs0QNxnLTBz+5DrIc4 -l7r5DAlr/FapUKNSbjobOrbv+F371b7XhLJ7oob5XXo+IS7kEY+Si5BXb0uVy8ms -SaKDooO2RfByrFI3LTHW3VESuuNnXgH6309yeGORgBazKtnxZPPlD2raTNXe9q7U -dF2Xv6Rr53iCGGN5xncL5A6nF3fou0tGvqLFBkrs4BqeNNwC6/jQLfpOfqiQ+XGR -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 -oUudunjw+G1VG08DA3DMoougS9pC7x9k -=BFsn ------END PGP PUBLIC KEY BLOCK----- diff --git a/laanwj.asc b/laanwj.asc deleted file mode 100644 index d2136338..00000000 --- a/laanwj.asc +++ /dev/null @@ -1,374 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v2 - -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 -Ycgx5WE9zYmMhcwaEHRDfOG0YX8fcXVvRw== -=Rajc ------END PGP PUBLIC KEY BLOCK----- diff --git a/luke-jr.asc b/luke-jr.asc deleted file mode 100644 index 31af1652..00000000 --- a/luke-jr.asc +++ /dev/null @@ -1,1285 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -A/qwAd4tSpIihw== -=LA9P ------END PGP PUBLIC KEY BLOCK----- diff --git a/pieterwuille.asc b/pieterwuille.asc deleted file mode 100644 index fad8c576..00000000 --- a/pieterwuille.asc +++ /dev/null @@ -1,3120 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 - -mQINBEjFMM8BEACnNnUTitrKbnIJTn5AskVVI0ZkauuTgmBLSFESa1q4vCG2XFOj -P9ZI1xVsrnowfwzLf5xdFMZWOFD+Ai/aSDmrWETqrJ5Q77/YupRdGgg7GII53Ata -taA5gBbdrGfyq1/IgTAUB3b7j8daURh7gfJrpmOrX+HAqd1CM07UJN+2fwketEj5 -nzFRT2riynxIPksALRexF9ofd5H2pe8WjylqjDfC0npOYbiwX3atPp6NU6asU5ez -IO5fFI2Qe4Hh6ye8k/wKknn5QvAq2IguqtJCBo96cmcXjn+L86Tp2aIA8tTCJSPM -PDMg/qQselBDWviKKpwjI+w/TEh83cV+n2k2yPchqq14XhcbFXDTsiL3E4Y0neRb -yTNieAoXoSEDzXCyFBVNZAxJC2Lf7xKFeOsDK4HKs3NCXmUoDgJcRZfWZnimPjXf -ClB2xHOFO6Jddl+79UDGkKA4ifN/7lhSdv/tcA8irxeT/0PyFQ1SKl5bWR4fr0qZ -A+uG4m6uZHwfK3ep0qFp1pF4DhoweFf16KWCJNhD25sh9C/XCTz79EQbYF/B3yxK -AzVhfDZp+sVbsTOTUO6qxMnDNHnxaLwCebW+Pazikk4OXPotcDUy0gg4jYpy2j2o -6Iw6k+742zO2GOKL6YHnpVtlC/Q6PJee13RLpZBSHQ3nsMBj20RDgOElewARAQAB -iQI9BCABAgAnBQJWINqfIB0CS2V5IGlzIHBvdGVudGlhbGx5IGNvbXByb21pc2Vk -AAoJELmkCOcdqsl0DawQAJroIjpqrG1b67ZvW9Q/foVJJhSAmOZXFaLtjqRc9WK7 -7ZK0MadI7kYiX5E8BjzEuIop6OGZA2kMasTErTFm37WOPeswnl1sly40ih+gkJnK -GJwLDAgQekxs2TYRRkvLKQb4CUFqyZPmmMgT1XNv/rZ3E6XYyqXoRnNVJj5tgTON -Ewd61+iZ3ogVvpw7iuGGbrU2qz0B8R40ayZtNouuUxsIgmgXI/JqFPywcUaVu3Ef -B/Xktg8RDamrxJjxor2hG+NUZPQa7uxBv454bzYCvAgymdlaFWXzOpsLeNhQLu6V -qK5junOLPCT9SYr5aTRdnVsIx/Pt707iKsfjKTG1meXBCDldTXB3QLkw7TkZfkCi -/RQuIstpFgVyY8twCkk792HLfXYz8RzBJfmNkji0VhBLFdRjqc4SEGQ7a7d8NCW0 -epmK1NV0kB5n63vDMjQzorRWpAcrkxtSrm0inHw+eghjrmyRaV53qFO43N/ncy/F -zPPbNGozimjl5N+Lk5nhcF42aP+qgt8GjiUVJIcxrIyFS19Be4tHg77i4i6Q0IX3 -PKit3r0X4+Bw1FNxk/B5/sVU23vwfNYX+YyKH4fbWvmqnhC+GxbHgD9vgtHIxm9P -QiHjzMFJq3++SaEz/Y2P2Yeyrk5H9drBNeiueiyX7cVeqZ9EZxUccBf7rkJtUMtV -tENQaWV0ZXIgV3VpbGxlIChMb2NhdGlvbjogTGV1dmVuLCBCZWxnaXVtKSA8cGll -dGVyLnd1aWxsZUBnbWFpbC5jb20+iQI2BBMBAgAgBQJIxUBlAhsBBgsJCAcDAgQV -AggDBBYCAwECHgECF4AACgkQuaQI5x2qyXS5vw/9ExIY6PGM2PDLo54Wp+VTBcLO -b9Xr3wls73WWnN54MPGdu+/p8DscaO053SItr6FpFnwapKZaUDufgkVwHB6UXgkX -aBunGsF9LjaluMClpxWPysMBLnFASFpFb2TKGrkI6uH55iYE1yHIqMFTTN4BHKPE -zDuY3rMU0FjtCpyfCQX+oEUrGuKV+cb2SNcdcw1csx6y1YWtQVz2WUSwg75kCoPX -cNU23tPPGteh3BEw+RPeiyVZPvhEIEWeqb9RHvY3vzkzssZhLyuTeyJXhEIbrAIJ -uLfI8zjFOalpBzPKt4wg0IwOSZQ2gqhfAx5C1e0DlK+TixQkaJQVzza6m95NfpcC -WQPeKaPt9NAmd/rRrL/vVIHUGg4AZI446PFgOYm9/iKvkhewuQvmw/JkSaSyCkQP -ke86kVf4QL2o0zJNk7Lj5yATrrthrzWDZeCc0B1mxe4lj98k5fcaTpWtCI7BYxfw -NRY8pzUZBXlC2NiOVmzrZrkDe3prJh9vh7eowC2HAl2YeM4CFwwAkW+wkApg2M/K -I7RmN5O+QPYffwlcAtlkgeZEs8q5RtPCFicubCBiaswC+mxELzAxxmG925gbrWUl -w2v4VmKSEbbwopb3vv7TsClCx7URXXSivH85iiB1rJwkcMpdlrZYNtAOQXbhaYjh -sjRpDMmUCgALGXvdNUKJAk0EEwECADcCGwECHgECF4AGCwkIBwMCBBUDCAIEFgID -AQUCSMvRBRYYaGtwOi8vc3Via2V5cy5wZ3AubmV0AAoJELmkCOcdqsl0FVUP/3pk -f6XjrIVulrvlJeY6MUrW7J0IgWOVVRjzzNkXAqtlHdOtge4f24ax+nsAbs8LQjW8 -Soeq6IYKKtaTs9nrOjr9WzZIPZUVAmmZmenX9bkOvWGvy6QJ2V9A8OpknFICoo8E -9mzFgsBvkKXZZj6utn9bCloGouVb3AtmDYsHOLAa9/E860BbUb9Fpk19Lp4+GuIZ -jG6mHt9oRsc7TzW4Uoce+oDyqgxLyYT990SYnwQGiQoHbGIyf2nUsyO+x7fhs4GN -OK+sqP3lSxL2kLaC1Sdl+H01JbFBn7Atr1L/dYrc9HoeGRPgGCICDo6JqvSOT9IZ -Hq3sMLOh8WTVgSWPAr+BWfknxr/4TDKKa6YE2QoIwRSVHRbh5mT1uzm82SISUNkp -CkaQMmUWEsKEHFKJkNL03IsKBuCxAawXBQA+T4FT9vkivYd9/Rr+1SIphlK9nh7q -ercrkEPr6zWifvfL5CEh7dUGwSVv1ExnDQVAeHyz3HngTxB8ItOfRpxi9gWRxj8G -tauX026UyLQrmMIhjLjwsPA8hFJwM+oPrmdVxzAUfB2xc7mYYpE0OJrR0yJ0VGTh -9dZsZ2FIkHn5LnTDF28P/2gIpNKcYyeB9zf6ybwUZFwwgPIGGGd378qKnjfa8Gaz -gaE6VJdurKuA04EMdrxIpGac6NMUOPCo1uZ4AnMTiQEcBBMBAgAGBQJIz8CaAAoJ -EDVTCmyfr+mS7LcH/26avcJ3eIhRnPXbB2gqZOCKfTQ/SfQf2QMpxtavAJhFqNnN -QaJaah9omL4MOgl/0nFettqPv5XkPOigoXQr08Y/3UN6wmOF6wDCkRHaFjVWRz8w -IDai3qAOSNUtCYF17pfMXZ25a6aQdxodVHbWsb6OCaleg7+3EmEXNwgV6sXVt5wC -w7sY0vqnZDDTe8RB+bd82TmvOSLb68clBPMPvHoImTOO6AFHy+ELiRwz/c+iFjJp -IeJ6yneH+yDVpNJN7avmMUJ0P+obFfUqZl5hDkMIVeDCD/HHy6cRb1OAF6p/4uW6 -9iuHnkR+4fWwpMkJedvEcJJtfGqHNnzqzytgsdaJAjYEEwECACACGwECHgECF4AF -AkjFnuUGCwkIBwMCBBUDCAIEFgIDAQAKCRC5pAjnHarJdK3DEACbXhCc5L7Hv0wg -wT2XGgOa+XCBD9r7I5MQ09US8ZcUgUXWY+2kMQk44NdDLVLLbMYPyYZIegiR48mM -lkjR8r9ZV83nEhWJmXJS1FV9kUc3dz34r9zm4GlalYxlBOMzRaDkkSCQrOoRroU5 -du0LddciEYEMtCPBzgI+HCtdVG7SpLrCQOuBW0mvhYAJPTyodox6FyXbkIzdSLx0 -CgJNBNyNuED39aYohlETCTcmy8/WlORiBYwNTCSvEmi5cCKFqQnEntM7O7MSx+1Z -8xPSyuYpo8kSo8Q32Zk3vlSinViq5wBzlCPeduQiZX2bqqDS2DCMw2DIV2RrCWrL -iWXAyMGzxQVT9nMZIAiZr1/jfdBfwWynfT7m7XENqXx5I3Omq6sKGB/coKSMdJy9 -OUgd0jTxFIlhlrUtopfdm3pg4wYtGHvYrIe9QO8uNLeI4l6g5txcrVo84iQMm/kL -uJEetD66vOfzEjZTez+DUIOS0S+pOA2YR5Ym6xKoCcVNqxDvN8ECZftEeQtx7s+5 -oYlT2qG+VCp5oi6zJS5lihbEHNRKOQKEouehV6CUF/rE+Fhkm8eT49luLagSTwz3 -5CQUttcIB7IjHw9BWJRtulWt8B6lidHjJk1KRXWItZ1rV1dYQ14Wn6OhxLoJYb7G -ww9rBmHOj4eZ/FeB60B/nZoCqB4zg4kCHAQQAQgABgUCS27WIQAKCRBqOhCzHBCV -F8+ZD/wMm5YCu3jqaVI77tdxslOCaeNA1UdMLb6OQKtG7ZGKOZgSlxOuUxHjOCn1 -3so9n9ZghYyAc6gT4ILrM7KGLN/Mb7vxqxR1Fbulgc1sQK5UbISzOy1O3Q41KPHY -B3CBbuQvzjYmOCdWX4MazlNqtcoVKoZGIzbPhGeu3UCKhxyEjYMWLVmeR78ktc// -3YIlCy5iknuP6EVbZ75LekXJ4EmfGQrHOiQA4u4fbCFr9statED0m2xHmq76A2U9 -Qsn26Q1HMuYNLeUX61rJjrYpQeQ0HfI/UerJgQol2OHoMXg87jPMTGSM7hRtpyZy -ye+rePTacsaWLoI4oxL8NqKvboAprRwe/eYZg3BEU6pIBHGQ8B+tnu+rzQ1E/kqQ -GcfsP38UtODmM3co7ehHK6K7Wml2EmJ6u65JF5n3s5GwFDBkdBfS2DhRF0Rs5kJs -XoK6hRAlKf/8a6+mO6sBKcfRzfP/iYcgmnUWsDb09O8JY31XDSaJDzZ0IIwR555q -Gu29ju/TqA7wkcTqv993E0P4Jw4A5pWryqquTaLJMgc4lYjz7lLWXXhOMCU6SKXX -cZWWHkrXBMoLaYqeAUdrj5Bmi3xjGb+JAuoda7/1PD6nUIhQd/Q3RhT5fC40HMum -nwU3SSbJMkSrSZgghK1skYBmRqJaXF07YCtqUrQ5JB7zVAuRDIhGBBARAgAGBQJL -bumPAAoJEPw82L/Yhic73eQAoL1MKoZReOX7tMpKYIfBKIGWQlC4AKC57CyMHVqS -a4pwRMhMgqJx9z1CVYhGBBMRAgAGBQJLbybqAAoJEBd6vXxJKoRwKBAAni0pkJyQ -JsuPHsE5PZ1PyJ03y0p5AJ44gDu06ivitrrXD1htiZiTT+8rbohGBBMRAgAGBQJL -bzTEAAoJEM0moIHOq0FdiVsAn1DRRaqEpQZv/alMS74uBQRec5XkAJ4gdK7oG0Pa -ICJjEWBY1Fuh8n6BwIhGBBMRAgAGBQJLbz4CAAoJEOd/SFqBMtOlFYIAn3lGK61B -VzKX2Som6cf+Nv2tChMWAKCOo5PnS4S9/MgyQf6Foyap+rLRg4kCHAQQAQIABgUC -S28/vwAKCRAhn2tgsrv8/Gf4D/9wC7hcxcn0P+pVku803D/kNaNsaVMdVNN0I9un -tO1lFSIlCVMIMNDONVANIHC27I6RpOaJkwWoWd1ml0ld41xjYDjbWhngwiM/GpMi -z76co0OTnOwmqh3dZ0MDBk0x/J5pAuuCa+8EZYDLsDRV/ap+TcQlO2IaEQ8IdvNJ -FAnbVErfcyFBbCvYiiaFHFb3ut1LRviaQC/Yrr4WKghG7sVYOvkXf5k0NXPHPiKd -DkSL9AHyDZI/aNlxMUBYgt2QKwJCbacnmJJFlCd7t+PDrDH0YyC1m2LRA/JW7F4j -1eLCtCfycRfivJBFsuBTkNJgyJRg9dZAvHxwsc8S1Jg848Y6o5S3VvSsujl/tkMM -03ef4u2N7RymIOCYUR52YTer+R6Yx/bSggdnndXZXtvK2ACY+GhJn0qB+1i6nbQZ -M7pIcFEN39RTsDZoIdyKNaqcMQGbIQERdfoZvncTTu09e6dPa78L2ffhqm8SLPjB -6lLrRGKceD4uPS8ftBEqJLueVwToQi4u7gBKktXMTOpYEROie5lrwpb6Xu7UDIvg -vf5wR4RTo47nV0OmRVg+hRoRGNyfi4P4M1Zr+IpBcsXrOQ37qYlX0vCVjxYHiqgw -s+wzHFXctfroJh021x3Tz0rh0sCkUO9/MO9sY6oo5dpebFgf1PuIqrTC2Bqw6vF4 -Hx06ZIhGBBARAgAGBQJLb/NYAAoJELiSkx2jSGfvSlgAoI/G9kwkv87iofWP2THm -CRRhUlXsAJ9tWG5NiNGlF+22ZgSeodNos68e2ohGBBARAgAGBQJLb+2bAAoJEDUK -rXwrhZ3jjusAniWp5Km7z5AVCWfBPWOFSMLiCZPEAJ94gGYtXuXWHbVf6ZGrGuIk -Dtwj74kCHAQQAQIABgUCS3ABFAAKCRCdIPZQPjOIiPNXD/0YPyoVzaoRjlJTPPKi -b3/Idgrs8VNNEGFfKE+KLfR3zkY35UtPR84xlRiwfVxiLJ07C3L7QWWpbXtypwtJ -fFCKKAu9TAu4M6IOeuY7s2MnxOaajZ+mQ/5byIZBnQ2ld34sYQBgZ/THF8suCFEc -ifLY+P7sqyA5G/p2ExxeYa5+Ggae4zTjSM/moYjYX5jGUMQgDM/5E+EFjOWAO/HZ -Z8laGb/O2lAS5zulObuI8pU39f4PlCUpwS0R3E8kX2iLApSLNMLuwti0No8lM4FH -iYBAM7FRu6uP5iNcQeQjcYk/a6S16+yAKr7t9w5aKWD+G/V9HM/y1/FUoZhwXlAg -Z+PgTREZqUgFM5i3MgjR5z9oaYYkCB0acVQbjDFcMfSRC8YjFBPUluZaO6sC4YGY -udrUGmbD+FJe7qAVwcOq6iOIU84HZvHxcmmf5VFuvN20rUoIsCOJN2+jYoKdw387 -DaXfvFHw43tj6UNi/oOKj6/oZmQt+dFM6kiXhixk9NtE/WYj6emcvE/QY0T/4bOh -KZ/IEq6wVFPRtKmTebHqUGKue+idSTUCuyYNzuPFt67sFZmfy2eiXYEU84OUfoti -yfeD/P4L6uxe1G6xm+9+4ahf/H14N5xuLc059seczeU3sRtOQe7+TDRopOkfXLRT -8Z5ThCuE8p3pZS507yjpVIABVohGBBARAgAGBQJLcCEPAAoJEHeRQ9mfGs6cHGsA -oNon9719Jr2hQ6vSQMvYrlMccyOhAJsF8aOgB+MX1QPS/vxRvD1FJASpOYkBHAQQ -AQIABgUCS3BG+AAKCRAIw7pYAkl+sZ9zB/40o4bpIgDa5rv+zf3xMBrQcZpJw3Fr -x8pwNtpUmoj8yE7v6n2FPb5uK8bBIsK1Ma/j+uIJYZah9gM+hAt/FH1H94CAimUK -NMUIabHrbjHBHfn4qlRGnoZbP9l8EQ38O4chmC1I2mYSZwgfJFlHYQV6SmGZp8bQ -vHdlYZ38MQjSUKHAtgLvrU7C99GEvRAO3sc082VNcWpCAL+4Q9okq2ZTfuGnyjjr -aZWWvpIaQWOAU5pSzGxGqR8jVbRRZgCBkEUNeFuJV5/XGr0HTL8W2YpmpIpGGQYD -4x26nmIEj5mbYk+YEMp0edafu9YSNpRfq8rQWitF9elV78vrkCrvduneiEYEEBEC -AAYFAktwRgMACgkQh2HwCBUeJIn5PgCffBVaJ0P+m6VVMO7Nshbd7NbIVBMAoME5 -AI5o/GUWFvh7iF2hT42hCgrNiQIcBBABAgAGBQJLcE2JAAoJEEwefGVEDFQ3Sj8P -/RDpNyRwXyVOJGPcX+aCSJKPtCOBoL7MuKt72hdD4hJT97YLKbvam9v1gq3cB435 -dHnAsWZFdX30Jz2quitHzQIJKkF+jzJ5EEMhXY7esoYyt6NJc84W7Kb5xpC8PwCy -2rljR7NKFp4qridcqVEo05yLELaUXYk2T3iGmOjns5ecYrTZcs8b9DwjxTi1i13N -vLiXzPXw7mapbgWjblUToYAM/d/Bj21cNMm6s9C1j5wg7+3Kiz6abT+iZohoXQBG -bhiKb8pHJvBD17BJqjZYu91MMWQk6LDcUbKuvlE3xo2VTjRYgPOSmkoB8z3NK9DR -N+1pOKyUbDz8MLcrZSxdC2py7Dl5HI1JzzVQNo4JZVh7d8UlCG8Ary9i4Vynho7Y -EKd98ueVsfoiwX8lCq2xpqGxxwV2fBb2iB8YEdiugz4kNHn6dv4P4QrCZhh+k0YZ -dlFD9xI00FYOGMIITEiMPhg2fQJU2hmW51RaMyQvDfWwrePqhd3bHTUIDFTQD/fC -UOPj35p/kl6t6LgDbu7Ied5II2/G7/tIfYolVCm4XRVmeSb76ojeEjIa9NF+a1Tp -aZ4nGsbCGyG7XBnaf9HnIqNIsHpOCWcEr8w1m+OsWI6E+/WCyPGoa+8GyN/9CCqy -ziTDBU+5N/MP+1VpMrn1bsFJ2a/mAYzuY27p3lDfeTobiQIcBBABAgAGBQJLcGHv -AAoJEEnQdGEhveQW/OwP/1c2tlKJ/lRwxM9j4URW52fous/Q9Ys6wmCgnNb3cwMz -nzQZ/Fbp1gGDpevciDt1cuCnIZyiklsN3/G7AMHxFYz+aekwMO+pJjs0Ogux4KhM -udNA8aPqZ1qRCCRCFKjc7xSCDbNm0yC+LlCa3Ge/7P432Ov3S7Of1aQgVEN9mnrX -GyeXMSLiTHH+LLP23U7gB1XqSmGLhb4M8d8c9HOhZKiyftgQAwjElgu4pgnVrSHX -HMXadRShiUMBhxGE3o3uE3mZfQ8DfT96nk7tPK4kUUz7gk+LMk2jjsB4T1x58G5U -pXU3g8kWZh0DAGLwDFT+0AbZVXlKYyQaE8nVEM12jJPJuPRQU/RlqnpF+nSYD4JU -PFrgrulxWMSfkedaWPENC+g0RVK2A8mpR81w4fqx6DOCIm9jC2VFcj7XkyhyVFiH -si+1RmyfUR0UxHT4d4ZF+O4ibTKVZCxeB8rSOIx3mqNs7p+ark59KGZMvth9wbC1 -aCZ+m3EFJ8ofVFNJpL0ZIS1AflI2yytyrvK8iH7nMA8Qf+KWfsz+xCG7DpxKz//g -yi9Rq2n51Ps+jtw/Lx+61AjUCYi0NWbU+lGDRvlsuyQBtN0v3ty4l/PUuVOOAOgN -pewAhwdu46LX31FUgnx87gg6sdVJrUhAWEn86JiEiSCgRd06QiKEoLLalbIziq76 -iEYEEBECAAYFAktwbOIACgkQZGJbiPqZM6NYsQCgiMkGDEsyCSueV0HB3Ewf/Mu0 -k38An0MgpYukHBOqhEHZQ5fm0xB0uvjdiEYEEBECAAYFAktwbKkACgkQMAKNJEgT -tf73tACdHTVVui1hksqcpfwQd3fEIfzniwgAoJSE4e1uDZnILLzlVwFkQxxPhIIQ -iQIcBBABAgAGBQJLcG58AAoJEKps/C0U95hcl8AP/3jepLuq7jiVVaW0OfHeFNqB -2OvizwxBqOaCteEFG50gZuW8VmppAOa7RqUEUPq3fsop/pNLOXa0/RHYpT9oTtuW -ccVBvQV9q3Q9JorlLqzX36CYx297a7a7LJuKta6wc1s5XdxFUpngDMeylr0Q9Imk -HbQ6mvkMfA7eds0KHD5NXdzV9kYk7F5f7lfOM66Ch9RLfddcS7b5mJTXuiwyzC33 -Yidir4finEeK0btS1+dKu4qZMpoRJqzrP1588RiSUw2W2RBJtAG+v+XQnwrEnOAy -DS6YJy9JNdQykyWBRNlNIgBBznpBEyuNpc0A+aLSkba6XUUfWiXyYl/okFNVNp+R -/PoQ8cTUSzndL5Wb8QtZo5DTnt5plfbrf+32PO5raQFU6gNB6f7aBh/32diy9VUd -MsHjZgBTkzD0RaPCj3fevsf/j1rZaeNG9FqbX2C0hBiHAN4b/U8+lM7dFndtpPRW -AvIT7wmnX8foXJPPFu655wHsfznDb647c0b4SItbzhhcIFo8QOIDV2PK0TdqvJ1e -WsB7aaTq/33MWGpBxlWEK7KR4D93lluK6oHFSMKxP7oZffaMk17dvS3INEhGmyNs -w+JAk2mx/YhMxJhPCrSTg8ge7/eQE+9rMsj2Y1m75sK0uQBptL+5J8rCcmyV02lm -W2ZwsiihLNUDycfPZHydiEYEEBECAAYFAktwb24ACgkQFPYxDS3tCMshaQCeOSgm -ZuoTCfQkiZzXXM3AtfcEOa8An1OYlp0vH94FH22yuQpzzyWOzk5qiQIcBBMBAgAG -BQJLcHGtAAoJEKnIbI3Tro06NloP/RM37enlf8NroqsbNRHw118j4mJRcQKWarEy -2rNHGORZwYkf8q/WtL1lPT0jrPusc/awUlx7THGb2BcNysZUE3e9mve41qf8EDW6 -pWu1wkt+7ltTeTj8hxuVUiTxtUlDrc3a3lt4aw51tiVwIr/ROR5Sgzb8MrLIwPoH -FfmLxPOMlRRroIAqerFkzOkRvhgcbuf53kwjzTmt+3niw5Zg+a04BWfk1bu2OvSZ -MYvPkjqvuztDwT+fV9i9fsorGj5nWib/w8AsuL6MN7k1FgyWq/pMvckGkhxbL1u5 -se13H0gVgT9i1D9H8lpyUHhv8vLeS8ut3wq1Yr9kL0TObAPpP9ial8uNANMrzKQV -86uplAfDYf8wt/RsT2ehoypR55ZhrWO035VSy9ByJkH7Z2QuUzXHmjvldoH79z61 -72wIK/LCuLRpmqkKlJydFmTUHhdnGLwSrk4bNonSy3p49r2SgI1ENvrcaRG8R25l -aCGdGnq2qCkVSOYerC8U1Hf9Go7s1k4rSuB9oAzkGf8wrHY/HnHNKSUQYhjjjFaV -esHkONgAL93NsHYovtE81EjPrwW5dF24PwFZeYMB6DHvC4B4lfS8tmGSskK+T+mg -qDK6A8wpCuZgOvYRORWFl2ElBq2bKVrIa4EobwexP1Z0KrpxO5PQy/ICa/wpy6mW -X4u9oK5NiEYEEBECAAYFAktwhegACgkQAxLow12M2nusfQCgpsnZ8VqD+vuqnSrt -czYXWlCPtPoAni5zGcCJcvBr/4pwSnEq0XJv9OSSiGAEExECACAFAktwjlwVGmh0 -dHA6Ly93d3cuYmxhYXAub3JnAwUBeAAKCRBy1N/41MPxl3ISAJ436aDV/D3Q9ZEk -uI+7wKUVvvaD3ACfQeW8X+NXb0/YM4Z6m1JxunzULyqJARwEEAECAAYFAktwiFQA -CgkQmwviTVTM1b+FKAf/QfPLuAFH7aX1UAAD2YFeGeErS46xsXY8PHx967D7gbay -gnSl6BAHu2MlnhR4Le5UtPgJl+HyyQPYVmKKbpEflBljSFiC4WFIoZZiRxz1fI1c -lhB2k86Im/SXLR7zM+smXwRz0l7b0oYtjlw2J7YvHCykad4t+3zEp9Slirjlq5GK -/IC5ha2eDzizBz258wcY5RuIBefgkTVXPl8GVzy2FwNgBRlzqTzmab8wUaAy5ERA -J7txIa1iuAig3p+XhEXI2bUa+K4CJpdw4iKvDahBgF11yUXX1aFDOSRBwdUEi0Ay -uFNyPb462IarUJXn0zws0shORSo0rZimcDa8700B0IkBHAQQAQIABgUCS3CLZgAK -CRACf+VZ3zOxutGRB/9+xj8K7a/Zv7UXn9DjOKLMqsJTNbMwqWNMPwqD6oPLFcry -C+2jh/yvNddBSnxrpVpLf3NL9E0iIoU9YHdxtlWrbjqgV+LKo+NPF3EYamWyqNXL -Doqhzyto3chHQjM+ZtBXcJzw9ilgw69ses3XDtr8Y+dGsfnJ5WKtScIgIdgJ8hdL -uFT4TnK/OJWKNN3IgyeYJgJrwCTqgk4ayEzE6nhwWpVStjfBVlUJgGJutrXdG5q6 -8SmbzZ0tZwWVEb9G9Ha+VeYQC5u8/MMFGmkypR+CLO10AC9TlXn1KS+f9lB13uoZ -CR/RNX+Z2rpWgVXhjhI4oR06A2hKUUEVoHckbzQUiQEcBBABAgAGBQJLcIt/AAoJ -ENwB9eiyjP8N/QoIALB4R5KoY0Mv4Ox7Z3YZ8paWCI8LTrN2+QrWqcflKX8/mMfB -H/Vlj3466Bnf7dH13rzllQltB+OZPZPCeASFf7d4HuEUwjvxj5TNfMZy2UTVN7Nl -COKn7Tz+IgSk9UDfiw2pqa2cwZ4mFg2mdv6+n+RoOIVEg1ARXD7XrYhhay/rQMyD -SfiywRh0EGJ8At6spJWzK/BJoYvfGAwHUqjYn2eIlwA+LS11SHF+BVJpfRsoRi7j -uHQzg53EZ8n0IYRaNz1HHnyPYvNIWnXMhMulAdqO1Z4Ki7M8R0P1cfX0elA/KA7Y -Q81Dr4GYD9lXfI1/ABPhxCxwJmcB3zzenJGi1sSIRgQQEQIABgUCS3CbYAAKCRD7 -E+LdXKjpJySqAJsEKLUZMHBDP+gghde6K9M/UFNHSACfU1pgZEJkUD5nTpHuYon1 -y9eL4RyJAhwEEAECAAYFAktwkwgACgkQfpcqy/4KevPGxRAAiUFlGIgtnBs+kP5u -+v3dThhtsNxhGar3J/m/qxae5mCn/hGsGZs4JgPFeavr9WHgh/6Lc6JIIhhPrhF+ -2DAkCC3ZY/yyhXVYQ+OnXnxY7+bZwq31mx5Leds6UEUgVM+dYRA4rQXGqRByPEvy -5B09e/alC67ifpOqEijp3EzV9LFi0uf5jvnfSwIfN0OTCTjp4aqYO7t8sG6nyF/P -C9r85/2GPr5j2+DsC3aHj7knjIoI9H65CDn9Mjhm7XGce3mxamVkoNJzTw+8PhiK -s3YTAHEBj6xQjn45sS26eNof2SEZNqiUp4xxu4U0Ai0Un0n7y85I76SxTZ0ggIbE -9XOfB1o6x1bRv5sDgperq0/dgGUAhsXao7X7CD5dl3kz6JkKxREiRa1tCJRYH92v -7UCBvsQEJawnZCxuUieBJuLi6TzFowmzFAPZGji6QGfIt3UU63LVvBTieL3wz8/K -CgoDPscAQOJSixkXpurVu+eQxrlH+wuqRSWFYVwnpU5ye/Lm3HNCI5jNpehTKmJa -VD0uXvNh6/cfDT/106ePSz0gfXhEtskZLLHPAoifyKXR5C+sGNl6h/61QMyklSSN -OEHFyeIzM2/m4PJcRZEb2W1VnZsvCp4tfkPnavcpbM5EudVj+hL8PufPwlpGw2q2 -dvR8SIt0WCeqkfOyL6RvQOcstumJAhsEEAECAAYFAktwn9gACgkQY8Q1BjeyOHLA -jQ/2NnwiTPfG+WJiW5GK3P69MlRtYO2XaulafI5No6q+qd1SyjhC+u2Zj6Mfu6m6 -0z7Y+aoFTU2MY1XWNGHvz7nBlzqUtEu7n2paw3qc6eew6Dnh/fqsl58WClou/b2D -tf8GlfR1gOtSjVcbeTO2tILD3Ds0lRLcqNC0WgQwfIg0w2RDbHzKgANmj0fmVSA8 -HdXj2MHPhq9S3be3N40zgNO70KUaqmZuo5vl3dD5cPrMqF9PTWSHsHOv0gsnu1Qo -M4CRHxlqTEO+HM4h04fFFgILZoHw2AWBD+TEZn1bnmMf2HS8cI4ZiWgCinQZb+WY -PaWxSNNWdtm3vekktIGPknw61gALAaAY/FWv0ewoFZhD8BL21e/2SW+eyj9CGVT0 -I4CZTPDjV+MywsnCdEZ3UuzhvbQ3cOroJZaHtLdzgPfV2ojlAKbJ7YsclHg/nFfZ -52QYLWrm7vWAg1UG1Z+lIE1Mx7GP4l2sCeSc+FOhg8TrSSOBPhnWwfJ1Lf4OfdLC -eqTmEydrcF0rEmjuta0LSOCOKH0DktodbMHALuXQ9qwLtX6RgjROjdFwkPbBE9Wn -W70ToF0YmP1zcdw3NTL4A7gNxP+L9YVeNTitZXWCiP+MOjvbsfiXTENq6VzXqQ2A -jG9qyt18OePpzAjvXnDo132k+lFC9GxUGyhx6reaxZ4KrohGBBARAgAGBQJLcUoi -AAoJEDMlX+ieeD4FISwAoKVDMLlfWsXopO0fiia/yEPE4UOPAJ9WRYAhN+cGpizb -NDosve7Vyfzvg4kCHAQQAQIABgUCS3BNVAAKCRD0IcaDXi3jdLCUD/40PfaYdX8L -BfYVV04m0JLkUjWlAXsl9jsGw6JZtwTgTWzaacLWcZT/6sXmT072j6wwRB1SUtVV -uHIblwNVPll1DbTft95d3KBAkm7zM5/lWwRabrH/vlsDXt+LUWg1Cz3iXt44Pm+q -M+6TqeTIeNeTQESDWVYTExrignlVYwC9Kp2yFAQssc6CxtSHoYxn7aYOL7if+25J -r0BrLREsyU7sjSl/7g09a30Ai8LkGsiG8D4hqhGutqEY8YoLyJAdnYy8tEeocysj -hbs7US1d211k3EkWJ7nxf4GO9RuLMxOd0KaBab36j6zry6sh/x+1rWhZXvbVboPJ -E9NLGrNFa5DwDRVPnpVIbuwhs+Jm8UR3g5rxjq9iHHN7IRFEIQ98rVC9JLbfYm+I -s/sCfRnOb3sM24Dgsmk00thE7p5ztaH/aTQCzEetlNadhK6BoDtzvkL7ShhO/Ohu -+kUfXW7K7P/60ld9wz9At9N5udVj5CPTPOBe0LX09riS6dHT2PCgIuy5ekrmbi4Q -CppXDK85/D7HXFpsQWF+FXokTWfDQrBP7Hi+a2jObu97rlbRcyl9Hknt8jOvL5DK -q+xtSsj9KlPuA+pSdE+KrEyjvVQi2gF1YpuxqJIlPFBccqXUmf5MR22Z38xREtMk -7Ma3zce0de9nvvftlGneJ+J493HCchNpcIhGBBARAgAGBQJLcUgIAAoJEIQZ4Nto -vaNC/8EAn0knrNrgztkx7uECmBcIFnvxjwEAAJ9067+vkuiZqo5FNNvyi/UH0WjF -l4hGBBARAgAGBQJLcUgfAAoJEH6BFKB1yxrSoyMAoMREh7FX2GWww7JH7OXJrc9R -EPs3AJ9K5pg6dmI735GuyVtM/B/KL4kQxYkCHAQQAQgABgUCS3FlSgAKCRCrrhE6 -FmiRxy9fD/4oHqwpdNiI0mdl0wNW/PCRsGLdmz02GfW2Fv4U4gYc0e3dGktjGJFs -8eFIIJPvHrUQxT03jAXsdxviEfnMKYZ7fE+wwsqX+KtuSCjSrcZ2d7QkUHGI98P4 -yB6foNNcZyZ6IGYrVRtmMg9oTUrNOq7Tt0QQ/UAdmVVB5ztoe/fC3M84jjABhH9H -ftzEb1gIAgGzAjIXe+aYmkMSI7tvlwTU5k3CWT4zUGUPR1rpexVQSaF7HPndQoGc -zUO8d7yXkbEoSEnF/f1RMkcS46TrEitH07oidIA0nGYzHgIEhk0Z1ZQqrvoiMGmw -t9Yyxm4coYDShA1aUBD6ANhZqhgEXrgSlDnXitYTbzI+iLGE7/IXBheP9O0QNmBM -d1WElLruo+NuyeZKlAgKJAIXmJ5/GvMB/I9xuAH2Rc62yjUNUUgPVtQa4t07T/W0 -C29k5t5fXp7QwYvI6n2lvqI1aefFoVA+kUK24YQtzTvGXpiCabSUV5cwOyXrWDeL -INx+Si3juKQZt1Cw8LMJ/ET07bbs6XXUQBluDZY13So0l2hYB4pF9dDN3UfiQaXg -VxTwTGjPamCzT8JWib0snoTHH3nhWHWlrzArKrkGaCx4u67zb4ztn0nu7khmQx8l -JjrQKIu6sOfoOTQKMp1iA7VQNy2DunMGwpXWjGvPy7V1I/DaMnWkRohGBBIRAgAG -BQJLcYiWAAoJEI75HvWRUjw9Rk0An3HN4+5+pCoJGIT60xQPoQeVyx5EAJ4mJ5AH -sgnR5giB0bFWOgLQwzX44YhGBBARAgAGBQJLcW34AAoJEFBJS+3iaXxE0uYAoKcc -KVQlAK7wcGOv32Z4XIwZoQp3AJ9GJNuqRy1U3yLgOUwEHW3jgmyFRIkCHAQQAQIA -BgUCS3GNEAAKCRDQA4UvvVJSnhhzD/wPN1nWFu+qxyQ4QuGtnqdHFK7O0iJ34GRw -pbM3J76ixRXiFJASjEp8c5iNYbEpbGDZDXUfHjx3M2ggjGbsTpme029SvTzpjuJk -aod414c2KAM8Pdein9HiqkxPzHrK1YQ9GYUhfnWTrfip5CEm9nW4aizChD6ARLtS -D3GEQyxHo1mB+OBIdmntLBoNLkgf8BNkUc25ZA0vdYn/VKVNo+r1L4qMkyNONXfM -v9Clzzfs08RPAd3RheLWclaK5MOneqrbgCYXfKOGvqBRuizcl4EzVWZNPrkdHHZV -FC0p4u30jz6NiLLeCDNXroYoUzg1nmsw1jkfY/lMhVvLBz0TnuJJ21dspgUW3+Dk -MWxaORXLRRPYA+TmvPwKjLinQGsMxXQjyoH/rJ2rMPHD32ulabiN7OVLyyHTpHpU -YB6pid6xgm3gIYCIbiYr6243shy9Bo+fabMNMfOU7k68r1UCRM5fvGrK7IBICzlm -h+Oo1Rb8XcQb12vubnMapipg7LbGyN+ww3iwQ8gE0GQOr+vTfyv0p/X2oLyth0hV -VsCD2w213dQe3hzKDF34ovkSzXUrakLzFzmL2iNzX6VqW/iYG6SXdBb5df33EIwH -qmBFLLmv+yrKARvFU77y04HWaVlmkxrL00bI23757wnRgfCQ76WB5dtRo0gHl/kn -CkkrZgu9bYkBHAQQAQIABgUCS3GpPgAKCRAxfLvmQwQmeW8FCACT6WkGfFvF9Nh3 -RKLrQHpdrOaXyCfJBpc0YGfVmsJDk9zggyesBbdAWi6DOAo4u5Fl25HNhrZYi8zt -hAiFhlEsbyGDViEsGEDP3FdMiHh38iuZABQoZoqi07dRO9BN7XgD1dVtj+UZb4v4 -jwOzfewZ6KIRtGPjHe+sY6mh+UH5PRyQHj27yfJTbxwJ3h09NUXM42WzE1EI6xUB -vvn9SZWuJjnSQZSSUbFTQBdeBynL1X7WT+uqCTMvhy50Wfr1EH0k0F8MyOGsyzUM -gLUIupvMzJ9TPch34d+GQEZvmofu/UWcHj2MvhCtmV6/0nJw//oAauQcsRLVwtgH -qrnQR/gciEYEEBECAAYFAktxuDYACgkQTF3ZWfsIeLs2dACeNA3MWn/UpmSdZeV8 -T+XzvY2NRhAAoPnk7fpbfdy6Bfv+2BTydoNfZUDfiEYEEBECAAYFAktx0/sACgkQ -A01ay6B9fV9+5ACfWMWoX5wq9LWyRuP+IqMwPn7yUAQAoLGGlnRzbC4OXgqOpGbT -ZeWVbcJRiEYEEBECAAYFAktx1ZEACgkQLxrQcyk8Bf3lQACfVlqj242Pd3aVLisV -a7f3io42cXQAn3tTU2oQLxLMfrJgj/iso1tW4uLciEUEEBECAAYFAktx6lsACgkQ -A7Ph1ljaOB2OQQCYnbYuc31qSzgkBusElJ/qv637ZwCfeaXdfxGFyiAe7ZR1qm0e -oynD+euInAQQAQIABgUCS3H67gAKCRAxpj2W7BQLgT7jA/4gnKecpLCFbUdlqm7s -XiB8anmDJW4dVYkCW3KfE0NCq72p1O4IohNlB6aSKWQJaq73Jh+s0kSLQlw2Znku -Xrr6iykP8+6se/M/DC67tW9QaPM+22Xh+A8FT6V1DTe/a5KTpxuOEbyHvBYVrCq8 -rWhF6cpDqVcjdy1TdWletBNnpYhGBBARAgAGBQJLcfr2AAoJEP1viMYh0Kcb0C8A -n3MUyLxZlw/dgxcTZNF66Xh+eGZSAKC/CK0hOnmZeVOOSAn+w2G1H/QfyIhGBBAR -AgAGBQJLciKKAAoJECS3RHIB1yrBvlQAmwXucBBjjz8D2v4X1BuwbFVVtsBaAJ95 -C9KvnqjG8NCV95bn0jHchBWFu4kCHAQQAQIABgUCS3EpbAAKCRCUhCvIblEcMaMt -EACCO4sOUSOXW8eG/eqhbGWdD8zvmRIV8qR2oQNt2tE61AojCsE1M63Q6aiY97qg -8hGBCQASxb9n2SHz0aqHFBUCJ7eISFAve1OvYfq1oclmqW8eLACgP3lOniDnXXRO -UaqM8WulEExVJpmGyS9OLLPh8UdIxKzc+rGKsMNHjFtxpk7VO6dIkA/YgJ9Gwnxp -JwyyCYxrmsNC+BDUobgDb4SPSbn5igqC7IqXr5wUP9fh8tmVxQKMiTDXEDtTItXj -+lthCAWD0IVSod+2H6oQETa/7lRvWgSpB5yABTPTd8I0rsNwrrYPGWg7JEKUOQBI -93FVk56WZRpGcocs3Y1wyODWUSy3vsV/nG7MMAi/y1aaARhtP6Tej+FXiFqezH5R -UZfN98QINzIshBelK663kKdCzGtxDi8AvvA8nnDJZvSFX2mckmRymqLWNt90fFvK -+Ml942ucbelivR3hbsW0rNOyDUUo+GrVpeWAKQuBrvjqqFo6jEWd6GyfLGafT4Au -di+yKVHYMVfL+NucdTAxHGcM7xC+wjMKiHrTXh/iFV4qUxwPwWBWXkHlMtHt0zr9 -eZjE+wzK/abSreT+5V/6l0VDo5+Eqk5VMFntYFHW/XPar6aH/0u3dbbiDtWZOMZ0 -CnaozP2LhsB7pThBxPezysKNdYDJs6vBq26K2hXmiQQ2UYhGBBARAgAGBQJLb8QS -AAoJEO6BkqbkQ9bYeGwAoI29LqoTHfBfOWq7zGfPL4bQUP7tAJwN3AcLFl5DCYI/ -HM+bIGH+csOheIkBHAQQAQIABgUCS3K2yAAKCRAyJGGhiZgMm0RWB/0SkhOvoSm3 -hBe9tZoa4utdY9uD8MHoFt6T4+volQlGh4wido9X33NGfG5s+JVGUSnbFFgy8Nhq -DB1NvQ9Un9gexc9+9prbJAaq2Q32YOLh2fkKUdw88NrIMsvQBCnUZMXv4YdrjvxR -tByC45Wo2u9fBbJaI+CYe3PVn0gRxOg3qHYwfbkUOzwqNISujxDOEwrzOSbukXzs -pZ42VmKz+CBqt8eiVuOnwaW8SMtOSKo7w49Q/nUMa35pVvnjLqZksqpDzI861ALY -7ZFYwbdaoQcq5uT7LtjOcU3YZ2U0Hb9tGseM38gU2CpDkHLHWUVCTIg524JvW2B7 -FAdl9Gbfly6TiQIcBBIBAgAGBQJLdAb2AAoJEPQwwUXGQfOMQKUP/04L4miGH5sC -r8pdUXHGi4JqAELuuSOyLi51QZoYpO8c9RSH9qzOSqmiULpxIXQ+La4/F4ammARV -Mv1qr8D1gdcy06JZrgQaA71H6rucZDl/lc55+1lEQzTY+Fp8+rYRc55o/4pcQHzG -EVuWrn1yZY5z/rb5qZMrf8TXZ1uxecCSVnGECCpLPA46GlXqYH4nGkJv8UUmn+fc -9dTfL9HNOUnvxQnvFZHMFnwdVU3/4/O4crTj12FyAMygSSY66k6AZM7lsjFjT6zL -2LGReT6Ij+eogBArv2M1odAnh6kABue2tIIlbHv0k8xSbgMP1H1uJZ5+Sg6YirDR -vbaRh6lqzZP2oYBEteD7qoXcFiPNEJLjYefz2mNo/ilyZydhy/HEAccN/BNqflpm -JOENUGiIxqEhV/55GcOeYoIvVPCfEoaVQUZuk8c6OAHAibXwNTLB7HtNpnJwl5lH -9j70/A4rpBvCtpIL3/Xc0IlR36CQ4/aowas1IteDi+HDAVXCYUBMuKobM43B4vMA -9rOvi/Jye61oXi4oyDyldp3U/nLcI13tT/HJfyfeXVpDmlzaeIRgVdLkemffe3C4 -2VHbEW/ipYwtsrWw/EjevL8z25QFEkxaV9r5pp757xQ5T3xBjpS0z3UbVwsEV7U5 -AOp1qQjRNE9SHALxT5fdWjaLUTKe8HrLiEYEEBECAAYFAkt0DQIACgkQacIxuZql -am3bGgCfRQZD7g8J1wDJgDKAzE+G5TLg8B0AoJ5QE8UU4OABPZQ+LSETzjFB074H -iQIcBBABAgAGBQJLdA0KAAoJELjlCHdmR1qvv5gP/1HWzFGl2p6aUOBQzl+arVt7 -/h9DHh63TG7vB8WV8QFsK3knYOHCoGPMj6zzA3msB3VDQKyfrVYcV8VTh5Zl6AsV -7KCY0LXovldOvBJUmJZlkdd+uaeueAsjTeKVU1/x/4DVpLA8f8zR88Zh1hkqJhrE -gzbyz0zvlLgqhm8CnQpjJiYkLIFSntA2/NXi+WfpVkh26zOQlcwhgVSAhDasS0EL -Ht+9Dv9x5CvabtXwcE6ICQgrIDYDzk98Cj5iOsaQrDoxR3zTpxZRRW2ph1ATfoxz -0g4/ISefGQI+aP+TTknicRO/4ZVzKUWoHCmzXGqLs/JK86r/j08rXvFCLbZGigVM -A6UGw4T/VHdD8wieMw0pYP4EtlvgHlFwuDRg8AZx8COv/eZhwAlWeaUay+0UXhIh -H4lpm1SCbr20/jppNINSirZHSlJzTy+ViGyGi8ATjlFtTf9k72N9gvOFlWrzHFlO -mXdB7DerzqX5rSKGJiPnkyIFUa9rQrlq8jnG9v9b7aWptEeT4+9qJ040NsX8i4ya -RrZLXQK2WP5rWTTRfioVwdyHpZYFCWe8MH9CYa8J0SBWAwwpUXryUFdXHodScYFm -EiT3ViHpl+H/5RziumzwWfqYiFV51Ep6XLYWWjnyn5JMFewjaWeUy6udwoXmc7XG -RFh2cikV6jkL+VPUtGT7iHQEEhECADQFAkt0HeAtGmh0dHA6Ly93d3cuYTJ4LmNo -L2RlL2tvbnRha3QvcGdwLXBvbGljeS5odG1sAAoJEHFtRBM9jCItO74AoL5/e2eA -N4VOHTA0QXD4iX5AT7ONAJ0fmj3LJqc18l8eTIuNcdmiMPb9Xoh0BBIRAgA0BQJL -dB32LRpodHRwOi8vd3d3LmEyeC5jaC9kZS9rb250YWt0L3BncC1wb2xpY3kuaHRt -bAAKCRBW1Sk+yXoGVNo9AKCsUa8dhvnLs167eUClkLdYaRIrtACgz4e8FL7Dr6eg -YqWKAM05rvbDxlGIRgQQEQIABgUCS3LIowAKCRBzHK/TU8GjL4qiAKD3jqiHXJGv -qMFhdBehloFhSVcjjwCfQeFiDtc4zHO5XQUPjzbuCEUUwdaIRgQQEQIABgUCS3Mj -2gAKCRBo81j2wTlkfM69AJ97GRYXp4wyZEMFO4fMFSgDveFUkACfWXz9nQT3ZuJC -MAsx/AzNkkoz2QSIRgQQEQIABgUCS3Q9+gAKCRDlMRXluKGcacDEAJ9IJYbHDU3o -1+LeRbXJYlXSAMjUDQCbBoXfmdgf7ivYQmFQNPXIOWly1wqIRgQQEQIABgUCS3RC -dQAKCRAbGy72NBX2diV2AJ9VZNvt6a4C9V2KvGF9+u93iW79YwCeI2hLzbg9j34Q -hcwWVvGJCMFZpqmIRgQTEQIABgUCS3MQ6QAKCRAvlRUIquYCLmTaAJ45ED+OoXwa -xnrPgqLxGagSME1NPwCgsVaKk3dJPtiRh/CQPhwDdBBp+aqIawQQEQIAKwUCS3Su -DQWDAeKFAB4aaHR0cDovL3d3dy5jYWNlcnQub3JnL2Nwcy5waHAACgkQ0rsNAWXQ -/VjJmQCfdYFi8VfKs5wdW5M8G1PvJUvZVukAoJFYzVwPO+cWE9XM1UQ/H5LV0lkD -iQEcBBABAgAGBQJLcvygAAoJEBqCrVe7WSRDfxEH/0CHTfxIETv0/hOqGKOYLNiW -uxr3sxf2fI3Wi4vbEC/i+srUIHHbX514Vtv8h6Viv5E7Kqb3krE8MRN/6pZdwnU4 -rPZ6W4G+IsxQYkEE93USeeZiAfeoqnc2QpF060cJLA7FCqaqDmssstdeEs6XRpjb -A6z03eeZ3VhBfvgpEJX1/lcBUZsb3uMA3OA98Tkb/nDRYFlzU4I4spun9A7Bsvu1 -iMntL6G+mM+l56zQ4xqw6kOiK9ozezLZviaQnHCLPgLBzQOYYGokOxwNuIFxU8oz -SZePcHQwYxpa4CdfQWpk9+xl46ZQvJQX46cVf0zC7XUOEMW/6+xhKaVhi5exuGGJ -AhwEEAECAAYFAkt0O44ACgkQM5YViOHCGEXacw/+KmjBPch2P+tKYuYL+Q6aFRxO -LiLe8Uy+GZ6enTMBnBstLee+MQ+pecdlRV/hyejqLfBKJ2J9UaVVPkAUDqBQ46uy -ardb+32uX5MuVqwSWlgaWQmkoERxpxP3fso+7kItbVB9uTNDHhs+KARkXU2w2ou6 -Hgb7uewpeTI0acted8ocNPZof/rG5DglTWwu01bQ4RpPaYAPPpH+yJJp4qNyBUXZ -fxbIzl75lvTRWE2Q2R8PWOdC03+Fc+weVzu5u0itp523Ts2UyEwORq5co9A/fE1R -s7uIRzHVVG2lUtFqMKLSmxgsdj3NG/5DpCxf+u11KZW95ZM3tDv+eW/6e+Y/b/ae -4JC/9t/H7FdopIpWoVi6IhuZ2PXHZ50r4/r6eKcVmhubv0LCazr39Y0xHoYa3Z/V -ov16qrkCbl8k0+4MjZylTdk8DYp0vKNhydLjIjPAiPNDWfsYDVWUqiVXG8l8D13R -vx0H+xyjo3TY2j0W+cFGjGnYdGB7STrlHceOjy3tba5Gi8H8Oz9pR+sZkM0zX/oZ -HhsLs2Bh8qmwLrGDGXZSqzpuO96qXB3J54W9tLXp8726EpOB7o6JQC/lImuGYEPA -WRmhwiko5kSCe2ZpnLAzxyXckaPno6tvCVYtNuO6u/jW9vY+jQsY9HBbfTZ1wh9N -ETFtFSy6/xNkrjavsXWJAhwEEAECAAYFAkt0emQACgkQTMIA1oBLMk0V4w/+J3QE -uq6MmG80yA2Hf2m/1cC3SbYE0K4a3NZx7s9ow8V9Zio2Mko8d80m1sIkN1yz/jDT -J3dEtuTfhqHOjYntA7BTczqZV2PkAx/stZl8yxASVhcKB3n8ji6rw+D6B/UMgGnA -jqqvKiiukHxGZnKDKqMrRD52fRxfh+s/XPxDtlEQhJrzmc8tpaFyQjspokZPlFh0 -leSPepa0K3zkMa/BqYyzLAJNnxJh34yUtYw/BgnT0tMjvaXMrAVsUwuKPrHptgAy -/vTYBtLdUdwleYw6ZAMknqGyZjxS7xMwComDC5DjHMMOf9f3rO98xri2ngndJUT2 -svyq0CAn8EHP+hUbxz6xItPcePcNu8Z//R4BrJOHkBx3O0/7feoz+tdgFNqfNaZq -aTft1/0cprGsRW1yFKskFNzCmWcWkbEZZkG3ycnccWNKzryDSGCwkeRda1fzHMEb -/2jO0bTYdbMAXdQU3fhRUKU+demUvwhOleIGD9oNxltXbACvMs+OzCUVGtooXzbR -ZlnHwtuj+Rd1myiLt6CauOd8za3sBPNATos/IThK9g4t/S52t3YQ3g3zYauT9Uj1 -OwAqIArKMkpTTdplTmvWWAWLFSrAVlazVbum+NzEV+PH8fbWfHq1fhCp5d/BMWfa -wCJcTGo+v8zVGxVd8i98qGYQPyejUMIOZjPIpziJAhwEEwECAAYFAktzEO8ACgkQ -rDCHmqtVsxKglQ//Ri9BnWk0B+kI0/NzyEKn2NuyCPDn7tSxXzkAwb8bq13apvZG -exz8uE3edR0DFQOY3dtu8ZhMvjg1jCZKlD99LKuPLaB64eIq98LJtkuzQeALTaP2 -JP/+6PDJayRSGRxhXEoV7Z32I60aIxAyFYxefIrnfkl2aWZ3E6Mve/VjF1Ipxu7c -ol5omDN3yWplhJrZO69z1TJ9AAeyasEkDqzw0r3/JfD130dpk3vNDgN1uVPhO0t1 -labUTy1irijmmugiuewAtWtOA8SiNzOBXPldG5NYu3lju2ndR0aDYQ4Qws8V3yn5 -4peN6w4K6Hfjbs3rruHm0kxtnzNTh3mmmQAkJwsWOXnhp1Z4gApO8yOgTH0LGnb4 -YIlvHp4vAaSa+RimutS7sNDzvQStObXZrKjtdAFLvjw7JWlapsETBMaT8LNcEco4 -qqpD/oEj9uaTBeIq0Rf+2x9cvKM37fv9meIDqhJ5JsUb7mG95dVM8FPHJDRQJsfM -eN7mD/+ThBK5oIBt5hjbFS2Ahj1pESQIBQXnjuJWXgbJtM1pXj5Co4IL3Mqf8ISV -2idd/DfcGLLW8Dv4bnG4u2+bsrAIfA8oQwjGqZLRJsGGge5inBdFWesulVjj/hgl -L9tS0cTPNV75j4YoAX8jZqlM6r77i6617RDu66T07xQ8BwEeXao+8VwdudyJAhwE -EAECAAYFAkt1hBAACgkQ03MPsyR4MiBWcw/7Bf7ixAI7x6itq+SfG1ftXK2vBsMi -9WrZijJZUm+RaWKLZwjCqWCRyXnAEnh2ZI613j+CcnK/xyhHzIp4dIdyWH348jtf -soEq7LYFoqvwFJkLfZOVWlX8PghSqqpn0PhbQwyeRYIRjqjUfijjAMzrmaket/CU -otrRKfu4QktFrtIuwwGdgUdE1lGfYJFDeduRTfigWrnxDj4cNHGDzTbjvXFN9OHo -keJz61y9IpE0fMhmdHFtAnNreawacYdBZNwOjA3Vv4Ig3ao/ColeJO8r9M4iBqet -5wo6EEF+bkOcdJhlg7xpCena/r/qxBqJ7fiAOd5JtNx1MwQT+phQs7LGE5/f5nXp -igciuxISNmzVnsMvEepHqt3EFgsBbFQS0zhIlsLHPNpIu/GgFIGueHZ1aF1uP78/ -YacEYHvdMzdR/bYPzdQZ0wzhNkYazNnhMqrl3H6iWMWYUOdKNyjzzjz6bbyJP/It -IkjMhtpYnyNTNWDIFEusRNA4Wg13Q32aTRvtCBXMpaQN7nZfr8/trz6J6+G47zXt -8dbhKzPAsg29wV020KPmN6wtQP4HZJGbT1Jh0oLBT1BUhSt15IZKrr16dV3sVBqK -WEFptms88y0Z0x+6nY26MQMTV9slq6mjH4WHJSQ/lYJM7rf4s2j7fiVFU2BE8gTv -+qbXTVwjlWfretuIRgQQEQIABgUCS3p6BwAKCRDxwFy6aWu4GVUuAJ9TdIuKO2p9 -EySSUY6B+/iXNX0SQwCdGr3WNdXn5qFwbDU2qGMrvpubOcCIRgQQEQIABgUCS3pU -ygAKCRCye5RONIhOhUlmAKCLgyx7cACCtk7AWw0GBdqRJ9i3JgCdEWRCjaH4C1T3 -PJv4AkE9awKbqwyIcAQTEQgAMAUCS3v1wykaaHR0cDovL3d3dy5zYy1kZWxwaGlu -LWVzY2h3ZWlsZXIuZGUvcGdwLwAKCRC0deIHurWCKUCzAKCr0cb8PL7AOBagdv6U -QZdi/yEBpQCgjtX9SV88kJEDNqsCtpx0VxGo26+IcAQTEQgAMAUCS3v1zSkaaHR0 -cDovL3d3dy5zYy1kZWxwaGluLWVzY2h3ZWlsZXIuZGUvcGdwLwAKCRCUj9ag4Q9Q -Lov0AJ4+iXXFDE7BtjjPD5dkERDAYI65YgCfYdyVMwLVsfRo/xGcbOd5S6pau5OI -RgQQEQIABgUCS3bbVAAKCRBYgr49723CGlNOAJ406xrZlKFIlTMH43PPAq8dlR3l -8wCfUrBfibwf8nnaSdLZSZXYQOR+xf+IRgQQEQIABgUCS3g1agAKCRBXNz1tSONm -zPkFAJ4rVNbFq357TPfZC8H/bS7bydrKngCg3vjChlI05N88QgrKM1siUCv9jg+I -RgQQEQIABgUCS3g1egAKCRAo5/xiYSMkj39UAKCJOabE+Go+r1XM6rPvcHLkwSmz -ZACfS4JUyoZM4HyU92IwLYvT6mwFhXuIRgQQEQIABgUCS3hJtAAKCRDi2j4HiBs8 -LW4hAJ9ci0ktQ8C7cy686tYT+iwUcmUGrQCcCJckud0NzqA4bweTB1yqYzNMsrSI -RgQQEQIABgUCS3hjggAKCRBqWILfhEBGAodjAJ0cPoNUXKG5L8C62s08RLnwVSJX -8wCdFXeFz2lkd0lcs4tV8Kw5EHrpfiuJAhwEEwEKAAYFAkt9C6wACgkQZR7vsCUn -3xMFPw/9EHm5wdIC94LbfReO0wORDEPMc1gmJesRmwouJiM8cKpRRYj06sdFHF5p -Z5fc2TYSP59cIpyjYCVYSnPo/CNnRACmaGOomCf20fHWf/g4dTNaoMJL0Zo3vUgG -6XdC9b+XmrMjxCD64vXQ6q7rwcIkj2mAtR23wUDfek3mR3SAu/R6ge4MapH0WYOY -OePxEbeYidP8kqWYDBnA0GJ38Q5ncIvqBY5eTtxgwFHIIU9PaJtXTPo4DOZX2EC4 -IsQkdwWp9AaibtmZXyQmsqeK5Y8ytZBot4ogMzyEl8cIFwGiy8MXt9Ks8y1I42Iz -FUOImsJMZjYguubnutGPV9kIyR/OYDN1vEmVSu6EwhdnEY2+U2FnV/39NZDFCrDM -9CyPw9rzD1SdAwZox5fQpZhFf73YN1GVTyEhGqgok/A83Ssh5aR1XJFjUMp9sTA8 -6Vhvkbs+u/+QY3QQfxs/E7R7BY1xvh5fxtCfbL4Db3IeQjKgwvX/xqnYCzbEIXbx -W0BTjTt6+VO7uK7/Pe2oZ2IbvNKe2j9nsN6Mm44Y7xo6Pd7e9bNerVtCl9fYBBWJ -ce23+M4p6FtJ/54OSyaeivRXAzuCk8zGT5W9mz1KlIOt34aYx9SYrRbKf0AmMVlt -RVN0NzysTtqWoncKEV5qhhW6DwwV2EcvbWF0F+cacmPJ4FEaZKiIRgQTEQoABgUC -S30iJQAKCRDtGLaNFhlFU711AJ9vjuUUR8mAw2Q/GP+odAwMW7dj7wCfSXldwfjZ -5jTYVQ/Uhwh2ulOhLtCIRgQQEQgABgUCTNaWwwAKCRD2KOuTR0MgbKrBAKCjbwlc -pj9+tqmWO1ycFfZfdJ8OfACgkzzud0fbrT2cC98Z/Wg93OwzsQKJAhwEEAEIAAYF -AkzWltIACgkQPZCKs/D79R/Ccw/9FLKcWV7r4A706nf5dgsL2ist4IZ9FJkLxchW -0hbcSFTXX8E35jnpxsqCJMdeAFi4MZ7dLJu8QpcFEaTs4NtXqeUwQYtSBXxFx0Cv -Xe/3jUsaLuz1dUL4HxlKJ28nVMjOgSbx5NEeFzZW+a+m1ckhQdUADIEF2+cDZtFw -lhZ3gFZTzYC3kupKUPAonRO5q8QAFCOBtJp4NB9SlRJxmJXPCZGAvWgnTaukILs7 -mQEI8e8wrJfh2JXoqQhteb9CYHF3EZzCz+dzu20++RR8QKmRBsirLWnYPJNsqest -RpWl9zJTZWAsCV5cwmjEsa8bsdpFGQ2g+IefPXOv4r4nlOD/wVOZLmSHCaTzQml7 -FMS5KhvL0THaKsBRIbEmmSFWh69ezUmOa7oc902HKpusL/CkGDEHTm8Gy6PYyi4G -sm/QfhLql/fEKhHABB5XPZr6IvWtylOUWSHSEIFELg7lQXn2ofejzk9kSA2sPihv -lCius3AdLpvROlj4IKmp9qHJkt4GrBwZ4hkSotgPPBsvxATTVwxnlxtOWuxGh1IF -7WjDfkNRdCs2fkVO3Wyd1PsUi+9/9BCGybYub6I4s1tf2BUFu4r6YjKTsGrA8a1U -xytNhpDjFPnbVklUjijS/YWPwiMmWaE0g4hXH0JCPQ0QK79BCaLY53FDyR1GouIu -X+h3C9OIRgQQEQIABgUCS6VlFwAKCRCL+YJ90SjxSsTtAJwJKhROqbqC8QwGIj82 -dMpYrQzvBACgrP1CP3Mb/CjhxZPwYKLyGPGVDfuIXgQSEQgABgUCS3B35QAKCRBq -M9cZPvcx+LoNAP49mBc/UmH26+Ilc7RuIgaaCrIFh/u067Yftmr0lllwPwD/Tehp -2unTG1v+7oX4HeMiHHUkpKIi8bLJeLfay/PIxGCJARwEEAECAAYFAkt5j3YACgkQ -QpM/041cDI9iFQf9Gir65TwKjD5DwL09Lmnp3TJLG1vnqp3Am+TEP1iDJ9rnHD6m -WiMFMmwRJztFJUWc7fWzjFxLxUl7EGsqosgOvBYVwt2WxiQ4vywGNLi9mtMbz7iC -EKS5jebTl+KtttuxGq4Ai6QQxYvOElOE04XF+kPhuyX4f4i6VKgfPrLcNRtfuEUm -B+HPMtWBAHok5Z++V6XXE+gseKItKKWTGRUtqP0k8+nERstYYghdluMKBwkzYCqw -n9xYtXzgBFrxj/VfcA2JFvCKDNrvucpWo4vx278ILNgLZM5hQ6WEBJlJ6rKltoit -XI1s1Ly+U/qj3WiQnYFoY4SP2Y8eAdHVj22V/YkBHAQQAQIABgUCS4B6FAAKCRCL -mcSoO0VaJ2SPCACQNWcfPzCpYITQGzY+oF+t+2iTLy904HBHFxyIdd9AUt6CeUFU -2lgoP+zzFnV5yaB7EvgQlSqA2nhReMePcT2V2NvJX+0eF/PTEFtwAft0VjmO9aXx -3Vw+ltwQOHlY6OjrQH1QO2PXjpUKSXxMZwzxQg8fZR+bhXQ/smnjOHX7EXjiUNUV -nkPuee2SuQe7eZIqj+ncgXogWll+lDbcydwXhnHdTlIp7qixtGoBU+y04nP1fs0F -fkJxCbX+bpFee9lfFh5C0bM5iXaN++if5z0P0IGvDKiUwBaJtpCGDtL8aIyTndll -4N460EFoxG+p5D1Rqn4CnEpbxB6O3W1RAoJTiQIcBBABAgAGBQJLf/dwAAoJEFeT -DasLhrBnEMIP/j0+MMqC4ei9ZmZ7N4KoQvaDD2JBQmTXzxNYE0qwXGBLuNASHZGD -EPBiomkKGZ/IFSes65Fkp6HGs7sJR6h+czWgrSujYXB2/lF89YFXlJ6J8/4MiiHn -TWODlMZcMqusdvS8crWh9GDPty4LKlSg3BfW1d6tGi6MEpSm1VqszHOa3JUQ0TUd -TrnxuRpopR/VHg6eRrQM8TSgq/UWN3YZzxtmrdeQnK7qs7r+zuTMOjAYDD+P0oVu -IO4tgAREFDobzFympE2buObuT1je3Dt0/jS37gRNHHKjZM5RRIyEcUKJgUBR+YSl -AOd3I502tdMoszzbgl3qfbdGqA9aY1GsIFtSzvi3o0wFPZWvbAb+dX1ThTZeBsyq -4Dzdy7Ki1HOEA3loyNBC3urczwXFI7gzI2lUO8BRFKdElDFHzPi3thrCWc25R2WA -csRdoYN2oTqun6J3p+iXw8ILE+PpUa5vlikueDR6H3/Op7vQQPGDJksadhbIY2/d -08WpTfZMy06LEqVY+AYEK7rJjcRTkRr5BG+khJZTiojQfmPQDUCgSj+oeG1kQ8bz -TuXt6B39nR7qpReZ9EPiVCoEl5z15G1HG+SMH9y7VEAzIvtzJSHqoj9+IkgFEBZz -bu0n9CNNGayiVfbrDCQSQOT5p3zWsCyNRX2ZhhYetlX5UK98tJv4EvzSiQIcBBAB -AgAGBQJPTq0vAAoJEBrh01BD4I5UCNIQAIgAVqP4+yC+8hPc+klHNxVihpCFBefD -mqK9ZjCOMjfS+iBLSaVx6Gxtl2rQdCDYCfWOoKFytcbXI86qSTf6kzeOaKqtHaJt -r33+1NUZi52+7jDWajTZK6cstVXf3/Qq1RTGuwt4xrnABNrgROR8VNVoWyTnM3+V -MR/OC7xeuRKOECTTb1y38EKtbEw9Ti+eFsK3RKnPVLBQ1SZSUuoThExm2HPz2xTt -PvNWeKOwrvzdQph86wjRQgq8IiJE/fdUyOCAg8c1RTdw0oXps0jnLl+0dIfUAaza -7riJxVkwGCr5JSuoKBvUeJ0m0UREx/dncsHsb2HqHE1FuyaiYY5Z8CQwEw4eoWvc -nJHoyxc3/MYZQC6smjNaTIkykLVUpWCGG5R/FJDCaMu+G9X5fn4hT3LrBZMHrsAV -eVB/m0Lu9paXg3fqDrfvSNJMUKWP716lkcM3TC/gPz0jjC4Xsv4QV+MD6V0B7v4Z -oqcq2znVP2G0cDblxhKT9pfJ7PnGwzMj9nZQbFo3Ib2UZptwp+vxU1H6tpC/bP/g -VDdNihifaJ7f0ChTj3cGJN02SolBmALbY/cMYkHpju0KCS9CntHiak7EpnImYHSY -dijQMU0uhiuEHuICPwW+ltokLmg4nFsPBW36AbAoHyDioGfAKQ13oIjrH6spDZOs -EZaots1Beb+wiEYEEBECAAYFAk+Fy8IACgkQVuf/iihAxwiFTgCffAySPTIrr+vk -A/NQkOca9hx9/iAAoPvlQheYhO0/PtJ8ynp6OtE6IPaRiEYEEBECAAYFAk+Fy8IA -CgkQY0Ly7Lxa9rmFTgCfalUQ6JPzOgQrNq3bwrhODZLLkA0An3XATjEohlalg39S -hlnVaErbMWGQiQEbBBABAgAGBQJPhcvCAAoJEGfncvCDUeCviXkH+PsDdnVzEOdH -JdTqIgwgYkU2FmweqKuS4T36lga9tZ0cjKRrgd+CKgS1oU0+7FrEEbRt00j+5q28 -WwgKPr4RHidvW8UtFItF4ZBP6Guz7k0So9E5PBf1zn8NAddZr5ao09Ol5o6fYBkt -pK+BRAdyvygYyoBS/z+/6LtV+R+wWOkU+wAxo6qD5MI97geidLvF2aZ3TiNBsp3i -8Ndy9QysWI+lf8Zh99y7Z+ziTfdLjiJS16gyQlm8q2jh3yyI65Rsbhso9MgRAaHN -d+VGXsxy6RUp9xAdIFllw+OCQVDWT5PJwuYrpvmbijxwZUuM1PbsoFoM3sCVpCGD -Fm43aDLdUokBHAQQAQIABgUCT4XLwgAKCRCoziimAQ1vOol5B/9VcRqt5AL/eRMc -Xs4cIdiPjuzJNu+Q39LWB9XqIA0TVOCGiAE7l4sDxYuN2wT49phkpbdg2RYxKSlL -ucnqjuZScfVQMqNhLDuQqufASiQUoiZ8hx4R5CTAs2ziro9j/X1ZnESuwUqA38lS -YKAcTl8NZtJkh7gRTiSXumvltUqNyV8HIly3Ym+lEN2mB9GxqEwrMDeXjnCLphP2 -pVtWvbeSjJv1/8lowfQfyAz6uBgLBxDfM2wDZPh50mH0VZFZoh1VyLyF4+vOlRKe -I9lOGUZ39iC7JIwWnYouKdniLF8PXvfrZbCc+ywM3KVszOpMhJIqlsrbRpkSv0+2 -XZlVbc3aiEYEEBECAAYFAlBeJoQACgkQYk3FZRNepmjudwCfZ1CognnBGetUZiq5 -HTgqnlsARBgAn1Gfp4QiayhaQLpmW8aXdH9ya3waiQEcBBABCgAGBQJRjONaAAoJ -EHSBCwEjRsmmGUoH/iKoZS6ZPHQv8helLvgPZZyCtSYWT2OlOFOJIFlLEMgLFIIp -z8M0U09OmlgQOZQ6EjTNXTzEXaU8d7ZJSB+B8655yRU2YVv1cjJgroVYLvpTQC06 -kE3EYutyTE674KwQpqfIpeQb3+5wRJ0i0A3sL3Gq1WY1PyKtk/32k7rzozTnKwP5 -CibV8B9GRIQejpOW1tdyGbhOpANqGrUO4lGGoCbAC50YQGbnOutNfk2IIsk5o3iU -39Yxz1vl7sxysdVze/sN1Cpa87Idrbcf624RelwZjeETdi9FlTsgTCmZl7DTB12u -euOmM1l5/K1kvgEi4pf6GLNOd1WoQxy9EGxu13GJAlAEEwECADoCGwECHgECF4AG -CwkIBwMCBBUDCAIEFgIDARYYaGtwOi8vc3Via2V5cy5wZ3AubmV0BQJPoC09AhkB -AAoJELmkCOcdqsl0ZEgP/Rdk9xnJ3ACRsZAGB8UkiGer6rxOYQqJxZvHzwDnCOdM -aMN7v3To3x6oQJQhhLaD37FpbfrDbU31+lV7Py80/QDEGNby/LGOtXIRFMEP8ay2 -ITC4U7JOVfzFCOHmthk5cL2bm+4Aw183fTZkF3pH1SY3mXj1DpfIG2ExUu+niHeY -w/vuldk0HkR+oKvovJa0xs2p/uv+xhrOHPcJucMeApb+PK93LYCAvaEqGtfHBtTL -+Xbenu8zWIDUcRcGFtXcVXIYJ1PogetG6Cp7WKb/QONBcSObPQn6hLV3jekD3KA5 -K05itc+GkG6Ojed0Fi97cWMjKgVUnxIebmYf3/IpraAAqauUzww3CcQiflWDlBZC -3q8rmELtNSB3PLhD63JAlIPsCkHOEXpLP7cJ0zF6d9FVB2zA66W8vW+JRDF/1R8h -ejl5ckyvM53qF/eU/zglmmq5/IlMvWag+d1R0XBf9nkTqk9QtejZ+9FBoGrK/3b4 -7luTW54IG/i9ifYTNVmZD0Q8175y2m10DXrJDPpM2crOQkwlNAMxFtBi28pbYkTE -fdE0AE4ElBCgMw0nLg1YNg9YlabGx4wOYiVZu1g66pplHcfk/0ZSw0FhbjB5nkOd -t8vEx9gAJNNOzaZt7s74NcQmvnQZn9H/yz2aC6Ebfoc60uNbP2OTrj9TceM/N9tP -iEYEEBEIAAYFAlIdCrYACgkQrIWTYrBBO/pQ0wCgy7v7fKJ/pL0F6Cq+JwTHW4/e -1MUAn06YVgLVgt0k1tGw1KO3QB6vcLZjiQEiBBMBCgAMBQJSE4Z2BYMHhh+AAAoJ -EOeljjN63KB5lfwH/2utbkx+plQ8XHvgL3sO38uzOFRiuGW+BQY/YbGPo4F+FnEn -TyZTHQ2p1QDCsWUgsvBCxM/GpSNw+U3c05/jUSuUkN/QQ6g761dNYxE7Rnv7lhBI -e8qTKNcpH9Fvxm3DFmgwMO7rbWlva/PdSVmq89vULbzn+R7S9JqwbzBEK2piK6c9 -rxCICXrc0JcpI90t0zUEW4mDxMerz8QPuy/RZYoO7lOVgkVHtDWSz28lcihm0vvs -8youLTLidBQ4xxF2A7zTT5Zaz5E1EsMsQ9n8GBPf1ZX8h3kvSFWRI8REsmLkUlAO -YieXKOUzKeRE7QlZmLv2+X4JI1qJA5vYVbfEfkSIRgQQEQIABgUCUxjpuAAKCRB3 -N2Fke1NkFfzTAJ9Vz7PFw+kpnp/tmrahk6Aje0GscwCg4QDu34frwwCFIKeD0mL+ -xYzF03OJAhwEEAECAAYFAlIySG0ACgkQ4Wb6EVcRORaeOw//XpwCDjMr/e4hCN+b -aHE1hVpCZi6vA196SYbZ0NOYv1TYT7ijZazZWOYW32GhG9q3IumhzKUPz88CeqaF -O8l2BGjLNvWh+OR5pEpQLo+Ga4bQAbTjewYw/3UblzSN9iBxtSSPjdIemrpNtjk+ -6eG0ZBZ59wxKmyHc+nzAhdqdOj1jmsRhrTX+pKtt2EbgpY/K/V89/ulgR839t4Dk -rL978o1eV5GEJmDIWcpI3PHa5LOyLYogz05ENO4OrxvsqgwNmbThoBHW2OESc6IH -1MSSIuRz0Gbxh1GLyqUpGexl/8uMudWOfWdriaSFCo9P3o6vuWnCex3GSxSFYgEU -ZzD+85zWEcLQE13uS+5YbKe+TUqVjyS4jaFlgap0zkZPU+RK738NJE1ebbZ4+mut -sFxLFDr03bQcCP3b47IqLJUWjqzItEwHZwV+2yW9b2xWZQtAfzWSzA/ph8m/yec5 -zjjA7T1asCxjU/yuv6pZKAzVpURRHkDb0SfGQvi71jyFoh8qPFUSXRW3iX7P4ak1 -vT6DZNd10Q+iz2MzLgkRGklJTQ9oh/5/pF5nXCbdVQELYvg2C02thljuKMafHb2n -8Cspeefk79lxOvM8ulnfEzJfc/BchXH9v606J+N/7y8zQJB7T4bX5Fp6X/o0+Sh6 -I0sn+lSbrlJB+Aml1E2wn1FJvQ6IXgQQEQgABgUCVPEcOgAKCRDGVVaT2rWR51T7 -APoDsEamsO0UpQOrTbpFYuXg1tA1nC9X9v8l/mZrmy7leAD/T3znuHdQTlSro310 -C6MFZhCLzuq7dHHJwb11+Zp3iqaIXgQQEQgABgUCVWIJngAKCRB9fRG/Yp1aZxoG -AP97SbYQ/k/VtjPXLTz9Yb+6UY+TuccdxNmOGsYQ7W7VvwD/VWzhBRZSCvAv38hr -0N5xc1ZOgBIDKXF7ErM14nD0f+SJARwEEwEIAAYFAlX9KbsACgkQT3RNofXxU4Ez -zgf9FcH5FAFXnw0X21/AW6asNiSQJvvz1NTkysP/zyCWmycfqxhqHSeUsDpu4T7w -fiTwRFgktSe6aHf1HL6o+gzhZ3DSm2Z52WGIG3T5ZKhC+PSK6vgrFdgtosLbFUgY -aMBIt5jBge0s5ppi9vyR3C7UaPwY1fnCn1E8xlCKIXhOkOEyhOnDGlmCq+mYCsWh -iUa+/UWoO+EVk+E693bGuRlQ1+oUpH1Z4m+vnE5SKhEimgaM1C6uXhYislJMM3lZ -qOyT5heJxbAQFkdR/UhFOaXE5mSq9/I9GNxWYnm4+FHd2wn9zfhCQLZbHVrcKlPR -jOwZOI7SHxkCfv0zrhInFZyzMokCHAQQAQIABgUCVfr2igAKCRDZIA5s0a248XKU -EACcT0EwQ3fn+BybWKF5MOJHALeX7IAkMkRB4YO48I4tnTvrqJsH9YYBOldkqozu -F4tnSJFh/0vIjh1uyjfkVHHt/qZfVMCQ7nC7RWDSe7dH1gw6DoR8oiRFqJpTSqPp -TPAtSFmaw7d9HYjPmmRRPkGecJowq7fbCPwBwCEoib3WBxHqb51RhImn28ZWri9t -9zukzMBd8u/QVfqqB3G9C50YOhO/ceGOA8KffesQJ8tZYBMD42+sFvIB1WrOHi3J -voCoFEtF0eRFCvAmwH3OTHGoOMX1qF2gj7mEVArtI6Ql4qu4pjV1Ej0oG/kq9/40 -rxjF4dvGt+sMIbV89BOq52KbtMecjUvFirI1W00kkIWJ8VukbNREABztzTjMMHvn -1/GhdzHD27sCV8pKS/KgJ1/CvUIgwvg4h+G5XsAQweA86yuq3qf7SPOLzcLom38H -vvHkH6JBHcdHOepAPR+rs1pARz/Xnf6v/zVLT+C+GURRFHSv9Mj8tuJK4OGKq5st -lI7TxOEXU5NIzxZ4s4YsF9/vkm1VONDWNBf67NLlGvricDCOEI04miA3+qzJhMtC -S5eKUwgug4Cd+c01vKfyA+OPy6bz/DW20PBN6OFB+5wvAykLvJkAk0xfCZqHYzO9 -iSpM+rjLPU1JgBWx7yA4GJOGLLiD+GPtM1gh8bayw+LwxokCIgQTAQoADAUCVdx2 -/wWDB4YfgAAKCRAN+evWvAkCvug+D/wNVd6gSXWPbmh4+f1tVncKYrPBB2ZoGXmo -kKdumAPCN9HSE+1g7gZXfiQXUZp6ISHhQRsxDObaWOPlfdtp4XnEc7HwCWVlpxXu -cBzIQrNgDjbC0WqZ9mmYSGH+RxbsJPXvo6+kmzfnmHa/l2jwMzu8/mTWp8otkhv9 -1Qt14Zd8rLxeiNec8Kpqw3JBY9/qLPqNRQpyHi6e6xpODZTYdC5ET/BfRMQr8/Y6 -wUHdS2Lp1EjiuWqcJ87ogXHl0eYf9OE3dimm5pfydbHRnxqK8rdkUODv4cDlPxWu -5WeveMg7psYcfM+jba7dqL9rtngdFE0WmWnyhpkpgtV44pRCRyZnTytKLcciWNX3 -E1pSccUgc3jOtGpmOWx4YRihmlgrXkSZjiWbrfNQp/5WnCdku8DYLBDFDVVqhrgt -WXm0lJKg9CWOgz7WbeY8/rIwCSUY7xhTGUpK7CY3akSK0rO7WiYgsr70kOq6Mxsg -CPz624/tlR/3kzSIaZm93G2any3m58HAHWsc6pKnPZAR1paXMxmNiQMKK7Qk1feK -gCfLK0mkyc3GwE7RMXrjEdqk4jx77h3KknuikeqcnD52/4HQ0wj3ju8NCH0Otgfv -kunwc32IgYDH9XoEAR3OqxkePwkkk6S835G0ydOnMw75YX7gWB0fI14d0pro3YTp -Dpkl8MzyvokEHAQQAQIABgUCVfyWxwAKCRC9ApQkIfSIn32JH/9a9eu7eJSXzHnK -BFIzoDkqx5S4+T0gTiweucZzJN/a3JemIPJqD6bNeBq4bC8gb1nXhdu0OVKkiM1E -4qyCorngyy6RWQoU+Qet5KY7Q3WKUyLcDZfljqaMeTEnXZVrZl84wYFJ2WFtO3rm -QdT5VFn1e94syx3QJ0HKFlIZbVHgLLon0xidOL+YO4TH+6Bmexy2PRYW8SW45RGW -f/wBlH5uYVS3Bkzsc7LbN75oyCPkM+6wFeRp7bWBLuZhWYZq0oQvkJwkKMCH5Onk -iPdRHxU/0Q6W3eCEcBN3NKH0lQaWRIS3j6jAuem2vSlJ1oc0oJbQ4IVyOw5DEUla -u/CpshzuN6rrqisPxHtm5XPgQgXtTB6jyUnHHg0T0G4O7QNqmWgpyVeKLccCmnBn -Zf3w3n2ZMFBzD+hFholbaoi7lHo2RzpnHBXEczaJEVOrhklN86tDq+v9jjfdrYqs -tNwpHa12RuX4zjXv78kiEHYghx7K6gOKAY0Rp4hA0/4y0GIv+4W0rI3SCMR3BURN -rcMqRPxuQIZc8/2sco453bZbdyWvRKcr6Rw+p2yexdqDsQvlR7ry/4L+81JI9ByC -jCBb/yvMUcQ5nLstLuTcixgj+1vfLGJzoj/cJZwTiVrFt1OCjy4Ck7wc+/xs5L2b -IWXNKMy7S3rD4z1xHWgH7EZzL27yXTfDGeXg4zDm96HDnJbuIyPQ5U392VMMk242 -SK9cR6JJeOYSsiORxLWwvod3A6kdjmqlbe1nF6s47mFCWqs2fJQKmxBeVoo9oVQU -3cCNBw6SOcRxDh2D/gZoldQGbAPziUeuvW1wX3jXrCvM2z1HTbBJaB65Hbdvgkbz -lE+1oswKtYo/9KLtQiTTAmolwrjf5zJC5/f5Ygq9kwz3RvmTPVRu9zoQ6seJxRMi -e+Wnlil+wurIB7LAYRWmQk+5s1AkauB063uBG+xXOuphwTtAnfUVwudLA2GUWN8J -KScTG5bOdk82e2EbCIufZYHvDxwMKNgzzDIscVsiwQS64KqI3+Sb8hZ5hnWD1+Fr -bwtl0VaSsDPSbEXdwMEyG9G5qC3WIc8xJ6S1F8JtI6Wg2F1qr2oBLcuE8GBr8yel -MggOfZMHSTwm1k2YmYxx16ajvw3oXHkHI3z8+cPq0MlY2e/XvYc7L18JWbIDlZPr -h4SRBZjW8fG9Db1o6Mw/igAW9S8NTAO3wJn/h3MwOWV/QjRQ0b9DHbGyDdR5CzhE -QxV8rhsUGDFGIJMzgj8y6sMG37Njm/1gVMMgihqNjZbZ5tXiCKEh6CrGf12cjefQ -dX5li+Q3NTRcpMXkRfpn4qKZt3Zbydxxz6E1pyvH4d9ocpPY/jvI1JYLmZYqKYht -agRiUmGUtFJQaWV0ZXIgV3VpbGxlIChEZXB0LiBvZiBDb21wdXRlciBTY2llbmNl -LCBLVUxldXZlbikgPHBpZXRlci53dWlsbGVAY3Mua3VsZXV2ZW4uYmU+iQI2BBMB -AgAgBQJIxTDPAhsBBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQuaQI5x2qyXSG -7A/9EP/C5AkhW6haVbPPYGARrXleK1jyV/B7MxtxQ0nv9bPFwUy356pQgr0wJ/Cl -fvYM25r2EeVCWsit1wl08QJO4Ub00GE7u6sTjwKbmpyNlD5nZo5bpmx1cs7fVtnx -p8hg13uVUlDB+WB3Dzuqnu3FEiZ3f1L9KGnbBG2oGT0AraRZyYd9Mj6lcsRqhStI -mWSJgj7AtiMTvExI0IZ69zD8u2pab+sCpWPJE4xh28/7pObjzF3E0EARzzCWVSmH -3O8w/1WR20DM0/0VjdkYgl+kg+gXZIHRinoM2inXTqQbPDDwG1aR59DLBAoiMmDn -s6FrOxUg7FRRKaBbCDrbXxxsAnnWdsFqnRnTA5ze9+MA26LfeT5F780YeyO7juhd -eRB76Cy2E/mir91sHpkkyAtiZJIxEou432i0VXtQvGuAkhJdt8gBvtezlKeeGDH4 -ClLJELNVSzfOkjn743lh0Pk6meTLXHkW0KdXBXHL4qVVd+SgKMF3Qcxue5fQtSJw -4rGTJbOOqXjXZF53JuC2XC9MLRe/f+DQy5GQI2PAR4kBQMHhMcj+jTuiaYCFALJI -nwTIcyVIvcU0Bwx5VXYLhU87cVkB+78mR+L3oqpwPLbxXz06dtjapSvU5/ajcJPH -XG+/X7tgMrdaSlgZw1PLj4I0phx0ztaztqMH7I/eQ+ZK/seJAlAEEwECADoCGwEC -HgECF4AGCwkIBwMCBBUDCAIEFgIDARYYaGtwOi8vc3Via2V5cy5wZ3AubmV0BQJI -xTpFAhkBAAoJELmkCOcdqsl0DikP/27mJaHxJB3aM7SKKRfZBjWkUTTY1snLjbkq -ugd/RAZUwnytoc0eVb8NHZqAoTSr7Wr5WK16jmuyavCj/ocxusIZUP+wNi60qEdB -8rEgYEEbQmg54aFDP+gY1vVa7c9ydSXS2QajlW0o2PHyn6LtlCHovKQy9W/So4yd -2bVERlQiNaYOuYVTh3kUxNZAGutwPw4OehWbOeIouzt8rLenOgp07EjHhXgyZkwc -IrdeNk9704x2F2lmFC926QBLLpiyNgUCTgc2y5lkDZ+HN6RCBF1uPYkL+tuWltfH -oU43ousfJDmAll/bG6S+sSHJc4K4CGiSmTvfDTw1LsDsiRTQxjw/pt19SqI0kFfa -l/D5tuCIkdISayDfv5+aaeiefeE4agTIgirxN4klC83imOkV6DC4YN5K2xU0sNM1 -4keRgYFCuLBSkZKcWaqqGlRp9MkUwL4FpxSNtjf8szowwzpTDuWZSksMWphz+0iL -eAmU3NBCVifRi4nVnTlZBQj8A6PtamOmJ65NkPrpS0R+hIlqcrXmVpXQj6Gtgmjz -v2J/RN/aTgemUQIBTqh9nDJhgg62NJG+ZlVw7zCHtRiEl4zj7nH13XH1VgvZq7pK -ZdUqowvThOe815FFmnawJajTM/au/P+Ggczq1DXULbWBhiuXBR1WYxlOZV0Rj2aS -H3PWXJWjiQEcBBMBAgAGBQJIz8CJAAoJEDVTCmyfr+mS1LsIAJDH3FyvpcdbzuUx -Vu/o7aJcpSmiNjsQ3RQuexV46UVBK6hqgUqvriikxJ+AnXB8FliF0E5HLdmXpZ+u -mwz6XmMS4Jiwdxiz0sUjWYwBLuPShU+Pvp/MOu+hIGpZpiWHWjw8wgi4RitZjZkh -LYudSSu4JvboaJWmWFdWDEKtt7gWRAs5UwBxTz6fro9/X8pPUhOAohOq70cwJVms -JRvRA755okUeN7i2IL3VuEYS3j7isE9NRVnQdJ/+mjSg10TxzRZ3EejDCy76vdyS -JGPVUzTSqq9MU25/kCjjnWnO4xQN551+NPvFdi7zbndI1irVuQ/VKSl/hEhS+KXU -QwQBbB2JAjkEEwECACMCGwECHgECF4ACGQEFAkjFnt8GCwkIBwMCBBUDCAIEFgID -AQAKCRC5pAjnHarJdBxSEACldPj1h49vtepoEogv0lhEVEMVmMdVRLJdloiuLufx -iVeqsH0YpSiH9biiTP4V3r63WTQ7wq+PYUFJzsPIGemY5GBU+1/8+GHI5hdSU9HF -PSXNBXkKVmLO1P3hN1wc/7cpe2k/KLmsHkeEJ5/yV626dEKxCFBDF9lcL6oK35vq -bs6S/xpRSAv1hZbUzma1ckOMGTceC+EFiT/L/Euoe+bGgMr5P6RW4Nh+vjBN34+1 -aCO9uPXIY6NgNOK4vNYUZSN5cJxU65IvSRjtwsdFYUEFu79pOyWLOE/+LTAk3sbS -UVYjfWCN3XDkqbLKG4exOmlTwfE7psIueG1MD3VAqWW/zGOU6PwrZev5jcOKGyWZ -swGJv6ocaa6gUlSnTKvUhcubwwKgNia5O2CLBnS3eY9wOHVXV074VazqMSFTkpcx -3zbSBvEaCPOLxgeLhUpbbpkQQj1p3dkmqMZHxD8hI00ZHcM8BNfASyIcOCEnR1V4 -7yHrELAp4bWuHiwhuE8wkqhQRJMkMimHwO97H7hWSECBfF9m7ExvNkQNC/if7hGr -l687E7cDSDAfF6ydKLJHLJueKYNIQjbgwdWbHRfdD6ZDFYdhpgy2QGBR16YB0C19 -S+DpKoMdSKKNcQqGaS7jB8WK+MzMZ8YdIIEhysA444TChNvUwbngeYaKDU8QoWAR -rIkCHAQQAQgABgUCS27WIQAKCRBqOhCzHBCVF8GJEACvJRV7oEkVHNyMciuJ43p5 -GEItObV/bsoCK8iaqKOMM1kDsB3i4VdZCW2rW4SXTwUHdBbyP/H0AXhh4MY+wHBV -n0ZD2/9Bc6xOoNHktDh7pnZb8FIkYxrwZgSxzfrF6Ac9t9Rh8TQ5wTfG95OiNfT3 -H3fpeyw1Wn0LSotGlpuqj7Btm0SVtokH5jTeMn8SrDVq5SC7tuMpWr52i+B97Wva -tEjWDFP6EUfauzseKjWw1o8NoO1QzSvL7meKyYbhZRKWO9ihvr0HRUFX1LqLj0gf -u+/7XYdwUvbxJt/sKzrM10mJXSSxiB3s7MZUO8OXWDu4/m54lFo/4s3G7GB1LRK/ -v6XtoMVqnlsPYIBBdE1Dae86pVLKB/b5Az2GPtsVVe8J4alNbrDeJ64OJlFNVAIU -d4Y8CI++7VwWG9ZMW3ngmDwPhTofYae0QtdBkI+zGqxymfEspp47b0W8YJi3Ck2Y -JESORBBzKZ7tAIGm/FUAJnb7LPibG1o7KTPEh81YoMCa9XpfHKA9fDR75LsS9yBF -vgQdkv4hT6/j/3eDuS/vzth+zOVR9hf+z0oibhG/36mocv5930kjNvncc/TRT/FA -0bBoxLqwKXR0Go1a/w6+s7isRPXQqJYPluntVRbrSR5X0i+Uzi8kCyoUk0cHvxug -c//XUNaVaWKaM7dlp5ksTohGBBARAgAGBQJLbumPAAoJEPw82L/Yhic7OAsAn1da -qm391d8GCVcW/32kOHlIYmjwAKCR9wtumc/8RlIfV25p4gdjKANvbIhGBBMRAgAG -BQJLbybqAAoJEBd6vXxJKoRwgOEAnRD4AQYmfu96aaruV5BDR+Mn7iXIAJ4hzXew -i3Ay+aYfQkBzGZ1v5ZTUHYhGBBMRAgAGBQJLbzTEAAoJEM0moIHOq0Fdr3kAoJb0 -Cr9hXKP/1iaknBJkP2PqGt11AJ4gmsTxo2uGs5OF5eF29mVi/my4NYhGBBMRAgAG -BQJLbz4CAAoJEOd/SFqBMtOlivEAn0x9uM0VW2SP3+U5cAKXa64tY2B9AJ9aA+im -Kt3TrU/G7dUBkvrgRvk8nokCHAQQAQIABgUCS28/vwAKCRAhn2tgsrv8/N0jEACs -aHHniCGS4uh+gREgH4g52eS8ktCj4X6xjZe9z45Qipt2mirQYhbfvILT2Vg0aJeq -GYlIb4aN863BFj1EpyNL1trMhv/40D1CKA505Gkd2sBjQSwRe0QFSoWo0KTjQPQt -13ytXYw/NdLIKLSh7S43jakDTsK2/lUp1sFbGNfXE656HbC8VwmnRV9n+oCYmRLw -pnzSW2zi+rRG+bsqpIz43A0qSlW2dxeGi3wkI6tPLSOIB3BxCsCuEdLNeU3ut8p+ -sn42JXbVHVGLhTCB3xKBJkkPBRV/YlHLlX9pxJMhtRX+A3RLuqa3Unnx9M3Mbtrr -mHgmEaJqR7t1GQwLKLF7vVPEx/X7hr1PHwad6XsT9ZX8ni6cqqXJEyWB3VPUaQ43 -CIDP7k2jdG0o3csrupK4Xe8MLaP5YnhLdzJF9PVpueYtHEMBh1hzzRBq+SrpK8Wv -JR8b2DpFWNq8O5JYK01TdY4+XpRxUwU5dT5E+oCRrai8nFDmSPrWkIRMlOz2uB3y -5Epu2O6tXpRyeVi84ayyDRqa7IzQlkQMPfbJUuUO0GALuxfkFQRL4O0d2qMko5Se -xC4nTV89akgFurvmdd+u5gByx+PdZOB6p1R8fC7FOQqKHlrdG+W1r3Qmpum032Hf -beTxkcZG6FlGK2gwwTRyxgTtwS2UnZPyGe2m1898F4hGBBARAgAGBQJLb/NYAAoJ -ELiSkx2jSGfvxS0AniBc2S/rHDFcgBuqzl4XOkawA3aYAJ9C6uoOKulQlohkBL8L -zkSMNSU5vokCHAQQAQIABgUCS3ABFAAKCRCdIPZQPjOIiPcuD/9GCQif4DjJPr4W -x8TUvHRx19dTtrwB015+6Gx8o8xHFghbQ/i5Y7D8RamHbPpUILIlApKGThYxqw0i -2grWKmJmNTVudynuyz4+EiPNOr6S082wujCxd0T8lShUYpP/6TNLfYLKGTOnjCL7 -K4h46nesRy0gV7IL5+09yCWTBvrNyUOSr7HzWle+b95ZycYRnw+ASxJAx+8kvQ8a -XkbqbLyNVECACRkQhQXAr/xAmlB3PMHFoQNsgH6dWt0bvZsHv1LdN1nsJVVvQsY/ -NPoQqAiT+v16ikNBPDaC1RP1yZoydqzIgMpvjd1hUwDgPKHyQ0CYLcWhzh9pIyDW -4YtAde5i0GfpRakF4NCk/jwvefo/QwbPw5m1VNHI5SJs9/BkPnu5m0WMo+V1FiNI -PHPS6tq5BySDKwAN5fhQyY/xkE7TCKryv+UciwioizaZJ0C8iFYDnbgHQmTEcpOf -wvWeKpMdfnSDrUHi/Yl+nRMcTzcAyQrgQtzMs3NdOcHnwuShbOCsnyio4ClXrHHu -RlFnkw/Sf7z6cwc9Hnv53e5z4km1aalT7KASkxmoVti6wpuQTBcNKtYoahuwM24l -y4jxg7D8c7C4Za+ZDbcSXEPVBsxE+Vgpk1Vhv3y9+CEbycb2PV5Q/02264HZFznl -YRvynoEZTOGGwClO7cvAStmORd3azYhGBBARAgAGBQJLcCEPAAoJEHeRQ9mfGs6c -72gAniWMWfQ4M6LgMvGXaJ/jNgu3mjOWAKDtqps0Qs/UD+acVe0nNO8e82EIH4kB -HAQQAQIABgUCS3BG+AAKCRAIw7pYAkl+sWP7B/4okGqqIRninYsLMUrb1UuEgicA -qIn9Lo10coAExug8dQrD6RsUoCCHJsoKlUeJfT6wXYsiW+ENiZSKyPTTq88BRAyv -d1xRfzngSygXd+2k47dk2Dh2hbKYCl0csDklq6KMP+6g9Dw/O9U89sAL9jFZ1n8L -97PuYPeGqZXwhMCzA9Ub0hAUR+jugVJ4w8jcdtsuu5hd1k8nFJnYKE1EuD1ed8mN -f+kb1V1p1Z/JIh70IeP/ptmqaRBTj40LrCHZdVTjR4eY7npzpjTulDfKkk/vBHhz -Ra6AVSLaCvVQ5GpjivxLcDOCgN8awl7oCVw8Mm9fBEUpqZGnXCCG+sgKQGHLiEYE -EBECAAYFAktwRgMACgkQh2HwCBUeJIlq7wCg1t0qtNj7zTBNuonh7pe2uPLco10A -oKXkLR0DJfhtfxSLgMAWBCe8ma8miQIcBBABAgAGBQJLcE2JAAoJEEwefGVEDFQ3 -YjEQAKJH3Fozl304joefZPmb0EwKIoBbGXiemt1AW2+J3LxwYTBHiB9DxgmT50RQ -j+uGXemv3109+KQN5RsNdLIzyh0FK7f1B9Hz7JXLXph0sKeHSOiiLo/mkG78R27N -gmAMsbd0JTn9x0VK6kdAiqlS4QlPV3itZKOCywJp5vEH4NuYSeWCFzoy+jsIVpLL -CXLPmkSJZwr/a4OMV4HPoaMCZx+c1zVZmP8tk01JT+V7a9ouEkUL6a8on/sElul/ -Q9OXthUIUnjdKdxhUsi5Bpt4x7/3l3f3/I4yXMpHCU5KVwG8pgu5AQCka9lxyYiz -5zZ06FtS7buJGzewysoI8efnqvgjOrL5tUq3qOG9ESqNZlLUgz8WFRxUtPu0AP9O -Vgx4gu5y5A7ZkB3E/ThzS07YNd125xLqee7QO80D5Rvwo2BMHzfiCLjBnbbNKTCd -SMQJFxSiiuCYA0tSLpPdRHS9mUp5q/uiSTHEwua+K2i68rRqR4aQC5eTrWoNok92 -IRNa4ric9BU5FnDMO/DQqTNs4riKYPIL+bK5zmrjZLLUiVUp+rgFkIgoBjm1lqun -nAqRw00zEtfmUJgisXcuZSjGeVx9lWRqbUpcFufUYBkyhdL4cbWElPxMfc3jCBBa -2gHCMUDj6EJVhmzV2eZzLKy+JV+a/7qy/q21AJO17SBNlT4yiQIcBBABAgAGBQJL -cGHgAAoJEEnQdGEhveQWsBgP/0aQwpWthKRfKIKY4CzWRetDf5R80CR6BEC+tGUx -/NojpQTSc81PjakLKDnPHvgSqh7CUqsxNBTMZfN0BSuLVwg/i846ZgIMP1cIzidx -QMuGd6JO6HDap6lS0FRrCoQ4HOVvspZuwLlrSjg8tvvlbrclNfolneCBtZS90e83 -Mr+IKwee+QCLDDBJfGYB1/HL5eRHp1OY8cBCz/1aPwgnmdX9lDpGLurOjD2/xafx -B13XXlmeeGS0Szjyu8/exvsIdEAe1KvZUOvXniTc7UCmQWT64BKAmWyj3v+TCxwY -4IQ8k08ASabdgmbfaQJ7XVlmE4ucsSC0cnnWzNjxrbD6WSMtCCYuabantQh2tluM -pWQRvgxdk/0/vpAn2zMaE4gKT7IxqduP/7BDzLRK8pqz19TdqVXWD712i3DX3guy -zoOUVY3/od9Wu0d+7l8vEEshj8YQFBp3Sf18p5SnU34kymC/lgosIJWVHhGlpSBB -hrtdl+5lJ5PLe3CUE5lb+M2e7JhfMmJh1QqMooOuDEFuX4EHEdrLTQeZeYPtB1Xz -B1z1ZV2e5Jthu0RmPLLA18w6eCPRxK/szH7eEIKwZ+AMnN3RHE17WwacvYwHvnQD -cUrX9I0iWl6H0cHoPzYCx8ww6ho536U09N0NSQBFmoFImF4bvg173MDO0GWEcIUl -EocdiEYEEBECAAYFAktwbOIACgkQZGJbiPqZM6OCzgCgkhfr8LvH/yDEXA8UhV9b -Bd0upzwAn00sFLnzKFv//cKLD1U/O08ANUbtiEYEEBECAAYFAktwbKkACgkQMAKN -JEgTtf5XAgCdEHWZCns6lNzYyg/r5WdzGcJrl5wAoJNe/skoFx/tZdBzocOFH9IM -D/IliQIcBBABAgAGBQJLcG58AAoJEKps/C0U95hcgQwP/1GBZKYuyzZ33p7Rba5l -kTjZ1UEUL7DF5NXRIiJMN6yhW+cbwtcU1t2OVzrpfpgg3/rTRC8DT5XV7+iUy1SG -ovvFJ8KDcKUHZuQnl5gi7AlFd+3l7zRtnm8+LbZpN4BOx1D3Mq0UqrgFWc+hOJLC -dxChD+MG48gefYgnQenEMBEYsxbNlf+pI7ezl2MZWckF2j5DPB5Z5KfkQwcMjIJj -8skG6aiSI8i3wLT71CeGgf2ElOco+7WG8QYDe0Cv/4oyA42IfwIchUiUNOrcTVX4 -8by2mNjVIE5ODi94wrTZibzlIc/X1dtRvGU7Td4k21XKcXeKCYmy4D92eRpTlvuT -cHEsbITOjanxRcbnhL7f6ok8oJJO1kJE4PSYWbEzIspswZH62/sZ89JSZP4h4WMz -gi6mbmkltu7QiJPPbvQ1s6E7c/nnrl3oyFwg7Dq1phoCccrrTwFBUo/oYdL8sml/ -G94jqc9vHqyTX0zUFn6ttoBiZUd+h4pbSeb1nJzwW6heqRzX9lko5S+xMlzt1O2l -8H4UhpE4KtL9UjswW7WbivX94WI7tKST/tJLXj9TqvMPE21+qQw+WIF7LSCWtI6B -30pyCOLJhdbnxkxzkD4l9cg59z2Z6MXMURAEAx39XugFOW3e1qrQTSgBZxBWdNSM -YHpHws49i6ZNEQbhZz6iZZImiEYEEBECAAYFAktwb24ACgkQFPYxDS3tCMvMBgCb -BTlR3ugaPTRrJwkVarxy/UDAx7MAn3jj5WNLVj+0VYCzFXChm3gVuIPdiQIcBBMB -AgAGBQJLcHGtAAoJEKnIbI3Tro06tQ0QAJhL5VH18ovi0tBc+voS7m5wi8iWkBnH -QtxNYR5Q/3T+6xLgRkuZoCE+p8Hsh2CynPAn2LTVX9E1zPmKz+R4c1hTpv7pn79C -JVKi16kepjN85YOsYaoyOY4XGOYjfZoSC2IeVteuP35tOO27ZIOHg3TmXQZbW3LP -loIJkX+cqM9CNWA+js6lBeo1lhjiXBJWj7Q0s5ul6Bo7KmK1RWlLAdR6UOADwAB/ -mmTghgYJ7Ct1m7jCiFfeGo5pRHfq549zKvwM4egAP5EDNVDec3AErVjln5VIu8SQ -p6UDF+EAWRnVpJTgl3HBUoHb0tex6GXY/trVVVfv4PxLYDRVinZe86+dH81upXRV -NKEOWlFtgJVMj7jt3zZZqjfEHIqAF1NJKYVlbwPlh7Ftjp0Xz486IpViFQPftb2S -VpcaKFHLCB2uRjFIVs0yes+GJrDnOcFbJPIlVg+df145N9oPyYOncs074mOn5o6p -ONmfwF815+TGig4mUjR1WgGMOw7Sn++hfIukf9/V4bRwM3klGj2zP5vNV5iY8Idr -tNbW/4cS0T41guJIg0ud/wCOCkUtvZiZ3cBL6ua5xUKUhSuuOZkNhmTGratMckmh -GZmdTTbw/acm6uXxJzvUk5k+Xb0VvDXJS5+f4l1vaIlBV8FKvme5CPu72PYcc31L -Cs160QxTx2jBiEYEExECAAYFAktwfooACgkQO7/Pd72LBQ0SyQCdFBM/rbXWRgVW -+fzIp02dGm7j/hUAnA8VxiJSAKSknIemRC073pLfYCrHiFYEExELAAYFAktwfo8A -CgkQ5qwtIrZoMEDkbwDfWEy4uKWqqKcgZhj7Bnk3SqHe9Ijc3IPCADHeogDePN2D -WPG60HKTz7a5UNW2hAZlGF5oKYzF8h23e4hGBBARAgAGBQJLcIXoAAoJEAMS6MNd -jNp7jp8AnjE++iCY224hB50XJNJoop8RNPLNAJ9MxA0Oy9Q7tJ16B2iae7dveedi -bohgBBMRAgAgBQJLcI5cFRpodHRwOi8vd3d3LmJsYWFwLm9yZwMFAXgACgkQctTf -+NTD8ZcPdgCeL2Wf8Polx5+IMEdVuCY7sQSmoz8An3AhnECje7ISBW7evyc9cYwZ -nV5tiQEcBBABAgAGBQJLcIhTAAoJEJsL4k1UzNW/oEQH/1phU67w/2jcqM10ywKC -NeUJPpeD9nP04chpeA3ks/JRGOj8dtZJRB4XwsDsvA6jg6xdq1+LRHPqmQCwdIHR -htQ+B3PS16+g6QUZO4BzKqh9AtioBbuifztFlZWcFNLmeBJp3/f79WHzZgjx/7n8 -pNTlR6LxfhE3CJdPrtGS1S3puM/3WjlCe4BOIV8dbjFe2r7aPhLkyUWy7+STTFYQ -LBzKYqX03QtmdSH214dUhUMoUczlYZ9ZwZipg/1Um9dZoL+HOoNqcv9Z3yhK+LDE -lYVJLoxNJeFOwOqokraYWQXuIGoU+OVXLkWBUCYqqg3D+uKzAqEBXwHC480+KPDd -mTqJARwEEAECAAYFAktwi2YACgkQAn/lWd8zsbr3Fwf/XgeJ4GKhA5TKAmA1Ugwn -6mlpYg2bVF5l42dy3SDMiG5CQWhm53HgTJbBtP/7gCo9Si6xjCcGSVWqakxGCVgo -ZwN9EjqVuK9kHx7DaeUXO7biMTiBlyKlIAxB9cskjsDzbHElnsRLER8Y0sdJdhqD -sdOxbsdr7ogH5NQmnxP1jQXEI+A0ajZvO7ntEX6zkn5IFjTFIxqoUGMwf8kNVLTT -hbXBfAwW59/HdkFayS4kDNFp4melf+6ZGfhPKHfkyPOnf1Kz4zRVu7mkhqz0Qmn+ -5tkAnTinYgGK9T//TRRkTKIZPN2LJkGNG3G+aFJFAL6Paf7TJHpSKt7M644zgEGL -/4kBHAQQAQIABgUCS3CLfwAKCRDcAfXosoz/DWVICACN2cL/jHL+dBG8tNgYkIvQ -Y9NDn/OKnZtEt0uyXyoF1YGzKXQmf9XTjcqtusnHoH2JNa11NlPRQg1pqvVYaOSt -+BJwZ4Xnn197EjFObSTKasg5qVqcM6zVExP0yP5EoV4jqV1Vu/zViGTT30CsET8g -ZVoInIauTw4v6iO5N8IscyO/xFfq04vL3t4fgzKR3xoKIeneZEAMwcqFw63Z1KTm -lVtrCH5VHff/vAJBo34nrbE3TJgXq1JY3SbIhVDY/2PFK3rPwpOS/dbQuRvQTyc/ -Pcu6a+DvEscdu1VgXQ4E1Kef1AjXMlVTiXKYqv1Jc7+F0syAE4Ht/mqDAlbIdtPK -iQIcBBABAgAGBQJLcJMIAAoJEH6XKsv+CnrzEd8QAJONFi9xB0mtVUkEcHpO1iA+ -VjqnQcs03mpojTqr873npuBLcRjbEWiaIYVgvRTttdb16l2MIrPbeRWap/AMtVet -v6MhOgxDiAnWaWPRWofhh8idM0CzTfw2cldcbiH8Bm4hp7CMkn88NwxCWptPqvwY -o1lV2Ponm7Zr/2l7E+zjNdp0G44RhNlLQ6PjBR40RHzUKmowDlDsIrBDgx2gGiyq -OHVsS0r78hnapehf43E7+vZUdmqBG2MrERzxCAQ8fVLCgooiMfbpbJxI/UReUD1N -rGpCCqXJ+UyjPw7f2ycK4T+ga4INXtICEMjjXX/wKB95bby+F3GTHyoHtH2oYBlN -Y7xsEJs6ErMxw97eN71f++oBoDyBiw/OYCo/MwsgIrqlidSHapq5kceO6n3mzXNo -aPYZ7toYW7fj2LzwqMJExEziWrY4FxvOm2i4NMR5qdmpRluC8MKbrIxpR5MSefv/ -vyfDd5zQCQ/1TPBKwwnHlXXCWzXk4VgejvCtDuUYzzS8LU/HvZAxwYb+hHOJ1fkv -t4T4jY6nHMpEcMzkOy4fjUvZ0PLqiNfaJ8+i751F2tWRifO9JEWvRUhXWoExV5hY -qrE0Aizg8w4RVM5WksPSRjR/Sgb/ZkxiJ0/7t+IKexrTv6hzwcyuJ7DH3YybDbuZ -q2g+vttV5S0/idfVGr61iQIcBBABAgAGBQJLcJ/YAAoJEGPENQY3sjhyBfgP+gIU -UqjknFQdNJ2qCsUAVjwOS2j3r/LVf8LWMTohKx68meKcbj8Un75WsFJ4lM4bIz6x -QmUB4Io7Es9DO1H93CWf6KZqB2XY9dNCSbtx36G/he6rb0gp1diQzj+Ap1URlB39 -8YbrqGssB/XuDPxhnSbD3IlUbi3o0W1aACwwgzt3t9Sv9t8JdxgiucTmWHpWo1SR -byIeZtWj3SNR4A+mN8fiI1DCvzP6TYNJXxjnU/5WOAGlE5kPueFy7iS0hgQTIA8t -rjL4f5QXa6+FU25ubjjL+0+YYUk8rw5AnK7qa8UAwk7HMfEQha5UrWvBELKTNAFC -o/hjnoNSees5uuhKrl9uGrS/GhKYND6/Rqpd+osN6IcodY64QXZkLbuzJX0+Dy+9 -o2x9es3aXKP83qj9gLywyKJbRgwKkC6AzM44PlMTi06OcIYlrjW+GaecH3BIrPpU -/1hQp7qZHjuvIEoC2Zx/YqXztqUHrWZrHtHQpdKxp6h/y23GlbFyVetYCJHp7+KS -IldDxT1UGaRFiFxhmhHZlfOg2K9lmwGreBGbSuYLqIoHhEZplS7koPKw5GbnMWz4 -531pqP0MCnYogjYdOwmgyxYXZ8uDWyrYrcG1/xrhtdOOdIbo7GF/0CMuiFI8aPVH -hKFDn23gN5/CZsLpEjeApWsVo+T14U64NHcGAL0diEYEEBECAAYFAktwm2AACgkQ -+xPi3Vyo6SdlBgCfSA5UZZX3/ABLxxJwe2CIshCXCVoAn0PsYtSeMMHPDZhHq3Kh -Chj41FhhiEYEEBECAAYFAktxSiIACgkQMyVf6J54PgXdkACffHR7ZKJzC7rp1Xmq -gAGbR6K5+FUAn1zBGp0gjFW0NKebLMTQW4tO1WlLiQIcBBABAgAGBQJLcE1UAAoJ -EPQhxoNeLeN0/z4QAL816QE96MoouKO4SZVlKQRZsJkBRZqlRB9tO0Abgvo6g+mj -/4q2jxApMF+8MjWrCCWWhXkjLGvE1F1YTP+DqCvAjbpz36jta/qSAXghA5mEeGn3 -THUJJon1EKjoshmk35whHJ+qmBtiOtszLD+uAeH0ptiaKpDYQ2VjU9wFdLQJciJ4 -bSh91VS0IB3TTk/2FKwzy+RQCnccW5rxWWNoJRFFPXJSh6W+8a54aQTYvpBdi0A/ -XGxWr7hZlin40/zOvEDrxtHZm99yLjJPAzErZrji4JJzZ9H9dtEYugnKOEpBJ/HZ -z3RR85/NlnOpvEVHXQgyZfI6rdeJmAFriN0/q9X1vd3FAW96UUOw0KdP6i0XiZAc -JPHTc9c3IOyc5REWQjlOO/WpHZOuhlldrC9ZVfkghsLQlveBcKFBMzjtz/1AW8fX -d6HriBxyIu+eEQOJepdmVsFMpGM+SGnbAb+CiewTqRvbAHEoz6HOyoXtKLmjug2x -94IkDmwP45iVTL89ST66C5f2F+b1TZLvp6A5NEn2u68MMygpWBfhjG/L7d34LCRl -vz+2FXAo85yyazhGwLpB0DcM5l533jYnyU2S31+MQjQjLnUqmRIxTN+dkkSnMuyY -+1vKeE/RzJgMdVlicx+27s81ZR3EeLbrY8WUAupbJTWJafIdw8RhZjY7QcAfiEYE -EBECAAYFAktxSAgACgkQhBng22i9o0IAfgCeKoEZmBiJAUBhKSeMxcCiIH9gci4A -njQGTiP9hfdkRAhsrxYiAxdCBCdXiEYEEBECAAYFAktxSB8ACgkQfoEUoHXLGtIx -PgCguJ3yfqq1x42VBs18pSGTlXOovXEAoLEbLGlajs6loCFzmO5nchdIF9aYiQIc -BBABCAAGBQJLcWVKAAoJEKuuEToWaJHHn7wP/2MfC7ci29TCQdWSZJyjXeRZdSCO -rAPBnFrahVRMIHHJBjWqmLO8Wm+oRh7tkb0EOSZGKZ4BIRM+1GIgeUl0oAad6fBW -e/WCjtWySaz9fpfto77u2Js7/wBEfr3Y0Jrrt98L1DH2aU9I9hlVIp80saO7QO/M -OIndrdzXDauhN5Ir8zikQxMkKT2BqPoo1Nfwya3wUlSQCYZKzYLHn6pVg/jT0EBa -t740PQmljULCtHlulj61yUD1pzG5yD+J/omFMGgkbFkT1bBmkqhus12TkfqiFjMI -EUrSOSgt3kE6RDbrQI4VlVRMlPyhsnliJgcbA4HBXzHg7ltIezlmlE1/i4gpEs7B -nTfda/KmH9UIpUB6Lg5ZL3wTIxFdnB9daZNFLCRcwrboL0+2jGDa5o++sg4vbSyJ -CI8NpwK41BpbPJgtaXWCzWjaadGY3c342YuNj6ZoH4Z1pvt3fU4zGujTHHCQn3bG -EMoPKJNDEj6U2UBJRaPc10qGryaQGfiknM/feCsjO7UJMmysJpFpqpOrhf4rl3tk -HCXVq0qxmPLeU1IMed1KQfigSqFBDPRQt2fYEt2AZxL7Z2XbLfoCcYty7JrKJhzv -ngyxhOpjS4afXyaxaxMFX2T4RdJPHMwZHpOgd2imqiUmWGoQO1z+w8qfVJYeKwDy -fpF11ZtZCoa5Z2DdiEYEEhECAAYFAktxiJYACgkQjvke9ZFSPD09xwCeLy/hLe/i -crTRK8tO+K160Pvv6S4An05NkCSo0bbjWEPkFWmtjitGT3jZiEYEEBECAAYFAktx -bfgACgkQUElL7eJpfERn0wCgmkSMgc/wB0RDFQnO6xqeVOmQs3kAoK8/ndlIZVF7 -lRIlxkzIajq7laPIiQIcBBABAgAGBQJLcY0QAAoJENADhS+9UlKeZuwP/2oIuQCM -TzfbWRO2AGBq2IJmjRFZOhnbbUfdhm1rBzscaAAXrEpVoVmBwmzovWpz+B54NiyS -M9+03o32P/h/a/JyNJYn3lvQmrTuvrDducq/RIKwmCMOkz7042M2hW0YZnbSizvw -G6Mlx31oGFmXxWZQtKn+MjZZv2a8G9sUUwcEuU5GzvSY/tjfeNJMOFaHdQSXrXOc -v9c7aC9obHvc73wPWpTUPxL7+Bnwre1c7TdzBVqf7XMGTKcuSoYzFQseBdHisteh -LTfUtXA3PsVJf1Gt0ZWRLMu1v09X7eA4N7VE/qm++RchlHwrftT6VFCWh9OFCN8P -esAGMpK0XvrlWkpVM0SqUoMA9V2FmXw4huUkxPmYQlcm8COsLxxVIC+0XZ4rJGPw -9lnL+wcs0U+Crd6HbRQKHFVkYMqnhr92BfQK3VOF2z7QC+If2L8L9jqURkYyWhki -RyImiuQ4dhbCl1Q/LA6xGM8RmxclSlGKh+jgeSi6Tb550eJ66Wi7wjm8MoJnsRNN -M1mqIV9Yg3rKqesJr431gKoriePkOiDRD7Y/THNlJzDBYt45N6LNP5/gjBDWZqPd -rG1qRRMKL/kRDNnlO0XEhiCB/gvBgE3NiIEA5zmeSz+0oWsYsU1sk/sOGC162Bug -GhGlvvUw8vm4AcKbGegTUNnADHcc+aCuLJg3iQEcBBABAgAGBQJLcak+AAoJEDF8 -u+ZDBCZ5HJoH/2PSJUD+NNFXuu0SXWT4q5LI5zQisbfuW9pehqzYh6i4h2vZmkvI -vQWwSEh9E1wPEbfA7C3tobKmhZtON+nL+OTIBxq6+Fnd0gEPupPWfx6icLznUYZP -CeFV6xfBgw3f6blgMCTFQZMb8zxkwjOX2CaiORFoLncnFXPgZXEe+RBcOm+ug5kt -7dkkSz8T3ABo3xKU5+HNjQB4ClhwNCeG1lZNbIGfRuvUnmREjoZBZH+TOQjJihCy -8vg2/xyD1Gl1bYVXhndyUUJpURh+agstWwIon2xND1FeRjaGcWLeyYtYygBGOthm -xhqfZ1kDHnwUAlfU5L4QvnAJuGVdmk8kN9yIRgQQEQIABgUCS3G4NgAKCRBMXdlZ -+wh4u+feAJ9fJOZlIGIrDS/8NDLkXmU70OiC0ACfU1cql/uJ3uqsZ7HI2UyS2bpL -jzuIRgQQEQIABgUCS3HT+wAKCRADTVrLoH19X0GxAJ0ZX5jlEOdZ5wYJ9ySwteX+ -UDWtQACdFqVDrtcGMWOW02YUuFN2FzAmiL6IRgQQEQIABgUCS3HVkQAKCRAvGtBz -KTwF/ZaEAJ9mqdg9O7ICDEMzSND5L82vTbTvdQCbB2i8Bz7ERAWg+wklghq5APmW -xPiIRgQQEQIABgUCS3HqWwAKCRADs+HWWNo4HSutAJ91GsrW4q4rD5mZjjafWplV -MW4pXQCgov/jA57XcHQfTHA4l1Ds7nc3i8mInAQQAQIABgUCS3H67gAKCRAxpj2W -7BQLgdITA/sE3MVAwYVnhJzFWeGjjni3Sdv+JwD56t+xwU5/3r3uKNDd6Ub9DDpb -XdQlomrSWgCyeuHeoLExQq6hSETxwK0z4Nwqboi3JQqki27zWF/jAoujV9BQawls -Ryrxhs4pPWIUu0i07JnTSr7xLVj+6yH8vGpemV6sVKT7kxnGtSIC9YhGBBARAgAG -BQJLcfr2AAoJEP1viMYh0KcbKk0An0aLd85pAFjCBk7uPFeiTI8mMRztAJ97qVyb -rMu4xtpJqfGK+yMRmS4uB4hGBBARAgAGBQJLciKKAAoJECS3RHIB1yrBCesAnRPj -tyVznBWg+cl98GhQQQ2hWvO3AJ9hK/PxyIlPquFNYaAhBYLJjmgs94kCHAQQAQIA -BgUCS3EpbAAKCRCUhCvIblEcMVJ0EADVBVzsr3Fp4lMbpx3Hvd8EEbEAlB4xB97l -cXgSnLTzRlY/jPAUGGI7RzdsoHKcRGBBStlp+4zy70wy7XJhYPLtxCJkniBVqoKC -AHklUu3gT7fInsPSL/9zAfIksvut2tptyI1gtDjXDXPaSQsYQDDtt17NLHeoHRUT -9080DQ4SYYIxz/QoWNIWl69cy3nNX2KTbcnYdtS/IuYySEHC7LM6dfQf9N8B7NfT -oF0yJEhdw93Ews5CIzSHgvzkyaUusj3GoXLh/wehppkDUTMNaZW+13Rg5ypK5JBA -t2SR0UpOFD/ynpMl17EYYm4nEFJDiWi51/wGHvaSrA8LuwHbmFGKHBLFSV4gC+61 -2R9bIBiEgvJAsK9S2XfbZGxVjPJxK1dVvI9ogshhlRixBdM98V2Fjpcb+k7i7Xuc -46Bcz7Ez4iyKIQOfXRFFYTuCKZ9gG1lcuc0FHdZuNzSMureBb8mNbPCBBSOnUAAX -1fN0WNAo3Q7LeW6P2IiQbYhDNc8RSxh9kdAeHQ2vepe0BOPVzc17t99ou3iF5yvL -apsVI7zbh/sHrDkQw/qTORn1mFb4y/dEcM4uBBe/ZUFmvsZwtXX3BnbhjsBUMPJU -Cr7tQBAjhuYQL3QcAFKeX7ZKamyJE4RSlpyYmpe0I5zZ40mMVha1bBVGRZpn/O4n -+/opBWi29IkBHAQQAQIABgUCS3K2yAAKCRAyJGGhiZgMm+46B/wP+PzLuLRw688L -ceplJYC8QLsU9aSx6gJrRPRASO1lKQR8f6FXnQffFuRnYB3I03so048n1+fAZguB -778aLGM4Af0fZKBr+7JQpRG7Z8GbXeW0Hs/rTiw/0ye8f/IynTCStSwG3t+HWoPx -4LswYAZKobAh9J2ns/tNfmod0PfaecWJFIJZLf+M6dkMxmQhU+kurdzg2jVMOXmV -JTvabczisHlG1tF7Dy5Jzfx/OaBACUOFAa5HHWFePObKVtKawv4+o32cIb/52KAM -TA3bZNfgSEj7dFu2FVgDAESPHot6CsXD9uR3FGOJxmJdhc02iaCY0peELeG2k6Hp -mMJeGWI2iQIcBBIBAgAGBQJLdAbuAAoJEPQwwUXGQfOMXH8P/2EDD8c5IttSulRM -opv9YZQEbB+PI2xU8kIsJJvx01Ez/o/I24wqGhWNB5d5jkO6S79ivP+sXJ+S5rDv -u+fCIgwYYgsFkjOkTgAPX2mR1lOv77fS9dCrhCIXghpH4vviyo3VszUsFcx5PMXW -+4aRmNfgumpNQFKdK5Hn8bW2igkQG2bILFm4wPzt3JNomP3h0M+sw3acant2B8Le -eWfgSc0nW4UdcAEW+Z5JbmUUdZMBV4d+sU9UM4uUi7s8onddLKlHTbLM6lVBgjhy -AxMVd1/DtYf+DMLKiv7RxgETTj0lH4wnvDaOYMrKzUC7cx6/MbTDWZ9VmEMTfwdK -g2e5qpJHDfqKajQVNrjk3TvOg/GXKbnPBQV0UdRjRcEYyKflDSzwffztpIxO1ha9 -79kfB5RPVmQPFbQPEAWo64SmBIWsYyHuxa8k63237n+HdDat80xwlFbF0u7tOBN8 -zybiN+cYiCWPZPmumSBvsg4hb4jxAsY1e1wprqQWoLAYOXRlV6uiFgkALaX3wDBr -5NTW1bDM3IB0gVVuzYzARks+8Ko1xBUtRh5Vsh5Ifc/FdB8IbJIqiDmHy004ViGC -wiELVmVk18/JbhceDDacrO6XICLGtbxmeVMNVattjznfd+AYtxN6zIlm0L1GFjWU -ZDL0hfEBCJURjrOrrShTuHJoILWSiEYEEBECAAYFAkt0DQIACgkQacIxuZqlam1X -rACcD4bDsZc5R0UFhah+C9xMef9vR1kAn2GHvv6CGf3+5VBt/qAJjUKR7j7IiQIc -BBABAgAGBQJLdA0KAAoJELjlCHdmR1qvksAP/iWpIyJzSCXe+pEdL1YmvVuKBTsG -Y1al9/YYjWcgPPmXX62mKWzC8HLsSRljLGrPXvpq9mDUjQdtS0sg5Nb4yLZ5bt6W -WfXqBVSCz1dPsAWscEM59DtWnk1Pnay/SOdoazQRlxeOdzq6+TcxltBDMOsG/KJI -HUdBoDYlaEKBkN1exeIDB56iK2HDPC5IM1759XvUSeYcjcSubN2Eewkiz4xC/n8Q -W9mHPHGVl4a9QYjWSrhBQ7Fj21x+IWVtSjb3ELt1KeS4uiSd8HF4LbelFS5+Lofp -Qs0BwWqaec7gdbSiKiXlkLHmk1TuuaX+zufxnZl+U2Iu5kOg8t3R7/wPUDSX1eFG -AwnyLhX699B+/9tw4VuyUfIjQFNvbm72rVBnj7cQ1a6yWfH9VJfoM9q2Ei+a7vs3 -iFng6kY5AApHe9b0nYCsGR1uq7x9ZhQ7JT0LAvEoL3vs0PlEKwyYpIYuVty55DLP -1r2Q5hFlgG8MxlVKumZYdaDsArwMsUrVglirp3CUqXt0zjOIhBD+wZ9BvW/7i0ez -GNPVDogeGd7EBfHHi6YcGnzBFl8OK8ilobMXNLQaGje0Qf2yzmdA3aliUI6M0P/t -DAXFlI3ZxExecSJYnCu0Iz7OjrZQmd0FPzIPT7dCfy5a5ya7cUYswBAkARIPlHff -RFC9oYHatMa1JwXPiHQEEhECADQFAkt0HeAtGmh0dHA6Ly93d3cuYTJ4LmNoL2Rl -L2tvbnRha3QvcGdwLXBvbGljeS5odG1sAAoJEHFtRBM9jCIt6KQAoKWUCwi20DnL -XVBl1WgPz6mJFPRUAKDEjkXtbrmbYPbknYpit7GsNJ9CjIh0BBIRAgA0BQJLdB32 -LRpodHRwOi8vd3d3LmEyeC5jaC9kZS9rb250YWt0L3BncC1wb2xpY3kuaHRtbAAK -CRBW1Sk+yXoGVJ5GAJ9ckGbr2y7WWU/wGCU0Yfu6Ir8HYwCeP9TG3aUs48PE3cfT -WeOLmAOAHbqIRgQQEQIABgUCS2/tmgAKCRA1Cq18K4Wd458/AJ4+wm234K908dXQ -HhIy4RQG1CT7BgCfcmXkTyRyvM7T+JxPhJJjS6gfyr2IRgQQEQIABgUCS3LIowAK -CRBzHK/TU8GjL4z3AJ0UEh+HkOjY/sJq6FoGHsdx/ux7SQCgq0uIa7UN/Z7iKAeU -srIyzlK0qVGIRgQQEQIABgUCS3Mj2gAKCRBo81j2wTlkfI1xAKCwWBFesU9MRILG -HI506QlhIQO6eQCcDrcI5O4/l1XjDbESvX2LEu+EuCOIRgQQEQIABgUCS3Q9+gAK -CRDlMRXluKGcaXrOAJ9jw7b5ETHkHANB3ksP9hVwWk95wgCeNWlG48cQG1iu3Fd0 -+lvni6+Zyt+IRgQQEQIABgUCS3RCdQAKCRAbGy72NBX2dj5nAJ9WwivcGyQ6dpS6 -IByYeXMkWrzRPgCfa2DNk07yFRWKnYmTvLrsbcmy0KGIRgQTEQIABgUCS3MQ6QAK -CRAvlRUIquYCLmjDAJ9purtnfV7trkW60W5eM52YP3zTTQCfalGeq6besD3OHisa -0yl7Q4rG1mCIawQQEQIAKwUCS3SuDQWDAeKFAB4aaHR0cDovL3d3dy5jYWNlcnQu -b3JnL2Nwcy5waHAACgkQ0rsNAWXQ/ViTYwCgn1ZHQsCjYMJ10xHK5w+AQskbhi8A -n1pCrjEu/bZ5nu1TVK5uKZplWBpliQEcBBABAgAGBQJLcvyXAAoJEBqCrVe7WSRD -2wgH/3zfcjTsfJrZ2umR0dgNRMCZzHzb12yB5rTehdvKopDHtMFzOWnb8+cNJGS2 -uM5sDIzcWL11WMSBcydOxIWzPm6LI5RQWmhwynrYqcSd0yEIym2cUFOKj4lBg21w -ZFwDQ3y5qSRjGc9QXbp1HUsNGm9/8ssbt/3zLLXFrE81DtQdiw1RzY9bruNlfcwg -cAvMDItZYT/FjwT5JVNIJOzE5S4l/BhNfVI2msTnMaJ7uV440EThZnBlL/MjarG8 -Fpr8tvDuOc7IEXj3N//oBKJc4wW7GMjwHdd99/XURjy06gXvP57BpIeqGXaTCB9c -kmWq7VTtUe4agzrS0/ok8VWH4P+JAhwEEAECAAYFAkt0O44ACgkQM5YViOHCGEW+ -ohAAhIaTQ4KOCruZqfR42mHbixS9ON/km9y4YCZ490wtbpuebSbAuEjrxygmFQv3 -1IRk5i6IsXUaaadUK/aex7YErHfj5OLtygDW150rVGeCsn1PJC6G29in4yHnaNeN -p+p+aqdCgf9ePFSw0DUqM67J94QK+Bfckj255bYLULs5rXkNHGjTWF8nDZG6KnQW -xAIFAzxQlF9SVCQNLqm/s4sJpVs3ezCAslCTA6dcTjZouwCGyrVt0a7/RFWkz3o1 -QdVLTc7WFfZa4MijScuhj7P+QwC+WCnx8E9v2sEOPPXCe2IMwAqIMyBwu/Pt7p1V -hFbYxHH0rxF1iDW+DWmRUO2j5esXd7+hmiusa9oHZZV4ud3EhFXevOQyl8jg8IV9 -peWE8hN4moqwgGoR/JstQLHctZPVoKAMYk73R55yrQ0njDRSxPK9soUa86Az1CPU -HVnCC/IMRRu/9785yEDXWEjSEDsy8SIt56zpEGhUwGkU7ZnYiIY/LkFEM9YJBbpk -SSma2XXylqeTkU0he/NalO5x91XoaEjDqx89TL3tyh3LhY2pJ4qcplX2joX99W0E -W/ZVvpLUpduqi+MC6x0Sg/CplZOtZ3ZUsL7X9CMNZh37a5rF2nN9urZnhTbISNpN -dsRmmGJlpSAaVDGzNQPb86l1qeTC0fmGSU3BPr1R6EecbkqJAhwEEAECAAYFAkt0 -emQACgkQTMIA1oBLMk0/gRAAmepS7ZScsznXsRkhictWzoGBXOD8A4iJTkW2c1d1 -MttmDb96iiMfGunFp0l/uY80fjQ6bbODNv3SMgUAq1Q0HwKEIlwJGUmg6jObcfFy -5pzq7N9JBnQ7r7ZVEkXc5sPILUo97+LLD5GzKsDpw4QI9HimxrAbuuojp4i5yaFx -V4EvnKu/cc85fklkyk93yNujgEBCQ0Gz/d0nU/qa55hyAUPwdQjmPkeupsvGTYQH -/+VqCmP2udSMXicM9Tp2WttvgwdnWkQ/1VNzgPpj/MbR055q84LxGeKpblISozSt -w/VnWbInydhYJTRpgUodybMmBQ6YgvY30Lk0cCMMggv7bXyFW2lajyytuLyJAqRP -TiRNe/78mqJn47SHhBtMvIjy5evYHZdea3QZETwbvHf6amVe18/kH681K37OBkiX -bZkGvxi3kU0gxkl9CjiYeKt3xNSvtU/nCEIuaYoRfDZKm89jIEvQ3hxHblPVDp/g -7Vah8ltaMV2edZiJ5hsbpVNrKiNp19movpDaGP95R5sH/wiXH59TJHyiXJVUpiWw -28L5dt8wik+wfIxQQZ2ucq3tRJ8cYRT4Z6p0UpRWsmTa2y5x499KpUfdJusIY1hb -DPLc1LkzPcuDtmL1gIVaFDQX1W/sTZ96jKDwlxd7eCfH+xbQaV84GPldFiVhm1Oz -viuJAhwEEwECAAYFAktzEO8ACgkQrDCHmqtVsxLhyQ/+I0j42faXyyN1muPFOv/a -k3VkVguPHsRF05Gl21Ub5tlJla8tKPuKw2w/FBv9h92aGdafCFeEMOPUTDFGC/OT -ndmHY6Vli/6+jteHjHW5v1L+oANXYwm2d/I088P3Ehc5COJHjG+G8u7jqYdYVHTG -d5dwmD00nPPHEI2g9s+VBJHLQS2j8ZpKwB2H17k9D3XxPLtUTvLOE7CFyNfnvOne -YyQkCTOGZq6KNy7w9ySroo656vxghUXV54nNj8/B0khwXRPZK1rJ/szBC5lgLmjI -d5hNu68vlSc6G94GrygEQlB0iKt/cuTjOUSyy8o3byYRHCPsqFwi/GmmxfhVAQam -iCDqUrwP/X/6mowEdbWA8oA3V3kT7JspGhUlJwbbEA6VnViQ9GnpjSFwAX+5T1xZ -6TIJpvWc6+yK+zwY50VBY7e5MPWmcgRxTdLnQfORJ0A707paLaw4usUgl4KkpOY/ -nkG7QsRyPn0ICEzPsbwdpYYcomE0zdvfBbxTNZ37O16FyqUC26fPApwzSasbTtl/ -8Kgs8ruGNLmZ5cGzRt/z442Z66bJm7/E20iA2+yhCTFw+M9O8xBEl//0AYRop2vB -id4hCQh1nXtgmsqPj637jv4CGpHGaT8e7rLfEfEZ6+jcbOQtQELD6BCSF8kg+FpC -Qiq9aHLd0N1LzPed/JDAYYmJAhwEEAECAAYFAkt1hBAACgkQ03MPsyR4MiDh4w/8 -DcpOg5g4oj3qBKOnqiDFega2o8Yjm1bhO8K4is5yet5xaCqY6eeiM/cL0A+uzoCG -yps9LlWCCy/ZXQsyi9QBnWvcHqw89x9cUsNFyXnV8zn/HKB17Ow9OGfG5nnktFfq -05Lt3WOwbSGyWZI9pWNJ/x8WkNNz4+XbjtsjyptExiVX+hNOREu0yZSDWWQ0HNBT -GMJIfNANTShfjmJl425Id5Wv60JtVwyR0R4A0y7NKrWIvmg9gud9hVjvimv9HJd1 -cRDliNu//ZGkXhxuTgMdE8M9mBDwlEFdjIHbWKFxrivVrjO/JWE0sLQphLyyTGwq -yA6bkCfXLH+kGi4VAXdInetwsvF94F+/BpmnlRameFVniAlc/DD1xsx3lhwsYiAx -rZdH8/EdfM1F8YPfMIbuAFDlWRgaE2dqSQwp5rmg2qPEMNwBujIflM2ZCyjFN0t4 -7wvvFqQ1Z2rkm8N1YULZE3mRxcQy5HOO8WaBNMv8Hcud5wZ9Q03IezYH6d+cZITc -ruvkay7qtleML8GXYzyTHILZKoZtx2mYOOdoXO6fzNJZ5/Uim0UPuDt896DJ3cyl -hhLiZbJTEabvNVcpNAzU7d46mLICfC96DujiWwsA8UnJF0PmmXo+MAIStjAGY0GP -uewJRiRecAvfHWFqRfC+eaN6FZ2Qb40XHp2dBkHFN/iIRgQQEQIABgUCS3p6BwAK -CRDxwFy6aWu4GdfaAKCvwidPThxhFlA/tffObLf9h53DewCeNVQFXhf79yEyz/Hx -rK0KqsZPoAWIcAQTEQgAMAUCS3v1wykaaHR0cDovL3d3dy5zYy1kZWxwaGluLWVz -Y2h3ZWlsZXIuZGUvcGdwLwAKCRC0deIHurWCKZg2AKCeFq5NhWI1B8TU0Xx5CeX+ -rUy7swCg51Dr7kjOOj36lRVdTCYujcaybQ+IcAQTEQgAMAUCS3v1zSkaaHR0cDov -L3d3dy5zYy1kZWxwaGluLWVzY2h3ZWlsZXIuZGUvcGdwLwAKCRCUj9ag4Q9QLj4s -AKCCUtBs1TtQrQqiImhw2pCsISHPFgCgnzLZW3Ap+3xNgUf5kjiAoPSSRU6IRgQQ -EQIABgUCS3bbVAAKCRBYgr49723CGs/iAKCm9hTDbLMpoVrT0tCKBT4141WafwCg -3NuYaXCiwSC+Kr6sQg6NtaS4cP2IRgQQEQIABgUCS3g1agAKCRBXNz1tSONmzEXY -AKC0bdIDT1Pgl7RGPr9Cc+H3B0NhMgCbBpgDhAciCpDnSmKa5ocWsHrJx9KIRgQQ -EQIABgUCS3g1egAKCRAo5/xiYSMkjxJrAKCCrOFcdWtBM0CuEiAH7AzXYDQsuACe -JOm2sz1/0B2IcGeoCLZJRGnF+uuIRgQQEQIABgUCS3hJsgAKCRDi2j4HiBs8LYwp -AJ9zPeJ7R2FgOxM80v6r4iXOid3SfQCeO6s3rdmRCAYReF+ZeQqTfbZsWkCIRgQQ -EQIABgUCS3hjggAKCRBqWILfhEBGAuYIAJ9grIGU+r6sNS3Lmen4ewkY9s3hLwCf -TXPiXDj7VqVosdlUEkI9If9JszCJAhwEEwEKAAYFAkt9C6sACgkQZR7vsCUn3xOR -Kg/+J+EMExB6kRR71JqULTRhuqv8TqJEtBWr5pu7A++uXcGKTYZXC+8FRY+wo3kl -WiyGUV7Xd7KL0LVQYaRrMMlUedG1Q4JrfmZpde42aaowbWNV7q4kVY0XCtdIYYik -ASsTcVrpHVubaiEyxvhrI4wZA9WTnDY2JEthOluSb8jtlObLpss/MHLqgxZfZ2l5 -w+rtb5dabjALEw+xGj+2x5l2FmLwgfALG2zOVesvIYnMg2P9xq7yJAQUWNLJ0aBV -I9lVPeYo9dtNar1hJ/PyuD5cC8pcor6rJd8MRzaZ65XWBV4cOLFr0WVksh/Tp3yn -WtKsO1KDlZPMnZHsP+Qix7XPVMKasApgTwdOE5jqSoOXL1zZNIR+QAAUxC6UeVzj -nVALnJoCvw5iG1rfbh91wbQfL9CCgrrhl8ltLehIDY3/7gvhpoDgyN5kesGvjT4F -6m7uT9Kz4cbl49tKr4uZnSzuz9TfXDvjmfgufkQnDX1+QtQScX9TLhdddMSqp83b -lRbqbl+RFXWPAEZ9ZjJkP9EEeIAeQOqExReErm+G0BOwa1iF4VxZ5wdeBmJKpv48 -yWYQg/L+480i9WOAy8LbR/CjiGjLPxCSmpEI97FuOOtOjk6GPj75NmJw8cWN9k/0 -XWbQU197dsxcHEzNkrvpgFukvrXML0OLNoEjkprX5MJCfA+IRgQTEQoABgUCS30i -JQAKCRDtGLaNFhlFU1apAJ92/4vQdMk/VPv+9KwmIFN0jHhlOACfdHeHud2M3acz -BDegV5oY0+C6AgOIRgQQEQgABgUCTNaWwwAKCRD2KOuTR0MgbNtlAJ9LHwCqZ8pm -+oZ8UUxVtAfGOsrOcwCfVj84qibIOjhA7Xz0t0B7+/4UjhiJAhwEEAEIAAYFAkzW -ltIACgkQPZCKs/D79R8yDhAAo3xpFk+iGK14iEG3YCnj16dpq8Tp1caYusPOmGX0 -RHgZhbDAWdsZOdo7GsDnfzJFzNRlfMmQXcN4kYGzCRjBLB51dyf5YAEyghk/yhQp -8+BOJYStziPZiCXkR53OwnlP5TWfIaAW3BlTrxCzZHF2DScYONyHYTv8UzbeE3C0 -1v3zwQRRJpLDG3K2l+GlEOcbyU0lo0BlOifX6BWYGo2iH4LTEe96oGrFWEVLfbsy -EnVkfAEu++3uN4aUDX+crrVU5/wKrp6QEPwvLBFfx3Mfj93XhCY7cTiCQW4ozqAx -J+sZRUiYSeA07TbeefgbPFvTmGuKhQBbjDQr9MceEqQUEkbSQI/zYD7NdAAhffPk -VNt9DDfT3dR8RGaP2Jjva0AAkA+BiJbHIb7+C1+PaFEOLgiWuIOgWH2IDQMzJMY/ -rpT/WXE0jZ2TojCMbWMcobl2PsxrxesT2V9mRH4+IHGPc5Jl88+NZdK+p15avsLK -nVLnj/f8lUka1vLqal9ZNSXHDsRlP75es4kMvrXtNlhsifww8GzDNut/9VzuIwCY -M+00auQBNWYR3qi0MfC+rt2P6lLO2ckR1JxPoHRRKABFEkQJbB26l/We1srGvR/6 -kE7UHqejFvZRwt/XjqgJCZyzXWKyDePoYJW0vsaO782W/TTRg5iuDdAZreHTC8YZ -DReIRgQQEQIABgUCS3pUygAKCRCye5RONIhOhWmIAKCoavIFjapwhCX8ZRqsXKx2 -JHGOsQCfVB2CT8im9HODB5bowUvsiY3ggpaIRgQQEQIABgUCS6VlFwAKCRCL+YJ9 -0SjxSpUDAKC8AKXVbnlx5sidq8Q21PyFoF4dxACggEQjqMsLuGDHoNu6zaJnCRVW -yK6IXgQSEQgABgUCS3B35QAKCRBqM9cZPvcx+PEHAP9ughCabCSA+edxne2RtxKt -0XpsJq1LtL01r0tJCfkFygD+OoK6UL8kZ6bdQtRJwbUQ2GoF2ZqI1tx+0XsDFuPe -yFuJARwEEAECAAYFAkt5j3YACgkQQpM/041cDI8hogf9HAPCAYoYRTw1LRaHw0ST -62CE7G5FbbMXyoBIJqIxrsib/C1WaW7Q+2T+rpg9NlGZdlA7BZlYdRQSqIGt20VM -XHgENN2KADslOZOuooOcdO/ICHCDB7VvawDjvNrnTgsCvS/VrKLiOzsUBnn/CWZQ -V6B/SOBe+YjWtEP+hp5P2+6FnL6r9M3NS4Adkt0kzy1h0CACO9onYEuRd2lBLrgz -+FbFAn3ragdcSIJFtDld5NNR119CZiISKEqaa2jdUmvAX3OQ+FE0kVydn7it9S0w -h0eWAqGcEqnXSxENaftD3ElIcaxLUAOwqARJQG1j4Pbeg2mS82NKcdcysAjt5gus -7IkBHAQQAQIABgUCS4B6FAAKCRCLmcSoO0VaJxwKCACiuHvg3d6B61vRd9996zPW -vdPxhoog5Jk6bQk87sqBkck+BkNXlIbQd6pE2+wVv32CXRrOrKCBeg0GzuSgrjDq -8ZvsXOcxNL0J4e3YKGIrLQRBhNEEuh7pEy3HBdv/MLOMkZtsQFCZkrH40nPMotYt -PRjbnUR+sJLYcH7sMF+6aORRsWP+pJZNU5EP2lGnore3P2da/Mi3TtLV7tP1jOF8 -RZaT6wdZT5B37xcBeuXuhkzc482rH1ISFXzAWh5i7v5BGbdWYEeXbzIRGfH2gwmZ -hcD3aCb+ZQB8aJhHf0zVIK2+Ydr8s/L2dPVVLlGr30Wcau/eqs4Bx7GzhYRlkpYm -iQIcBBABAgAGBQJLf/dwAAoJEFeTDasLhrBn6BwQAJyPH9Z5V1Zkwec4gupm2COu -0mf1RKfSrs76UfuYpR2ivLQayhWBU3kkVbJ0GD9j/6gC9/oSHInwUvaoStwB07p+ -PrIl0NXoANS/mpFMSH/hIK7dNhh+VzzqfbEv4mztSX+UbHjCCuNK53q5IvO1KqR8 -Xot8XhZRtVwH0Ntx8YD0djMMd5/v2x8QVgbUGfSK5h4rTe+l4l9KUghdqbDjAhJC -V6TNbpK32SMyd/9PvcDFQSLR0BukziqNAYyUEvlUJUvcEpI+yHaTPooxqzpFFnL8 -UBx9ErD42VCaaAR2/rihAeKPukKhX4AxtJe9HEGL6C+EUDDkL4VAtqanLnfqYqGB -VEbD/mAoqyTZkMRCMlbUm5BY5HXCwpbSrMS3mmXy9wpoKdjViIwX23dviSGBimQC -qw9cwPMTMu/86ra7shnTe8dWVsm1JJ45i2Y2ZiIQ+t8wsAqFDzsk0RWtnkLJS7rB -KA7uWYp768OrUKCT6eERXZR7DixAhaL3fQBGV44E3kXliqvePF9DnwV8mkrxILRX -IW0xzw0SxJiDVqsYuG8VkxeT4zF9RVyHFBSxWy+z6h5WqW14FV9R5Sn06C4KOwRx -jERSSXb5o0kHCrKJwW/z0jiWgNKXe2LZacBKQkQ9BeepgLe3jSUs3QdQKpgvDnPg -T8WluFH3tTPc37ru/4WRiEYEEBECAAYFAk+Fy8IACgkQVuf/iihAxwh1HgCfXd8S -X8K4oxRfEE96ti2WehVs7ggAnRuwEOKK89hhZGceAxwNzFe28+VMiEYEEBECAAYF -Ak+Fy8IACgkQY0Ly7Lxa9rl1HgCeI/8HtJPEozxu3aVSYOLkAXp4p18AnR4+5pNd -qwILQzsfHFGJz4qE8mqKiQEbBBABAgAGBQJPhcvCAAoJEGfncvCDUeCv0rsH9AiZ -1blgojNEsaHE20kEHjBlvQfbWuQ/rjGR6K1gVupNaTRkAhsnQMdoWT1FEHvwHqjh -ug+IQGucWH1z4rfcXFRbkRv0ph7KPaocy89zMYO4F14XVvCAD5y0g2XG/kWc7s/N -zYwpCiUqbDw6IABDCcnfVb+ysogh8ST1aE/Pgjxgsuv7bWKfYT5UdbTe6TD5AQRo -5xO7eRK5eguK978Om8A9N4bDJaeoTIe0MqsIqWQJT7PPFrPgWFSZtev40DLbgzip -6UFIZRSPfGtMJJEFrU0jw8C8dpS8CMJdB6PEvfYtHcDkSFOVnnh2CT5qHdc0wwy1 -724rGMdIFCkQYVGQ+okBHAQQAQIABgUCT4XLwgAKCRCoziimAQ1vOtK7B/wPwsIZ -eAnYXWMqgQmQ21gIVOLf5furzJ6MmARwMAoRR466ICzbmsCap1Se+M9R+GaX8mJ5 -MOLWpDtJla4aJnaasV11kkSDtlqeGJy9mi63Q8wVE0pMGo9BHMMvh1IqxPF2wbqb -w7Xq5UKh/zD3kE+QIl4Flg51M5jJY552B8tQPARC5XjbTx65OTlUv2pGuGv8eQeo -VcLirqZGK1f1nnclh8oRqzSbUofA8TlP/p4bJmL/zx1WhYq/qQE1iAl7a+3OlB1K -FWDZLJe7+c7lK79SS/8NR21pZyxeTre4xNZ9gFwsq/gOxreqltaFrwN6Mgkk6Wz7 -M8GoFtKqyWhehROliEYEEBECAAYFAlBeJoQACgkQYk3FZRNepmhReACeOaiRk6rw -BZ8EIsQNkj2FDf65eFcAoIRhn8U6q/97fjk0sI1G/UKXqLe7iQEcBBABCgAGBQJR -jONaAAoJEHSBCwEjRsmm/JMH/3/F+KlcnfREDY0j06FYKo39I5ZL1yWjakrX8UZ2 -gREmxvunjSSJP/3F1wMGse4+Ze/hhMPKRkJjlDAG9rUtMWU6Pd5q6JS3PKU2cXUU -yIg2GcFH8FjBabPihA9mfz/mxPk4wyPTSfqooOvXoLyK/UKDfPlmQ2TpBetxLKzX -Znyc6PX7/QjYsAf7LdLIuTqYbgWxl/RkUiprVYUEKbx86J1f+h0qqGiH86rFCZ1l -MSGRDfDkgAnU+zIHsrJKiwkZu28/01WHMPafJC+P5Lc5cT3MuV2AEcOOfhMmVxmt -JDJJwKyVVx6+Ba3NapUL8neShx5aRgnMqKNKVuSxe1Iu6H2JAh8EMAECAAkFAk+g -LRICHSAACgkQuaQI5x2qyXTgoQ/8DeVEXNVM4R7KCXkntBGy17cMmaXPp1uQ3lOt -LB1yZRTmLA2vgJNoDdOilRVvv+3EKejZd+g4zbn9gcXmi0DCPLoktvX1bHs4w38H -ghx7jAzhChcGknsh3+4+yiGss9OTe1pYttngQMcJd3ilm3selbW7iEnvV0xG8acr -T6IszrkAwIfF+VJtroOcVxUnAks3hNRdFvb8RQuhrUpxmka987Bg9dMv0zJjJRl3 -3EbuFad86yTCYSNAsz+BCokKMzzRSpFYPt1Om3Pu9YhQQPJZQIo7Fx07I5MEqa5e -3ECKB9861EnO9nqcsuQq+jLEdfdbtzLICApnm8mhfWT6ufaxwCoEGOos+nJOfQPG -wR7ealpF1aEf2uZdjASxUXSqLWiAUfFgJD9wx/o4eBogNJCZHT3jL4Dnd7jZIcJR -5vS0D6cKA6KmqaNy1SJETaPWR43pQCwYCkSG+W4VSkMRGHJ+Bf/anUcIBwVmkOi9 -ykDlnH5s635Y1FX5OqCkDeHsqnWGIzQfrmIMNmiGZtDXvA/w+VAZeN1yykGli2F5 -G3A9LrDmI6wxK0aoFTEGTuNi3Iaos3B8CmrKspmNSAyg4WKVsWQXaf66jAVP+ASH -EwuxZebn93qEoSZdVqfZMRQS2qzZ2lQZxrjBHSelv+z7xZMeFlZavcQR4VNDwATv -31nU2SaJAjYEEwECACACGwECHgECF4AGCwkIBwMCBBUDCAIEFgIDAQUCT6AtOAAK -CRC5pAjnHarJdHezD/9WCIb1UU5v94dUlcpJ9L7c/Vv78wMwnkGJIecjhM0Oxagf -gUDs+SoK5eSAwEMk792mJ6ME4IKNEWT+hAXZIef2gFFbN2cyZFnGe0j+DTgnlKY4 -LyVErjKHoqIgpjb8L1MWAgFbnae+u9bHoiuFGvAhwD6QqGyVoR8wQZTRSGlhqhlB -HLMpy7/vME3ANZv9ppk7zwyBSPo09okNbjAdarUSBloKNkVXVtd9y5+/QgiHXINi -iO7mI0EUwrWG7VU8r+IDLzUmUyLKf040P9uayzEKnWkK8kLgbFzk7XvN5wB23nJs -lDc3amVaQSZ8nqn6eI4MaPeKmn5UDBTI4PKy/URERimBmywy8fuB/hwl6t+j+ab0 -lxqheouAhnSHBpEs+mwZ6gwzZ9BHMtEIXW6zqOdnOvhbTeNaKngN+nlgwOa/1KDw -uB5su4+2JX46vOT2auYPLDWLoEbz20eM2X7S5twtUonE2kJcBM4zIq6eHAI/LfEm -ToMxOVM6Y/75UEMsXsQgeGhHCM+MSitAiBMtPpKT81DDL8vI+SJQWixnLX95sYSt -ZTh+XLDtVMkJCFutJA4qZZXHaGYs7b8STGvI8c73eTJzJ889m/7W9toUBQ9sFLwQ -GHsag2Wb5aft35NB5Ut6No8PNH76CMxHmUPc1hwxQZ4vNBCBNs+prbQH+C7aC4hG -BBARCAAGBQJSHQq2AAoJEKyFk2KwQTv60yYAn1hKq/l5cHGfCXnMOeB0euHhkA/p -AKC/Rst4lmF4TOdhyGaat3+O1LxdpYkBIgQTAQoADAUCUhOGdgWDB4YfgAAKCRDn -pY4zetygeURlB/4hURG0VBtQ/Nx+8MmfT8HuJgOaKwlrU0WfJ0asjHxJKk4QWC9s -Mv10JK1jDEi2t5NLsq4uiX6Tjm89TAIhRdmP62OWrvXebHil/yJu/4BtTwTgxveu -aZ/ws0BoQtsj3qPIHATalszCpZ3Cc1K2MxDhYqqinn56/ndcAhiDnlyLM6nUcCvu -GGMiMxdwNAt+sLzbSxaeGkYqOhdFhvospXx26g6S8zj7xLGz9lYhpyhRFnXYh9In -m4AOj6E++kNXKRc+V4yH1qERC7DL8iG8+fqsUuLeU5QORbP3BaQ4rfGWvDlgT8Vl -GdXdbDkD/o1Ej7EfBC/JjbdbisGIJb8U36p1iQIcBBABAgAGBQJSMkhtAAoJEOFm -+hFXETkW18QQAIez6FXesUV9+9nP98wscEv+xzjo/gL7Df+DMtLhH4oJA1sVTTCE -UleKv1ihts2x6WEYG+jW9AMO+dbiKf0oylJoflluztNu5YEm/JXHI8y9RT9ZTtwQ -yHCR9i+b3qt+6RYJR5salcbrYfQKyGuqIeGOb1CjnNkdE8fAbT/6J91XwiuSqXV7 -B5zRbDuCv9N6/J84jzq5J6MGtSX2JWpy6UTaOlxxuTJoDttwJjF6tPYSiIOOIUao -5hCZkQBxbqM/rX06ASLWA++1CkpC4upvEF1s8YEfW8gRF8yLQ6+qelRG2o02oVGO -Tk/wvmkHPJiekxwQSMHjI7pNxQrzem0HQB/sdAS6LN+k47rEoIa2YsBgDFvV2B+F -57kPGNob2k4SZNZ8SW2rT2s1h7BcSc1QDimrncvF6fBOTDKP+faBFxZgzz4K8fX3 -qlnhHsJ2litXiXBSXvKR4EyxfzTnfWDgwdRhRoWsS8pyTGQcyx18GZgvIJDXNzYZ -hIassVQQEbWJ1aR6qg4j3AkQiS9tZNFUUJgfw7UqriLg5i/Yu3xotWsMkTQl66lP -+KmZR0IMkYFtZ40xn7/rUm66E+aKy0bHSwtj8eL0QbpWjceuCmdHhaN9Ij04UaC4 -UXEWUybC34Qw4cosxYbBxUMFBMw0ZWuRoVQqpeZcGbLjIrydlixjl9E9iQI3BDAB -AgAhBQJSIgd2Gh0gTm8gbG9uZ2VyIHdvcmtpbmcgdGhlcmUuAAoJELmkCOcdqsl0 -wBIP/2AQaabxs1xmc+xOvNeortLvDcgD2W9wwAP5UwsX0Sl2V5wzJVYthPmICJJk -z6WyxQiFHQDekSqtcZUmJLhE1xsfu/LQ+ddf9re8msnjE5R5r8jCyGd6HgrmD9Va -RfOX+LZ0keNe3Jjf+ian9J4pw4MIz4SNVf0GLwp9CUwvXt3dNlOV8lGMki8l4BHq -V7jJLEyvWTe1IKt5mgnHn91jaCCq+0tnWaut4ikLFxckqUMwfC7zwcKM6bjAGLOu -RIrDkSAWKTqFNd57oHhgq54z4b9Ldp31TCke5RCELpEiCeLt8fiFg9t4mybgy12K -6GC2v0BjtvUN8zj49feOJY5HGWf2EJrzepyq2ud4lWEpGT/ETCR7FFmhQp/kYHiV -OePP26srZFyMtSiXyRUsEQqfGz6Cvh3fXBzkb8+AOIf6LBCRjQUGSLkrjthgai9x -9LmQSuE92bC8VidbN22rUc5E6SmOgqeatMVovRmo5lKzD3KjxKaCGE8LGlHyaKVX -xF7BUxbvD2b1gBLGNEHRhCSdglYQZE6qls2xOZdz7nrVS1TV6qW1fsvxxp47xkKv -JRzpxXXlvxRlm6zFnU8pMAEUrl+RHENAb6X6gYFlixA7q45/8gkRhC2dBWPyUhqZ -8Ija0eIDsuYZYiYHMMAlsfQxbyjhP9Hp9pTpdS575GQo3Ao8iF4EEBEIAAYFAlTx -HDsACgkQxlVWk9q1kefl1QEArtcsHdNnfxsZ9R/OkTW/iFxL6tRsnLOP3CHmZDYP -ZCkA/inTGLDzg+6iZEbLNvZPM2Gqlp3p0fqcJ8vCY2tcueP1iQIiBBMBCgAMBQJV -3Hb5BYMHhh+AAAoJEA3569a8CQK+FhYP/jh1tJjmq1JC7L5oSrBBn2i7nYAOdm+g -1nuK2K3fJEjpPD/xutD6cYQkDDbsddH0N1Z0s6ILSs8RoQgFmo2czFL3n5K7fTa7 -/Ess2ZU0LN/tqObvZINjMYN6nLvyp4ulHWWBelvHV2yyLqjvbBiI36E3UVkDvYfv -bndLSsya6AIVEiAJLG1NUZ4T4wONNd7V5QUO20fHtlEzBFTlLFlbI+T+6b7p74pj -o01jHksV8UJTls3kGsMQXUU9t7K8eApi77GhrDzMvlVgkB1eL66vy2dx95LUa2ep -K0LyAmnjyQBW5fZ9GP16CZi0r48gOMb12Gx3ysW3Vd9fAKI+qug/aqnJ8rgGxxxR -DrOG+F7m20iokjsqw0mz6tsjLDDwOrZHwMLO687TVRUrwhqqM5EvcBBQf1wCPGp4 -PUg18d7N8oI1C+5zmNL6Q6dPYYTTXgvQ2pYpZFs9iCcHNBVoXSmCJT4axyfUqbGU -bzrklF1Psk4G1LZAGgO/l7PU7T245WcJLknwo5kRck5e+0W6XjoByFybJ65HsOuZ -59IGx8cttQk0kIaK6HhJVYVM3LyP8hZ15hDCZC7OevP+cU2GB8UmK/cqsT543C8j -IqDHX0ZBm0iAevffQYHrZg9CaIqYk7wQ4/lRWZK88vaLem9KZbY4+mkeQ3ifxtNn -7mvdL7f0bSebtDxQaWV0ZXIgV3VpbGxlIChMb2NhdGlvbjogTGV1dmVuLCBCZWxn -aXVtKSA8c2lwYUB1bHlzc2lzLm9yZz6JAjYEEwECACAFAkjFN/oCGwEGCwkIBwMC -BBUCCAMEFgIDAQIeAQIXgAAKCRC5pAjnHarJdFs1EACI+chNnr4iGxmLsrKIWvfe -FwCrjPS+Z5NkoFin8AD8VZVek2VzfSIJLDuY7j3fKT//zJEwdVd3QME24PSYn5Ui -E/ipHEtps0Db9XXGxaqpABpl6ue5e7ByTaZulrIG/JhegjR4Npef9wOvkNimlHQP -vD6RKUREJRrK8dnzNJRGoJ5DyAF8ZD1KlGsaGCIYe6Cc4NhplM4nEF7pGxUTSReR -qL8v8gtiH6/3Jhz3JcvDfdyxGgY4hQ7khh42+sXiMvhWD3Kcf9lQj/eT5po5i3wr -6rF3yUVojJfE37YM5chBTYEzWe9UszweVOqh8K13KoFK9Z8bYqK9V6VxeMk1ec9w -sAXQHBs7Lgc4Wlca2vO3eYTppxtCQC9XDadr2qpq8pyBDvqZjfYHDaR6AUsCiZw8 -6UD05++tnCn5wg+mxGqvhq8Ydn17nTdtsVXQ49z3PU0gWlItSA+ZLU0tOlpPHTSb -QF810bXLKVb9Mwo6oG7tdpfzlfVpe/CT+P0zlb5iKLBdcawP43po8Y+yLJNncfY1 -kzlSumEBguDJkvLAVVPqYVAbZxFugFH6ddzb7NlpbutJ1eLR+Vllo3I6U9x9F9PF -bGR4ZNxRk2F65TmRxlA8zqD3P/vlx2ybI6b6n3wksF4ux/AWF0EbRM+TZnGNzmg9 -bYkQ2EfSqMw1JwjhMyZOoYkCTQQTAQIANwIbAQIeAQIXgAYLCQgHAwIEFQMIAgQW -AgMBBQJIxTnzFhhoa3A6Ly9zdWJrZXlzLnBncC5uZXQACgkQuaQI5x2qyXQK1g// -clAyz4JaZEoP6810WEwQ8Gl5ORynSg9yrW0pP/bZ1+JUCmfTKDFaGHu989ubsVaE -OVH1QGAK+1LHIUa39kBMNn0UBp9mflvk44w7kfb5hQr6AELLbL/AMHHsWI16165o -aC5N8MWglC8YM6dqdTSBkPFSmZw8/yHNb+jB5OJLlDpiYUSpT7hxXRAJpi5OJpJH -CE7zbGYpie7YpBcQDkvIezaftGXwY/5Kx7zYt6uvzJv+jA4x+6yFiHI/RMz8ttte -KKO/xcicsfZhevbCNZmnNoj96zzujJTRmSRofaGA3Y0NVPzsxZOa8b80SaEHaChe -iN5UEVDKRyGOBnrgeobteUyrzZtKWp0zNZ5PizvdFqqpJNq8glmL8UfBkupxeOWE -Czev/5Iwa4QfUnQn/7pHJkfWCf+5J9jm/Z2b625zjcxKqwURJqhwVWmp+ZWJqZx/ -f9aKf+uExDABx+l5qIHf3o5lXZ+mt7lyxIFLh4yI/TeXWuYOn1Xu8Gwm4bK+/iCN -NyK7PpbEPZNEXY06VUNI8eo+9ACz//ALuUkcsNmJkWfuZKNTkEY3ngUpb+V3caZd -x+IaKB6fQuct734ACPQNnD8sdYcmnZk4YRBQrobTW6PXQMpfHDd1j3XqK/jHlDh7 -VkXUgn1kktOdghlgc+C+fFi0IF+t2J2d6GldaJqnBeKJARwEEwECAAYFAkjPwJoA -CgkQNVMKbJ+v6ZL3gAf/aREbsQG1BDTcc4ydyqgPLPbNGfS3E7jfNUTzJvP/4Zhc -jD0hUZB1jfMJVD4cMSOjdEAbKJ4V5Izk+K8DMDmaUgs2al6x+h3mKHytGtKSr0GK -IPcQnqNZGvxEvGWNZf/vffZY4v1WobGeq1cqOI3Rq5dFZl36mZPcxNp1uwkzNGhB -LTIRZBM4yM1N6fsdevKeE1SaYf2txwcWvoAEJ+Zy1yhf5/9dWzF7DFDY1TZ8r3QM -yOC7mYhzOL4IlZdyMwHvNsw8YPSfddcut5SQ7pbaTDl+c0XnCc0+1Q9duNe0iejz -ghT4RZFdwMwDXqr724PdhiQxIMv7jMkZSC91Ds+hNIkCNgQTAQIAIAIbAQIeAQIX -gAUCSMWe5QYLCQgHAwIEFQMIAgQWAgMBAAoJELmkCOcdqsl051EP/jBPIiqAPRsC -Fl4ZztaLgM0sG+BSQjWR4gDTtxxSGgjkGGOGOcokOUmgUDbDGTBFRoQHDUmsSE2t -gY3lo0yrXTgsvazzOxOD6D0fXkUkQkTNgErksylKfgRqvwbpE1Y+pjZrTDXhLmUu -rebSksFMDA6mv3kWpv7kb9zi5ysRGjD5S1azBlwRruQm5zkeohkjgNkgb5XApoUU -59tsUqKPdWbF+myc1ScTSCR4ftkk7Y13uObF+CjUYzHz0sKsOrXumMGNpHQ4z20U -E11LBVQN3iGTpCwe4Z5KBrOE5xb5CvCyygRSz6nS4XcFNrA6X6ulcmIGrp5IIwIL -fWd7SkA98zm8rQQJs7Jn1KYI5sM8uSKuqqrK9NaBm/jkJwPORY658hFvQ7mYvOo5 -4bm0dnbiX/wpgpT8xSeQPrKK5KMB3YCI/oMd75MxSXackEAuNeq0xUiqSQH48AcP -uNeWx5yjzrGYPZltdykS53P8ggB70Ro1l4iovvZhfYeocXSPSx8x2SReW4NSu4dm -ZCfzCFBlJKshyR4eI6bMDlLNSHLQB+RS45IBdOLV8TD5NCdti70CEZ+2oK49enun -DMO62NO5BdtwmVCZwuPDsm3SWQcxvG58NaN3jfko74YX4dOuscXIfAi4CaTgMaco -fkJ3ibhfYP1jMP0SStkUn7EJ5Q0ANRiIiQIcBBABCAAGBQJLbtYhAAoJEGo6ELMc -EJUXy84P/1ECvg+dNnNH8p/fA5CRK/iYCeCGLNelDoLn4w1jU/qQFfxgknZESqs2 -FC6cyKhmlwjc2Cc8BAOFjXTUqFzcIaG/4/11Q0bO7HxnLnp2qD8Sfb5njdLvSVej -dWWDnbaHRhx03VCTR5lh6wAC+tDhZx12TY3SGd3037kcKdQ3bko92WDKwzC42Rx8 -hjmQoOy1XEIRgyYKmk5fWNfScpVglD47OJt8O8uSs4eNxBxHrDyu1pg7fLdAco/q -yZY1q/oB0msway9Z3YVbeWUm3/kEmnQdQk1aJFQB4TAcFJ8GgWzCB1W3tgXGC+Ni -rfFhPG9HVVzgrf5tCUYCjdOCR30WTljy9UKdD51z4Ch6yQXQdg0cOYMxq6OPRCto -CNVyII2vNgOg8ipygo+Md9X3lagv76r0/yXjTJZTrruA1d/h9118CKCGEudawGkW -rwCQvWb54K7PHpqkIgNKrlXGUISJNK9XRSLJ9RSuKSlqMsR+hnwkMhLeMYlNMeBB -2gWasPUWM672w4NdAjb6ld5eggTiibOjLmQuDo4quTjjAKUebFYBufbtpTll4+c+ -8dXGIMG8qiD6XaCwtJVeihiZraQOadiiHnC3o3RCff13Nqk4xG21UxoixXxnXFWP -ypTEuKkXMmUWK7Ddpf+/21/a+rIKwGyNr+IqlUqbqfgnVhhpL6RxiEYEExECAAYF -AktvJuoACgkQF3q9fEkqhHB6NQCdH0UtYJ9hDblMNbNSeXcNmX6HfM8AnisZmdmM -P8sFM53ZSI3Z5jkb5sN2iEYEExECAAYFAktvNMQACgkQzSaggc6rQV31AACdHLMr -7ANcML5hsKUaS4tpNMX8oJgAnRh6EH0DgoqNZn4dHH83QN0CIy6SiEYEExECAAYF -AktvPgIACgkQ539IWoEy06V8PACeJedeXJNXSCEfaZos1fglB8pGltIAni9Ev1vL -mnPEhYc0J1l7VSgrsw3giQIcBBABAgAGBQJLbz+/AAoJECGfa2Cyu/z8EZAP/3Mz -LKFyBGJqaayPXfRFiVNxf+ElStFy/3mWCaRe2hi3Pt3AC+jg9jJhBQNOrewmggGx -9XnFo5oPaHa3Ut6j91MsDG/dZYaLd4s6VaQJruLsmaCk3kQDc11r4V3IVUefd8xQ -AmAU8MM9E8Lt6QEcF5LygFPAiAbfi084ELC3rLy2vbLw2VwRgZcP34pmDORXd9ZO -QayP+RABaGb5d+KrMAf3uq7VTZi36V6JkZvCG+BolDBiarXlVCvuqiXZ/bIe2Lt5 -9Nu+Ji0ziTzsMvRlbNblaLYmgagbWnQMZA6t4U9yqis8+T2niybupdl2Js7Xz/Fd -TiWXErEpW9ghPhEqfnlyhX80JXj7aiQ2gFHVqvBuLRvUyy2ORcwRyF6Y4rRTffuS -dE7OBtR+Rd0qsx0Q3KnsJlY7JoC/nk5UypduiNcFT7jEFPN1kH+rIhq/RCkdBq64 -ld1rm04/wqz3W7esfnQHB+zsKuYmFtT1lD2ugAlO1/4rUxO+uSwC1nJsilAIU988 -lfA9pbrZ4EMdFwOhrJiFSrwx7S7XxYSSoiUCaV7pg2e/aw5u1mnWyr2T3WQGaWlt -4qjwqCZOyhriHnFjOSora/P8/nQ4Ri4ajpgvbpmrnqXtusox0UPLEymUHK93WHBj -c4uHxorQg8xhY0ZNG7vqCb1XYj906Ekfp1+85HXYiEYEEBECAAYFAktu6Y8ACgkQ -/DzYv9iGJzsibACgtm5sHDAXFLBoV2Gz8Ia9anVOS78AoObv/+AeEkm/485anklr -/dDJn0JZiEYEEBECAAYFAktv81gACgkQuJKTHaNIZ+9WyQCgyeEL785JHzwG/TwY -IvqAWVg/pFMAn0/tV5Rps1R0OxUT0Kq6tA2/svbNiQIcBBABAgAGBQJLcAEUAAoJ -EJ0g9lA+M4iIMXgP/2RXbCvOXgdInu4i9Ga4G4zZTqzLnuDUDJwUuJTQLb3UuEny -QJPu182eM8sqtWhksOWn9l+ImLRQIqFa3rRE+ZFDDaKkckFyRV8hi2o5K17rg24J -c5rkdiX1CPwvoSaJAeZsGHnpmvb80z1r6wsH0b1s4h+1PN8uKR2ySq2yqjsteKR2 -2j98r1w4sJoFC7VjcJlp9hFB5jYK9+/S+vCRLNZAbd5DOObqcPlXj4zu2NGNxFFx -I85sGsutSYPZ0aHYgupqWPxSSm/QZoe/8arlKZdi66i2LdzrlTgjxdtuB7hZs7G+ -lwIJigfoF0lcP/OclXTf+/Mw3xMsXNX6hlOMoWRU7TVG9BW088ktdEwQabUq0d5M -QFNWZ3L3cdzfG9wl4dexyU3Tr+HHbmN5nDDWmawLKYoWskQOpOw2MprfUvXaYGeE -6uPFFMN7/B6uG3QW6Ml9SNnoiIU3T1iEvDa07uhByogKe5HqtNuiA9kIVmuxhDf2 -BY/YoFgt0dAhgUawrJ9AjSFj0O3LYBGoXK1Tz5vbjeDi/0HtDiG6qZsjPyoLHmWT -T4C/8Qh6G3B/1gqjNkJF04xfqn2vlDbrjiOih7MP2Ae2Dcuf5tXSBje10xXSDBKS -MLn+XakHq4vrRETtPufD3+Tspm5+/1X7bKbSB//vzGkVPF0uSTlpuZiq/VpjiEYE -EBECAAYFAktwIQ8ACgkQd5FD2Z8azpwLoQCfQqmbq8K9FmXB+w9fiSIEV7S2HngA -oJh6Ky8OJ4esnMy3FctXx5I1WeKsiQEcBBABAgAGBQJLcEb4AAoJEAjDulgCSX6x -7+MH/0Ax0twpXNUDkIRWTg/yUdFMEKPmZ//YyV58EDYHEUMDj0mTXwaAr/WD8pjB -eEW9A7cu3FMgf1WrnQ+/bna62TMz4KXEm8Cn48kS4FODE22wU8dhchnYtGGrq51w -9QX5m8zDfhTDIUWssO1hJ+k2xOFYdlEcuFstl+CqE099LsqIRAZoK91/6+1VI9Qu -c8qzDameHwEkP/spzWt7SekB+VXNVZmpf0Zxyt1uDi8xQLEddm7L1s+VRvOFO3Ge -DEt3hQzuw0YDKU7CP7+SsZNrk/T4y8mKB4YEU0oYfAr8X0qLfytfPflR3r/yMacA -p/mKzXHW+f6q41VhfoaQIrnvdnSIRgQQEQIABgUCS3BGAwAKCRCHYfAIFR4kiQPW -AKCiXYI21r2G1OSzaHNixGORlJAJ3ACgzu6bjsUIQoEvSAjCkKc06boGkF2JAhwE -EAECAAYFAktwTYkACgkQTB58ZUQMVDdBNw//cT4P57WZhhw4MKprMD73rxTElwbs -EFyvr4ethuHDoC5q2Byrab/SkMDqE1K16M1AXtSgED9fpuujgHljBR1Q/oZvckYM -sSDjkw7tBwS+hVo70ig2eG5pPtZkBJYl3rG1+JwInQTYSmuFO3aOhzBxXIm4Alhb -jW/ecuUZncACcQBprQfAvUJ2YhOSc67DU+iQ2KgXsDxPhYJfF84UerGcbVvGe+6v -xWsvdX9W+33LouIyXfLCRLqkPp96K1JuF56m6G/CQXAN3yBrOcvAMaMzMc1veRNQ -ykYvT3SFSTnBaBN4SLA5xIoX0GozpsJw33ITT3x4vWs7a+8qqL5onvU5DHmn+Jc5 -vNFEKANZHPdTBP5U4UUfMLTibRNtq8V9J9MX902LsdC7g+xusCdryfzGENZ4XvTU -KDx8Rl34XuHcaE2evZ/rKDeBVF1QRVuQmKDuvupObYu6KOeLmINj6pXgL+FGgrT3 -1Cu9S/+Cyvx220AQNyhXpfHMf/5KZQaAWe6NPbGDcfwPg62LxFS4K6DAbVls6pEz -dLwZZR7OGyIqSXDe+PxQOi7eFmc882OG2KtUtJb4de3iTElRy1jk5zTKVkuizVVV -6lr24M7RHED7ktH972vrYV1dOwyu/yO2bleSmnkaS42fEYXNWIvn15PdTD7Bmf6o -2HumD1wMcjthUwGJAhwEEAECAAYFAktwYe8ACgkQSdB0YSG95BZimw//d+NOdE0e -pHmA0ZoVJkiLMdCVw5JpHIvQ8/PIaafUhsKphJjUdmpmNMuB4XqpwCr6uarqTMPy -eAaBqPLUq9DTL9V689TXum72ET4AruT3vYDbL1d38DWPtIasO5oKHtNdB9gmCxfc -t2j2HH42Pu0CD4QZr7lUgcG2dwUSQdd2vl3jYnxdpZCxaj2n36QsA4SYJu0TXu7g -fxCgpMHPsqUNiM12tVjA/XCuJzaEJrcnL+tsEMwP+2mtT48Hhw2JKcNgKP4ZNgrS -Fv1h5RnRXNBuwZX+zt/7h4Tqwz6WJyS4cAhfm/g+zs5nJua0nOZe9Pqvv0Z/JNcX -t0buyQFe5KmNegw2i5FAD/AqWXLC0CZVsDrRCTAdmkr1+WkfEK88kdTtY0Lnecr1 -o3XVLjDKaPHjxDTQ6PnADnr8YLRQLglO+Qis9aTUqF56vfSDvfIVwnwiSkYg9oey -CX0RdSEFWz42RVd5UGxYqBjkOWn0IobFsm7of3MY933hkzPAAmuJ5I8Xq5yHaYzN -NjbuJZz/iKudG54Q3QwncwUhF+NJCEUsK+vNJ32THXvuQcThCqBecjbfYVtvy6Lc -si0Y1aQnmCm0mis6jU5GHdYeqVBRhbUitn7mF33kPOEXP6bQJsngjdQz0esh/Gm7 -a2lu/zBwsT13Eyt/INwRSgljOZ6vMEn4QgKIRgQQEQIABgUCS3Bs4gAKCRBkYluI -+pkzo70oAJ4kz6o2bE0jCxLwTchCoqLMdrqQ7QCeKbQIpe82IVu4Q39/fNDkxCmk -YemIRgQQEQIABgUCS3BsqQAKCRAwAo0kSBO1/rcXAJ41Ri6ir71a4VC58MS3SX3s -4PLRFACfXw3nnVDmGbbUKs+1+XhpOyREzXmJAhwEEAECAAYFAktwbnwACgkQqmz8 -LRT3mFxQMA//SrXzCr5hj93CyzKcjZPbNAbcegYNAfGuBl34wJ8k64sUXmzjgHfX -7mXPozTFLWXWVDtfKdGWtTbPAG2G4u8Ys5v51u/Nm3jRbKO4Q5B4nJbrAx+ORY7I -ukJWhA15UImNuE5bg7oAwqs7WbDowTZAP9SGhDV6qPrXxsj/p1hRJncfzPixblcS -+6VlE5/Ruh8l886cyszGkb8AJYDrE2SF/IXO7kc2+tMTBRmlG6tO1C7LdXU7sz06 -A7N9OMKRO4UOW8DhvULsmWbUDzBfESkvA8ZBPLFJlsetXGD/qKsAPGWrHAFONKkm -qqp0GQAkOFHIl5+oA6lwOFNyp9YqLJEDkxvvqZyJRKVTdeGulY+kYoYVfWGNp5BI -f0c8RQuv7aPaGo0qgcNTe5JPKyXG2DmWr/oKEEoGIoNXjjLXQ4NCoXUOHmGlbH/2 -YKRwxvbvOmfzv9Wkvxfk7uYqWklZwhkd/Zt0sCUS6VKrhKfRNwqwu0uo18xcPlyx -yKV0AY9ZdIorAqmKI+uC6cFfSbl8vkVbaic7q3ztcmHTyVV6Y933eoZGr3t22phc -TBXaG0AGYAynWYv2fMhnZXkquJ6L8/zPmymMWur/fLpCnluk6Opupqe3Dl7Su7Kp -HbGyW4Ak8Wwf/DFvk4DTjdGMdjlwJ4Zx/41qS8dZ1pIWqszYjOkoPviIRgQQEQIA -BgUCS3BvbgAKCRAU9jENLe0Iy96EAKChtkI+IUCgAfDzdntqpcIEVYr+cgCeO3qd -HAJddi3pfNJm+Q7Yg5Q2inKJAhwEEwECAAYFAktwca0ACgkQqchsjdOujTrfXg/7 -BW3hSivk5+TiW1wZF2O0XTf9rLoDkmXbsnOPNmbnA8XPzQEIHgha2HsAuB2rIPoZ -KnciPW7T+e67+LYZ3Y0uy74QHhqTOw36dRLqJ53ORheY2Z43SUjMoTfbY6x6xX+N -SKX9ThD8ALVZYAjA5Miss7iWyRBOWN/dQvXxbTbhrTAqwc4bJ1VbOQnzDVPVN8hN -T6SMLZ0c2T9lv3YwkNuzrPxcfqxI/8ucM8r9ggNx4kA4teGLW87uE0UUKQ/ExaFK -nRrQrbwIINQSm+gtlKHJ9MLmNR3sQTC5RDA5UXgtHFulxURzJSvdVlemOz+Q6TO4 -gIb7LmbeBspOsU1ZED7aEVWU+wNgxaPYKrtGRtYo7//z6f19HhdZ7vR7kJ5j/o/b -gdrEnM7lP1+GsniAzggRX9smvDf3bnvLU+jub5i45WRTJ4M8iPQ5yZ06Fskfl47W -TgJt42ea5HOUunahDLnyDSg2MVaiMXbFgZarfj+yEW7ACr5RnNY/L3gRNrwQ32Zk -mYRHm6WPRqjK7pnOJsqWFMleqVgUWi8gtqaQzfo4c4b77XVszBwAyy4ENZ3AfZgn -0kxk4f9qVBplHIBZyR8+T2SyuI3lIixfrVBDw1m58hph971f6UYcYWJNcdFRKUAf -9Eye1MtfMiaK25bTWU9BNvzcDEcTXli+PTcOy0yONayIRgQTEQIABgUCS3B+igAK -CRA7v893vYsFDTzVAJ9pZU1/hoQCcVevajdY8HPpNKgwjwCeI+/c9/VdVboMvKoJ -iuQsMqHxE3+IVgQTEQsABgUCS3B+jwAKCRDmrC0itmgwQPucAN9zjO2FKKImQvpy -5P2sNzRYcOzuzxiGthyYb41SAN9TLnb9qAwc1Bwo4kWBRmM7k/k8LD2mhpvK8TMl -iEYEEBECAAYFAktwhegACgkQAxLow12M2nsr8wCgreyQGRekPkJ7am6hYxsk1u5e -yZoAoIurNo55tCflJA2Px4O/JtHwLNeyiGAEExECACAFAktwjlwVGmh0dHA6Ly93 -d3cuYmxhYXAub3JnAwUBeAAKCRBy1N/41MPxl6P1AJ9iAGqPBUwaTsI/2fkhZ//D -qN73+ACfWm6vvAEsKalbT7sqNe9RCiMTttOJARwEEAECAAYFAktwiFQACgkQmwvi -TVTM1b9jvgf+Kf7zfAUDTjK/2GYHSdGmnnbe7HK3xdBZE5hqOgxAqaAQ5riIjN+f -hSBWM+t+mHncHvOlBgHHrK/X2gEzs0/1ASepcH/IrXRfoJn516zvomz6I/TiAxXx -pe+qF4kBWg6Ap1g+UjvLpze86OvKEBRAA68nhEKYGtT75u43Doztr2GnufKGo692 -8P3xJ5OxwEmuvDvIW/zWQb6a2Vt+CfiVxhd56EoaXcoOMhitsTyMwlMEbyViCB5E -OBxFt7EvuJT4v/PsnpkDlpaaQBFrvHqezIf/WtKlZ2floN20IjhBwi/GZqNMFRry -T4nxbO02oi8+z6KwwmEX7s80IEuhw++2dokBHAQQAQIABgUCS3CLZgAKCRACf+VZ -3zOxuiSWB/44maER26uI4zmra/HmF096NItxaeRTUYigOPofBxQ8kHSIWd+gYZiS -AhubbqovVWEbdMpQ35W/Z36c/D3soqRoUAXKQWn2BJBOlHVMLVqG7qAEoBVskmFR -PPtTNEKbzYALxdMQIjzApKAmlLPi0MO+qO8IDHjxhs5YbSux7lirVNROR87du+rD -hlEuxhT4IFeqIiDILbD3hF2UEUHkzN2YHTBT6U1pM8WbXQGex7Y02zC7DY70lwkt -zHMfdIQ70E66Gca54wvPo5DVQs0w6Y1ran+9hAlmUmJrbPgzq9LmgEc2VyGaK9up -W+giCCmXzq6bLzzHqEGu05c9Kt5aUZ2SiQEcBBABAgAGBQJLcIt/AAoJENwB9eiy -jP8Nx/AH+wf8TgMKiw5RFsV936tOeiJRLdDhcrmgXYMyku4TMdVvPDp+/iZfzqdu -pM7oYdAY12W32HZI8+fI6+ms0FNb1Vw6O2D14ekR3xSQZ4Bk7MvQcvQS9hTnyg7o -UvsMxUvInhXGxGBNnQz6R305wpCmRm+ofzYKKOqBn5ZlpE93/qL49zF9ibtRW6yL -VSOGL/x3unHS/HJwfinBHQHQLcmhlHVa6XvqeDSy5wOG4K9f2OWZJKOYale9GaeK -uUJR1aAvBBGauBrhh/ZNmajC2wNgwEsuPFomDNNycEZs4BqCiL26BoGbCUc70UBD -0y5qSq2KLCkeLfumkxY2IYqffz+1uQGJAhwEEAECAAYFAktwkwgACgkQfpcqy/4K -evPjzQ/+Jd7uhsYYxSyHPXq/h4AW57j+w1qmNbFEKzgycMrHjfNZG4OMb3/k6CD4 -KtqQL3b3ow7e3ZUQ7ygGQ4SltmI9AkpXBrW9z/ob1Kv/Hb6OqT9128N6iutGos+3 -pTxUaxtv2JxsLvclgI47Ppnax7xS3ivGgeQC3yQMFkieBY6ZBuCO1/9+ubRaC+PV -ze0JIPIaK0hCWuun+DELInPM8IwaTyRGE23QcOwcQmD+cYNmeZ3r5MdnqHHdGSYa -f4/HfI87VQIyd94g2xBvyBP1UNqSF25Yh6z4tQmS7SziriayguakP9ldv0ScGEFM -lRu8Gk7f6PaOm9sq75VEtpOAx7klmdeOTefAGn3OckpNS2fkdUdJ7uR6tFMN0Qsq -0pqYNYzZPflloCoB+mKqC0bQkXqMeRnFTlhi4VZYU60vt9f0oTJi3DkuhpbfPofz -ioFruJ+rrmIyir3ECYf7lQB7LYhfXtBSqojKBkIAMnM34tEJ/ol/VIrmFzn31yrz -EFGtjtmpCBn1d3x+tNw8v6z6uIJ77n6F4EYN34GSovVa0h9VvcJs9EF4vcmqm/2P -pb6b2MOSQP8iL1U7y02sv7yqVVLGq0vUcweIzGN8ynRF46qym6jRgHLuyXufOT3C -RlZINY/Du5YlWlOWAGaDTSWaSN6u8e4JmOhxC6oSR5DeToQ0hKKJAhwEEAECAAYF -Aktwn9gACgkQY8Q1BjeyOHIhoBAAnLZko6pqn9InqBB37NrX36Hn+uMx/FcHXlkg -xodQ8WrauNXSFYX1uldk6ew1RyPjeRAf5Z1rCWPBLF8j8G8ZURWfpSKXKbWwXI/E -mGkCDskVOnTZ0N/kvsLKCf7bPoKwSkwaQ2IUluZ9J6cjXDXQBrmBQR8cJTSeK6ln -oHKhBg4qK9ljBjdQBq6nI5EsN0p8+fh7BbHCcrRCTrC73oiQvLLnxLeKpTq80tca -XkyoNZABWgg/mpCSXHMqTZZyoQL/xEh4B0JyljEkKlVW2maNgMhviymHoo0zTkKo -+sKym2K8g2+TkVpe3jtcVF5rIGt0jSwHQ0bc89ZAc8qgP3bqUKCNusHaeAnoywNQ -CmRzniPGC/BNkCR24acrQAZwt7zx/JP70wTVb2TTx4O0QXIrAnNYF89c6QQlBfy8 -VEAMDmn0iRHGpkipr2CB8EtxeIlhE6TlNqA/7Xa7iy74MjGlBMUV3zn1ad5NaJjN -E2EQZ8CxjA0WvNkJT1KT4QOefn7qQih6Tt4h5FUUPbneXNatmfoM5CpaYn7AnMep -PZb+sCOvoiB0lF71Hs8olrByXRefR3nxcdD7m4W0JSXXoh/IEfKpP2VaVJLQVJcR -zcCvT2YZoOMRnSFKJeBFrT2XdtAAjAFJHSA25NVol5yo3MdFPEp8bp+l7YirMqfN -zztHg42IRgQQEQIABgUCS3CbYAAKCRD7E+LdXKjpJ5WbAJ9IjiPYwGvlDiEejCen -1D0svQPXyACeIJx4GrlYEcfS9+B9287WVITugceIRgQQEQIABgUCS3FKIgAKCRAz -JV/onng+BTt6AJ4qADAzMtgW0eanMbXDWkwioK/MgQCglpuUwDktLO22+4H2GfXo -HSa21DqJAhwEEAECAAYFAktwTVQACgkQ9CHGg14t43QAgQ/+KggL3xO8tVsO29j/ -vHOL+nqqyA2fRVAQZWzXbldCV/34nwL0yPgRr8eqKnK6S1r2HeawgV2wQ6nIekDW -EM99S95+/GVUHZKdm/d3gC/go26wFXrTltPwoK1SjmqiWSZd5J2BYQ9BrcffroHE -ivsEqFW20V49DtT7y76AuKUfwP+WzGmaURT7oL0cGTzUfXMKgC3kMv93om773R7x -EKZy5BORU9qFV1lX/rf7y7JFDQBeqIDV884Fy/5g45BDjoZF2pC/ZgPyorLB9Se/ -45eYe4lmFfqwCb4C21GI/PET1kyeVgYUvGapl8J42GyBfCxvjO3Z2gkkp0Ddq0+l -/m94x3RevB36vV/gTpEvj+hrPTtgdA44bN9NnhHMTBH2g4GH7a2CyQ/0KAQLu3i7 -lxPMbGWZGBdqwjU3HVgRK/oG+4Gff9bS0V0cxJUSjd0Nn5BWk6WZJQlR2+2GgdzP -foZ2vPbfMGbz5yM1/FY6H3r/7GM4Zw2Dqi1Q6u95oMkfb/7/JgqD52jTRH1TXZQQ -1DFEGyzslB36YYDN4yxz4qtdkroT9LxPW7FnpskFYmVKqewt0d9IoQZaJ72hBAIn -913FPkZwzXowKkUlwSCfyPc3d/beuwsNWueDlPN7IechRDd537PUfut28jgG//LC -T6WaIEMthVemA5SBD4rrizAfVEWIRgQQEQIABgUCS3FICAAKCRCEGeDbaL2jQu/W -AJ4oDAQuMdO7FXQudAe/hUEQb7/RfwCfawvGf/s4HFfmAMarqsNX3A9mIxyIRgQQ -EQIABgUCS3FIHwAKCRB+gRSgdcsa0jn2AKCoKCTxjiFJdGrFTNSA58aopWdseACd -FRXev6WYnKJMLqbHnVEXktELPGOJAhwEEAEIAAYFAktxZUoACgkQq64ROhZokccG -7A/+J8yYSUAT8nc53m9hXDgDQ0LuRdTbdJ0QM/2XULTglbcehqo0sIPTMox0kFg/ -GqOaGTsihacmaISsZePTF9D0X6/CN0PDt2Oys7ap4IKuM957DfXvbsWlreTRwiL0 -7kNMOQz2Zci0g1nTy+eNZ7wMi4jDrl7P1z++nhY05AdUQqE+8VLrKTGoX6r2NGWN -117OUh+DTHiQzc/bwPrdiAd5W3XB49AuXt+X6YtmyIUaVNx8qzQ2/rYD+QXsR4zJ -Oa+6BdlnI2rjd4/1t98VjaK1fdDFHxS6x3iWQ9bhcOJsdsrGZ0B0gtUcOk5hBmfR -tC+k8mYD5A51m4a4hrWbE/G7T9kkIKoqHiPoXTQUoF83WSJmF28MjtPSs9ATHPJS -dAlCPjuJNyRgJDEdpjmbDELntxmSpCMkMPhlhB0NCiuVtgVUzxPIRIJ/xUc8kNs6 -YfZfENgqIy/09W3paoMXPtaFVPlU5cgQ/lsrXuDngBEw/dEBa1tMA7aGvSIUqBbh -J5gpdRqyBj10Plzbu6qmBqCiMe1+Jcvuv19fpB7pb/ETt6UlW43nKjPN9QVbQysy -0QCka2GnusyDhP+dHLW0ze6Yfq508o1MAEJ9LPRR5aoXWoAn0hUX4jdfezzf+QBF -MbZL3ORB9crG2xBNbKh0bV/4gEbW5XUULA/QzDa9uJgfN2KIRgQSEQIABgUCS3GI -lgAKCRCO+R71kVI8PTFKAJ4rQrn6++JoZNikBXE8W42sfoICWwCfSE2174N/HFEu -JpBEd9iZ8SdKBWyIRgQQEQIABgUCS3Ft+AAKCRBQSUvt4ml8RP0JAJwKhthGJYvk -TA6M5EeIFY662AJPvwCfWLmxV5pTzCjnK/vASLRtBG9FmhiJAhwEEAECAAYFAktx -jRAACgkQ0AOFL71SUp4PDBAAsEjcC6E1T9WVmhv/IStNJopTIiP44H1xR2sns4CP -zS3Tw5KW/5HMRsNhUcCh9gBBR6/smjAVxz3ODlkiQtLBUYxjEgU/gjX/zrwRz/sj -1UWsQh+2LoDXwGWq39+/7vG0wf5mOeGxx2U542x9NgfL90MHFP+TAOdgQOFhXog5 -XYxGKyd99GFbT99Q+K1HozYXL7RRaKEZ0XApV+NojSAz+tJ2EyKU5QgSEF10d6gC -mXFE1FffoHDLiZwwpXiqtM+xV6jSVapVvEWsGlI6ILHIpIt1BxvsiSelD+vsbYDT -6OisYuQt9wQPyCHPZA20sRfxzVAPqRhWbpiNqTT6VpPIWoZL+OvgS2ePFa4oxSPf -ayDiO05VKb0/eGeMl+X8IFcd95dRYxJH6Llz2TpAoP5LLIjsoBzMVY6cd9/yTB+C -rQA3YA7kY43UWSp4sN3Xzl6Vt9uIMOTk6cVfJhhH6SjYoowmZelzwOrM3Qf5aKFp -uP4v2xJTDS+mp552OG9Q36BHdyHZYcdsuLn8Ub0LHaIcsndsa4NQtLDqllTS9168 -r46TqIfS/rUeOI7h0Z2ZUSY3x4c55qlW1KwpalbWYD+0uR04DdSwd8dmMdkcNLZ/ -RrBgacl7fpnH5VEmGSXCi0B3F0qDY+/auKrPIe089lwomVp5Ibm/r6SvyZP1Ozzh -ZSmJARwEEAECAAYFAktxqT4ACgkQMXy75kMEJnkfTAf+ITZUoNudiCWlL9lGq1vX -7is/bMEcJ9pN+EpxQIMWZLDMkXYk0YAXx2YMUDOnQlxEVC7MAVO0N8f6suy+JeUx -AbDvHTTR2rJedWhn/ACRZwKkFpoFaU+QUDWcXbXfZCHTOd1Sl7kA/P/pi+FLE/+l -o2yKB4BW6V4nSA7keEo34+abOBf7FEjN+3zGKXtgVlN1rp1jNiWZSJMSt0ccdI8N -JTZyFCXZMxi1Ym7IN1B0eTJUDR08NuN8os1UVF8jOGUpCX+lrftgzuml60IBuY3E -tKKc8uE0o4nG82/hGqSpRsB9+7PWnCuKUIfFOmYb00MTpqDLglqybkVQ9VruI8rn -+YhGBBARAgAGBQJLcbg2AAoJEExd2Vn7CHi7htkAnRo+8dPrnhjdn/lAVwLo0fma -dsmeAJ9KHRot5s1Xu7XmOlMiyNPVMrkyCohGBBARAgAGBQJLcdP7AAoJEANNWsug -fX1fj3kAnjqHl6iI1UPtMHs82bPrWHdPex5wAJ9EepjeiKAoW9m4aeHFRZEmTDTd -9YhGBBARAgAGBQJLcdWRAAoJEC8a0HMpPAX9Ed4AnjDFoyPIaEdVTtCtaKNxSG7x -2JnzAKCQDe/4u35tnZR9C3ykMrWd5x5fl4hGBBARAgAGBQJLcepbAAoJEAOz4dZY -2jgdX4cAoJyikPBRhoYEnHkAedjBD4IS61AsAJ9knu4yodOl3lpXHyfol0CrPi6N -PoicBBABAgAGBQJLcfruAAoJEDGmPZbsFAuBs1ID/0C+IaMNN+99wfH/G0LvNtDz -EdCQEOFiIRavceHJVl+SBx7F+EZzAkn7p4SxGYSI5NkpEAQTRYKgPZhFi4vKN2ui -FpoEcUfUoEdEZi8vtQ/6SXeCsUzuVrxPtRz6wxqdxZPxf13W1gtGX4RkH6HFwDxd -Hk8b1JbmdTHwxzF9iHIBiEUEEBECAAYFAktx+vYACgkQ/W+IxiHQpxsKDwCUDB6a -Z5q/UB80mnMuBryJbHN7nQCfVQeqMp7f0GSWACo0MTus6Gmj6aWIRgQQEQIABgUC -S3IiigAKCRAkt0RyAdcqwcZDAJ9qepVJPKx3evhbzhd7IoImnGhumwCfYhjTYKBz -y55+boroPAKolzMTBQGIRgQQEQIABgUCS2/EEgAKCRDugZKm5EPW2Iv+AJ9IyfdN -zf/xKt2tPB92CJGuk0zGjQCfW/4n7m1WQoJ9djCpxZOejXMfFCGJARwEEAECAAYF -AktytsgACgkQMiRhoYmYDJvPnQgAtPqDGg+39+a+D61rXgKV4n50+AdfpP3qNqe4 -P8DU7VIF5UBB3i3HHub+MkhkgVXEVhOgw+gz+0s0nLytUSbetSqGmzzJ2cNL9vWw -SnxSP64mm6fPiPV38OyiVvN5g6B0Kw79Vy4Bg84gVOH/rpoWi0zoOLO00TgsLbrJ -ZjT+ERD9ynu9kf5AC6qaHWXHhSfo97Ne+jGa4bKUB5tR4r2aX47A+OreM/oOM/iK -AyDWsvSj4aMCG4gXDe+RIK++ho4CKRyiDhcmj/27Vi6Reu1axmWYX/4R7R7sKqZQ -lc2SWMgCscrH2vBDouSdPgnRZRS01nsKKxszjSo/KIrrhN5TsYkCHAQSAQIABgUC -S3QG9QAKCRD0MMFFxkHzjPeAD/4qReZQz5NnqsiBbEgbamjVngiyy6Unxb2NUBQQ -Qov08C8bG0/8ebQIIjL2gQCmk1akafRGGga0dYgA35VBl1n88szH4iiDdzA3vc/P -dWdalmkpxVjp7+aI4/1Npv+xuPanQ4V2D7U47I22TTG+IWwdjqs2zZLbfchqb7vC -FzAwBjXJQ/pQwRAFCKQI/4E/6VsZq/c2v9BxcWhh9i3DETrDcDJhfyIQt3/G0rB3 -lOApVkOd+TO39F9xuDHzTImO6ezZqT95Qn29k99JASg4sn37CdzSxBSbg4fFbGxJ -GP6tjDZIZqNhzbtcJT07TIET6YWO4Q31TY5Nd692mP/hXfWJ81lBiChbNNaW6dek -IHLDJs7As8OXfKSDYXWL1bxGgwFRAsdaztlxKg0CibTW7Ovz1ma9cee97njTFIQu -F+kj3fMpehVIBSWvqHlEOGLhcoTPGxLeKgBhzfre5GFHCns5vg8KpvWnBUdi82r0 -DYczD9w/3CRU4vzlT1MspGO/8kexL+c/Z80g5JNcU43blu7KQ8BkIppk8MOSbcVF -AqpxsWo+RNCToeABPm7f5qwkbO48RDzagd0XaS11E7VZybbsJHRWzaRw5/L4IP9z -xkQhA7evAXW+vAQR8A4dzwt2p1CN2iuUPp/IxfrprqE+5pEyjCW4568sASynmku1 -d+Y/R4hGBBARAgAGBQJLdA0CAAoJEGnCMbmapWptFPIAniE/ihExp8AXkG2Urnno -UGLKTTscAKCcl6DmPTc7YlgwTJSraB43b3Bb7IkCHAQQAQIABgUCS3QNCgAKCRC4 -5Qh3Zkdarzi9D/9VM/mc3iepsp8pI18EUBixZtmogr+XsfCRHSWi3JJM1mtVDVSg -ooWI7+xubt1qwQB8xlgY5sEvse2PlNXrwMmMyg8huHLgHG1H6ubVjfqJdVR9mFMj -H0b6DNtu3+J0trw3+x/L0p50ulLnpok2E3/Lphqv/AbIZ5Kg3xDiAHJPgvgAZtNi -kRIkpg4u32ur8+hsLZUuqu3z8LCtLLWPtG/3fi7Di1dwfjp656uzTLqzthPhLbAc -KGJlt139QLSwKm57NwQE+/TkhXic4svrs5ZIfGVVKpL82SzbGwJitevxuYNCTYZy -EW+oMRY9/pUpFXE1DWktolfQjsfxB8D4GloOz7TeIvE3v4gZtYjFoe3ynJpacyUU -BTVCxpDQ2BCBXi9aXxqETQ6lZM6+bISh7Zj2V6fHtd7FWBJncqsUfaDQyg6c2H3M -tR7KXUWOQSDOUuwUl2BGLCp6yYWepb/AkQkAbNdVzFa5djVgGg1jcno1sRoxCjzr -DbhWDKcxXoomNv8rOwJtFGo6ULs5xQLWbwPLDMdSgq8ACrcvPk2sphHiRLnd5krl -q7l9B9KvyGNpXKfwq2tBBXng0TZzKi6/VSr1tKIRd4OwNlX+jt0GMzK28VfJSQT0 -UxncYKQ+LQjUv3Jy0c3ZhTt4Tlwqulcvuw3Dx/9jn+mPnedeNtxEtF2m74h0BBIR -AgA0BQJLdB3gLRpodHRwOi8vd3d3LmEyeC5jaC9kZS9rb250YWt0L3BncC1wb2xp -Y3kuaHRtbAAKCRBxbUQTPYwiLWuNAJ4kgQGITYNc7ggLy1Q10if2mzG7rgCgn0O3 -jEC9m6MW6yuLQfMYKa3s2ySIdAQSEQIANAUCS3Qd9i0aaHR0cDovL3d3dy5hMngu -Y2gvZGUva29udGFrdC9wZ3AtcG9saWN5Lmh0bWwACgkQVtUpPsl6BlR1UACg+zkT -9zSQs0T0VGzkG+Jt0Hn2y+QAoLNpvDPUIOXgL69BuxBEGfnQlKIpiEYEEBECAAYF -Aktv7ZsACgkQNQqtfCuFneNptgCfW8csVWh/NMvEPgKQu/gseJOfWt4AoIWVJltN -4eZaWfJPysYOddJdBEzpiEYEEBECAAYFAktyyKMACgkQcxyv01PBoy8wHQCg/Q+g -pafXb3wGOHBXU6lu2WAY0icAoJYb9/AZ+Wu1JohzRZ+DL7n7LwGaiEYEEBECAAYF -AktzI9oACgkQaPNY9sE5ZHzAcgCfVgrt7kzjXzRzVL9mNELQ2+FmUTsAoMugSLMt -HgvWkyKKn1xnQt1eb21eiEYEEBECAAYFAkt0PfoACgkQ5TEV5bihnGmhkQCfYD8Q -TeNSE53jtqa+jYeZP1jkVu0AnAvKbnZ4Rg4rBkOpA7aBzQPygTuoiEYEEBECAAYF -Akt0QnUACgkQGxsu9jQV9naVBgCdElpaVJuOXxVeI2s+Y02/IYO3M9EAn1hrAw/C -eE2O9nbmKS6EPWDC4m8IiEYEExECAAYFAktzEOkACgkQL5UVCKrmAi6omwCgrVqP -QTj69GLDNtJ+iDmM3o9W7tAAn3SE69RX2cjqAx3q5h5Rqs3EbxeoiGsEEBECACsF -Akt0rg0FgwHihQAeGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7 -DQFl0P1Y2AwAn0FCLJARvLBzeS7ATVsbc6zVuSqsAJ0bMyYct5aNbaE/0VZ3xzrG -Cnyqc4kBHAQQAQIABgUCS3L8mgAKCRAagq1Xu1kkQ2l8B/9054rCK3IKyre+VoCR -w8Wrsthp87DyvdpCkZvq0QiW+mknM6hfXCQ2opSBQbHlBUKkQ69p3LFApn5vVOin -C01LJEYk+5xQIgghPjJ7XmhzzkIo9wxqtRibjYCgt/qW28fTM5cu5PgAGr0F723k -j/xJsm3fuNYuknQOaBEdx4eVSimUqnGKBX78Gt/7TRrIMgjIZFLrts4AxjyCCKhF -Cp5TzLcWVFF+WvjVmAZQyyaMFjFybjU2M4Q8uabtf4+8ju5Ap5qoXwxzoY/uL7WA -U2s5YMSU2/5D3at4B4RgFK69jC6FOOhlTgxbFrxGyrsaL19UcRG0UIB0/ssKowMD -XQuZiQIcBBABAgAGBQJLdDuOAAoJEDOWFYjhwhhFBjYP/1IIDY+awmwJraaNRvEN -5mvTKbSDPCJNdrfKozoRX2WtKYJReWz7wWnuW/HyBu/7xNohf07wE++5V8VPcZvn -RsEeyeZ/TA1/0HaCZZfHBiN3mFcIbrR0OFpLBnell4XkARAwvuCSioG5KIbsr0n1 -3pCDzv7k2gcV5mQJ31baYG0H16lCkQxXmFQ4DbUixIC6kyNLheTBRHEBTqzsG4Cl -uq7Ug+EDev27ybfINIZV4oI3xTValfOzJw06u7LFsJp1DwuuUvgChDgYkyc/dITi -M4hPR1lIpekQmmUB/jDpDhEpLtecDhSzooIqVrBqaQ9EY1+m3CIaHh8etWvc7701 -+73UOPqX9b13/Hms2B/bu5BYvCbmRN0CzDhoi3pIJEhMCIAUcicobKK/dO9Oud2+ -HsEOQl1zvj6knKj1z64kkoSY8pPHmAqgokJMK2C+50NWe67teCo+AoR0BvQhydYe -htTIvCJziBYw47ViEOuaaEbhuR0P2tEldRgltP5SCAnhNQLWXA8oHA6xdJhx4tca -vUukWuEiIovI05ETLYKCj8sdPtShdsxgyS+pOknbN1gFLTUdU3PSH1BKrmREUDwM -Z6jOKN5BzTX5BU/0Acpvo4SUiM3WFwQlfl1aGPOCXvZsO0+4pVyyervmvkBasaw2 -dKqrQVVjA/liIQGZok1XylkeiQIcBBMBAgAGBQJLcxDvAAoJEKwwh5qrVbMS1oUP -/0TdOTu2Eg/6oUFvhMSOI/ojXS8z25Sa7zw0F+6fPdvsv5zy2RrBAwKMoQjWHWcY -zmDUsU9StTxD6/DNrqbYfbvoHzjCn30SdyWK5VaqKdTjxSKwmjMQHlxaiWTE9PZY -yzOwp6lnQppiX+EsLIX7DKRu9TVjadFMNY7/6hnipk0fPPV0pBPsA/dpjOHKfHZ2 -AjZjWvF6HY7zAUikd3HbuhnYZoxgGuESZj2LxWebYTVfkSsYyMrsXnUISKJFZQl9 -hh7eeIPwZrFds/q8RfQyusF4Z+tlqFe6+Wuj/TkuUnSqNeHpZ6Wf1J1UepGl5uhs -LKsmeMSVtIRkGbMx0JIfAPAlwETuxfuCoE7wW1Bs8SowJ5+GMKbOKyGtQKA+VVca -7eXVfd+4/P6ZoKhpWUtZI9WoMRL5WrK0vo+gER0X98cpOYPXu263A9+yhJYLQOmK -c8SRF8sAmLBhX2uSTOHc/VrnC1pneHXpmArQQJ615XSpHNHtBbemnGWilViEG0s8 -SamhyGL56Oq1x6x6aSj4pDYHmFdRTdNspAbhALlhHThKvtz8s8IMm9fDV/eEwUwK -VtQmTb0+SGovmEZy04oiRJ+e3Unn6+0F6KC+t56tOUmempVFHaAhc2RdpJ/TL6R8 -AkauRdSWUFHR7NTRyUzubu5i92JDkmY1XK0vKfwid51NiQIcBBABAgAGBQJLdYQQ -AAoJENNzD7MkeDIg55IQAKtBxw3YJAzMiw/zpriSc69TZ4S0PYhKg8JdIJxtaYw/ -bpWfhtw/VdDoL+qTmeEPbjN5LBuTDB0y85+eSVG0Ud62v544rAIjQGggFsS1B4IP -p5a6Uen8S5RgfhrY6mlcQ21U4eHJjrWuev+n2JwPTV3S2ZD7lDp1XZ7wIt2mqd6z -SlXsNt/pnB3QZ3S3PIng3X6+6/684SFkzdrYfZHnNQKTx+WOHML5WCiUSTR+Mv9X -8luSHEGyS2WEe3QvO8FhBZFehNWzEaUyR/v0eNHMcC4ePJLe+22wLuq951wmSdQ6 -I3Ps/rE/TGzdBm5RWoLuWKwQdr1JBUBASojcgHnEADOKWnRI8Keg+hhpFkF4eHq4 -WESmHwkWUtVtBSB1ETEzYNXghJ6PvikQUInvlk/QXuHrCfh8lWaPQdtntNlngr3k -mb6Ky+udI3b+TTKJL0s4CWZnVhGy+IIpC+Z5/Aj+739n0Q/sbd7Pk8qKORooG5Dq -9OExMMEcDkDJtCyumFTIi0uDJKeI6kvXr8yfmhqgotQfFOfT6Nf2khNnmK1LzjWV -8YcwiELsMoWMlZZhYn/Vcm9aXWHGWbgO+fRPv4XGgNKEyH/aJ24N9l61cf6UlFs2 -XFnvCn3XitlETKmdkc8z75bgACwBdzWPNKdEejWR9/0kySQ7gNKg6uMTy9fAAJ8K -iEYEEBECAAYFAkt6egcACgkQ8cBcumlruBmusACfXcyE/iTmCGEgWeCT4e0ckC6E -GF4AoLKGh6OuqMzbtxoCnoychCkXHMgeiHAEExEIADAFAkt79cMpGmh0dHA6Ly93 -d3cuc2MtZGVscGhpbi1lc2Nod2VpbGVyLmRlL3BncC8ACgkQtHXiB7q1ginFjQCf -Xr5mR46FQMO2Ha12nL2zRFul1DoAn0oKit9Eu1CiL7tK4g4SV67UhV3UiHAEExEI -ADAFAkt79c0pGmh0dHA6Ly93d3cuc2MtZGVscGhpbi1lc2Nod2VpbGVyLmRlL3Bn -cC8ACgkQlI/WoOEPUC7n6gCg43NvJQ3TPPT7Q8rzXxavsO2GnsIAn00vL8xQ2j5F -nsVuUNQWtm+9B4QDiEYEEBECAAYFAkt221QACgkQWIK+Pe9twhqz5QCfQ3nZMr3f -cRJ3OQ4UqieA5VLUogIAoM/zLBLE7c419WtIsmcEonI6Y4G+iEYEEBECAAYFAkt4 -NWoACgkQVzc9bUjjZsxVOgCfQd6O8kXU0dDSPxX2/EeiyjYYJdIAnA6I0mmwIHpj -pBv7zCsSqm0LV2pdiEYEEBECAAYFAkt4NXoACgkQKOf8YmEjJI+vngCfWvEhJfI3 -rYH92y9ZqsQc1FSkf6YAoJPnrqs44uHheVSzTHs+SZubCuuTiEYEEBECAAYFAkt4 -SbQACgkQ4to+B4gbPC3ckQCggImTaBb+LB/7nFw1zOOJMQ+gl0kAoJVporlqIPM9 -osmM/8Cg3tONG0hniEYEEBECAAYFAkt4Y4IACgkQaliC34RARgJ7QwCggAU86uyo -rgIUMUqvWZgXtP8r/vYAn1W74iJ4RLdd48EbaHeBsoZjwO+RiQIcBBMBCgAGBQJL -fQusAAoJEGUe77AlJ98TdfsQAJJdVhtFZpBQTlPI0UjCLf9j1EvZsHsGQVmOMKRi -zPHbWE0OHXxMn3VmxN+tIGhTiCx+TUKJM5zD23X+Qr8iMf1+7X7kDyoOM5LpZNO7 -EI76tYS0shV3uG4zLbcNgLyG8/Lvx1wvHrbHFU+r3ucBkscJIlD5uXMybQLVUFVN -MGsBHL3vXIWLb9HZ4x8OwXGqpvQUZFVeZxzPb2Vl5rQRtmz+9BklOPMgcRRxK1GH -+Jk9s+SOfJ5C/uToffCF3+GRkn0dPf6cc2gJ+YoLkcNm/aOkd6BcoDnN0eSduTBN -1cfDXhsCwoLiCkAype4hWWy8NBKtGh+MfJ5UnZra/DB0kivajV5eLFghU9wzXJ7p -N4z9SyzS+E5jJIckwCLRnwr+guPHHp5Z/JRCG3J+6OPzWxbA03wHkTonWFwI3ZkY -gc/+mDNMqZHXAhZtdFQCK85wkizO4ZRUCDRaqzjA8MRsmyytu6ZG5vx669FzGdTW -uyQrhPNvdG4nOcWIrvfh1wawVO/nNg9fOIc4HM97tEq6d7E/S2UPpxJFFCMBspcb -BINmy5p75Atj6u3sVeC6cADiqIULvBr7BLK5YEcv8sHriEzaHybXIAkU5UHj7kNm -eZNMLbuf2dkrXMV/NSRsmY73Q1AyW8u/cxT2zLGbFKXiOkKNHrVOc+IBueg9a+uD -7itwiEYEExEKAAYFAkt9IiUACgkQ7Ri2jRYZRVPGKQCcCEizjhUj/pt94jvLDHB2 -8P5+GeYAniG4Pa1AWzR12r6iJTJMKNn9WlRfiEYEEBEIAAYFAkzWlsMACgkQ9ijr -k0dDIGwEuwCeKu0xTWIpob21DL/UPmiGcdYXXRUAoK1BOM9jesjnvgWMEGBJChCJ -kiXTiQIcBBABCAAGBQJM1pbSAAoJED2QirPw+/UfDF8QALm1np4NnaUuWRD8mM6u -kfxeTcH1tZG5cKzKua0Lgb4XCMFxC3d4CFLnIWglws9dq6O1AezmH4MgaD70HhLB -x+6geDYCFIlIv/VzpFUMMbgDExFqkgoIEGAMcRq6IvnQSbQKM++PfZ38SAOadNxo -JfhXp/5RlkYH/1MJ059CoC0ygHL6p2BpDrmmfIxyU4jESYeZgCeuhAvBSYFk0lFP -jwwC3bQd1BIj7TvCGu0Qve2oFI0cP7GncvlaptHoxF2dKIlxZKWpstkSMZB1zm7t -k1VJ5Gj9MX+vx1Sh6c01h9B7XYPSXTFVOuUnG5PzONypwPwQ8/mlWdymKs3sEjZG -cznaRX5KkN114OAmf4VF478+nTo0YAhyXaUgCMUWYww/PHb+ZPDRw0t1LLtPKRui -/cf4hiz2vHBlIegJGY5OyMnp+59WbJyHquLg0BnoHvwBjbF4n+2v2zrzliH1OD/R -BDzKj338D6BGKwZE7AFl0ZMvZa9yici0NGyVl3FZxPNl5FrKPK9g2wzLPe6/HPN5 -xc8hlam543LsspKd2ZHmVDSvXT99jK7pWciAtnxdv1LGo9aLNiFSJrlw5vYO6aUp -pTEF8pGSO2HxcbgJMUvhq5mVFYXy2/NkYKjoEq7RHzDi65160WIrxKxL/dArSvsd -oE0WTEKiAMC1zLFAYxgE6SjkiQIcBBABCAAGBQJNILQkAAoJEJNqg1tni5eWjNcP -/ik93j4SpohrkG6/AFegelK4UHgx9LHHfeGmmWqHE9RqUdAD6J8DC1HYwEO55dsa -vXQejNzYH6NIKtSU4ycYcGd4GqL944shsdeOBrwJrsJHaSwXIM8MdcmhsaUsa6Te -Y5nEmyB8iK9pPcPabJ+1H8Zao3xH6C95N1XffCRtJ0w2balIYWXB7CQSEmVRwuHv -g34UJx6TA0sGSzbdJjL++c1zoJemJv6q+mZ/lMrBqbh7Z5xuiiWReNdwCu4Wzmrm -TdFuCQzsA13b1TUtBR5Aou5b1NJyELvVnOMvVoZFSDYex4R6XyI8fm467Kh20IJp -CzW1GYwnSGJiNYIX/8mClKM4vLW4d68mkKt7sNJzveh8wUZhkVJIfYyGhScGedf3 -kZWuUqsMfRLEyCcRY3N6LeRmwkrKpj533B/AOXEkivNoSF0C4oLo2FMHpSc8p0WW -ygcvuC9mXItCVI7MKKi78oAom+qTTsbyNzJ5q9rHqeswq/pUHgCHqfTGh3toTEyw -Xz7NCGMHQGMAwxoKlWNcYB23qO4/1I5ertyOvGDyjYMZBiFSnYaZAVW3NjiFtFis -JNrWlqG7YDraQVmUA0r1WjlOe+FUuQwIaUXXwO8/NOI8WGKYB27QmrbgrsoUXC8N -6ETVZxYVvjrUVRrdrkAM8zwdjuHrSPGaRVUcO2lNpGuFiEYEEBECAAYFAkt6VMoA -CgkQsnuUTjSIToXtgQCdEaiuQSVG2dnZix6xmXTCANY00kQAnAn7Grcu3AfzWahK -wjVhsV9jxucPiEYEEBECAAYFAkulZRcACgkQi/mCfdEo8UoDDgCeLLBXybBjSsrA -J6hj6RGm8HOH8pUAoIDLSC6EHaOC1wkFVKpnlUOgDDFNiF4EEhEIAAYFAktwd+UA -CgkQajPXGT73MfinZQEA0xNHOdq7HgoHFxk3wDF4jqdCZJzJjrBR1m1OjAKJo2cA -/0QTR7GgBJiEoO5EyLz5yD93Wt/g53om93YFh9V7B/OoiQEcBBABAgAGBQJLeY92 -AAoJEEKTP9ONXAyPPOwIAI34GDKg4d2Ka2jnFL2KBsheWPrgE2+Ck0dE5+LOSJdL -cX3a00F0CoFEQfzPY+jYGnpjOi6rLITaUHiRFjxSb9t4Nb7v9DSDcooTatiPZW+J -Y5pni8oeW03YkLQi0oHlPRkXj7VGi+2ALt6OsLrURu/63K1SF/IP2R1L3/I5k+Z4 -y+ZO7wzSuhIYZLE4xTigrlh7MRhuscy00Jlkox+c9j6pBeeoHIsF+b17da+W4JgB -bh57ItiFHKsUJMXiCMPVBC/Yiy8ooy/ZuhMkbT2mmXQCE9ey3LUm4XAMy8JV3x3b -/iZydOM+hFR3jGrF8JNA75tvryMUDMLXoeB6CBsCebiJARwEEAECAAYFAkuAehQA -CgkQi5nEqDtFWicOZgf/R+QUBHLXXxK20ib9lFn4sZA/a2lAY6T12yceCcD3CvNR -CaGumY/4JQ4YzlqbGiHCOSYR5IrnjghDJRJX6omr4rUXeiDhcS3e6TDiO00vfVpE -M89TjFyhhTfK2xF48wzfy/cPv7IR0a21xfn8wuLXFEzMuxvRpxwhotMykFsU3QIV -84WpmZNIiaAQQAmnoyGju5g6uDLJKQrKjChEkDWWkMwLdTe3+VSDKvkKal7CoM3O -z2wmnagDhJOiES1szdB2AMDjxnxexzH2V1kjG2aymBiRWHIPh+ccUyiEmuwvCNIb -swAbxGHY0Qk/GmF2WqyD68rHL8h9tHF//AucbjatTIkCHAQQAQIABgUCS3/3cAAK -CRBXkw2rC4awZzEKD/0UFlLjCxoXxMZlw91hkCWAz7yZnGRw6AK+ck4RvZCYNjhq -+nvVnKG74FrYh0fHmtDevg1DncWUxoYUbJrz3Pxq2o9N6kdtmqs2QmwAYgMDrR8R -EDaJ6DQqWYcK8nsAmyCr7LB1NxzO1ADy7hDVcpx2xUN7UPyWpwJfQoZYI5UreTgp -mM185TAvgImOtlNHvRfSmXgxwzN2/mfC4dTI4oxNkTgIpr4E/38BDiV3ArCKlcQh -7DEpDfYhIsf/k3isTIPWtnmz+qlAHMPxx3MDnuTa9QaHb6lmPCzKws7PXBkggFOh -WRXh4hHQm3ZDSabUYsydWtRevJMAJMldxvECY9VNmYA65OL2D7BZPzPlx+MltFfV -hbw5N7pFXL16N/rKgHaKZlGo21y4C/0GMgigMA1gBAXp5vFfLVqTMgV9Lt4+rmmt -BNNF50RB4EFrMzl9g6rd/0a54/b8e477SyvgRIs/oOAnwWfpS3TznQHaSP9wnhv4 -at28bbS2PNeqavyi28kUOFxo569qh98d1tcGJ3nXNV3eL4mb+nLYTOvVLSAGi+Ca -n6g5Ebw+m81YOGs1iIPGpsZvDW8jIqZ6y/tARto0PzML2d7Ek/nzspTP5PctAXsD -utOmJEIUpKbKFDcrKHB3gc4oFu55FJkm6rvSXJlE7Be4CRUL2abOTmES4Fu47ohG -BBARAgAGBQJPhcvCAAoJEFbn/4ooQMcIxtkAoN/O+8cFmHeIcc0lOh0pWZL+snBg -AJ98D7x/5zZKTEUDGiEfNA2Hb6o8johGBBARAgAGBQJPhcvCAAoJEGNC8uy8Wva5 -xtkAoKTbicqodDFmA/CqqIrNDwIW31PHAJ4g6SwYfbEMrDZaEsb9N5n/R1Kp2IkB -HAQQAQIABgUCT4XLwgAKCRBn53Lwg1Hgr+JTB/9CCB3yB9Vl+U/FcpGVeztBLcnA -7f7MFM7COq0rauyG/IU0xwTHtr0GX0XV5JQtW8qSP34q56WtqP0qGBj9I7PujU9C -GuYZnxBnOzZ50L9OM+upcXe1WvUfKuWGfiFR8yOrE99KiBLPfzibAWCcComKHNBd -JW+3cMyMbVo3LCjRXaUHnAwrIuQWCU6QDsUVl5BBDWyQcsrU9KlCQR0wgiPH/Ca2 -o0jXeqrZvxqL6bLU1mssnWEKznoBs8QbVlv2TnYkW+kPC7hFfPsgaUGfl+5LPCqv -UP5Jf5bWP8kEdtKTBAZHmaJjwvOfP2NV7tHH3fMgXmfTRSmCsPlXb5Meik/5iQEc -BBABAgAGBQJPhcvCAAoJEKjOKKYBDW864lMH/iuiw2qmWsK8POBR4hhMfEEwf4Dp -7YyqKULARZKtEaE3MHY5Ck6Wds1gfwiZiZbvv48ifXs2Mjh9LEVE+GKsH2VBr3Q5 -ERAEjT95kM3y91ZTshSz175zA7Ia5oNU0bc3W88jz2NdJrNsSebQDmZCfHyp2R3k -Uh9dNvH8ngW80LFpjgHZyGSrgrq8K6fAlqCQUloQF5OcjYgGlk6t78oA8wAExkmT -vaIIQz6RyL5Rhy9QKkBZrf6UocGq6a/bvKGMswu7guOK+YUQ6ou2Bvk/PEI2OBaZ -nH05ny5wJdXo23CxaxW4YxfoZRHFVqxjRUsGaDXdv5suR0VlXRZIfFsy4ZuIRgQQ -EQIABgUCUF4mhAAKCRBiTcVlE16maMYtAJ42JRIwGOAwJq32yEXtj9OznsWQEACg -kcXGl0EOLjnDDIaDr4T7hFP+ASWJARwEEAEKAAYFAlGM41oACgkQdIELASNGyaav -LAf9Flx8oUngyuU+TY2oE1qhecWNdWzl9qnQO29bf3LObilo0nervjBirq93L3CQ -cozaWsxadzwo/8KfagV3nUZibbFpuwroiveCgs6fKsyhcHJGB0PpXhkf4xoRF3xn -7M7BFJBPfH4Y/fFPwaOb3lo64oMnqCm9tnCG6N6eudDKjwIghghfhIvlEjzlPG5o -caz4dYAqGdobW361nKIRWiXwhHT/tlQrxHmKWoeP2qj00tgPRhOVqj+9fQk6RNm9 -CJtoj8s+3cW28f0bUSMJl6bRN+vIc8/iRaM6rzQeFfC8VQSDHLd/5rTVKYhXL+Be -9+l+Eak6ymJXmKOviyYrPKcJS4hGBBARCAAGBQJSHQq2AAoJEKyFk2KwQTv6MPEA -nimRLPJYJ5Gw2NsmKAepn0ZY4UzXAJ9/U6ZCeqwHLuXBYZ57gj1H5R3+bokBIgQT -AQoADAUCUhOGdgWDB4YfgAAKCRDnpY4zetygefyGB/wKrnEv1ZBeM83qq2Plhq4+ -WtNIPQoGgOqqjNOhiNORTEHlg6+iJiuoekVgy30Xr/1GDAcH3naP3dlR+AeVsJAI -G9kzx/1VGNoWQ0WOYUCkyyiTX+JKvhmtS07XcEaWUCguOwgLHShb2/DCjPsS9YzX -fu9PSBJWbiqdF//6gPzo+WeO7jimZL1/Q8ww+Udq+HofMLLZ1XtN41dT0m2rE+BA -LnyQeD0Wnj1Jti5AH3hJvOxV8X666ftvbNV59SEqYjyIo9gMPnm+i1Vh+LzyKAQu -NR/Ius/tq1Eup6DBCooMsExMmma6beOGLkpRMoQEzNAA8QKpjlcDXeBhwVRghfWd -iEYEEBECAAYFAlMY6bgACgkQdzdhZHtTZBU+JQCfYQbiXFGFoChciJM9GIKgnEb5 -JGIAoMp/plfsVSSwFPIvk8cwd22MXcsHiQIcBBABAgAGBQJSMkhtAAoJEOFm+hFX -ETkWKSEQAJtLTRQc9geos0sl7xzVZ1ESIFVdxzAdl1AalC4OcWqisfGfEuaD4p6f -mG5zYq4FRUv8sBB0CpKCYv01HtDEgyiY7RTxywC+tLRtJHz1FbKUCE9aTwpG2d1q -IWZrKFK3XrsHYDHr+V4ffQ9dGTj9trSDWKg6gSpD74LA+Re7scdzVk/9lnorIwSh -1hzQ7AXCHrQQK9RAkh0y13BZGgxv7M9UM9AM/St9tkgcBENJOCxrMyOT5trBkbKN -PU9DyyqUfkeElKl0DQl084T+Ets3jESaBHa6+QtPACz1rIvaXxGlqe5BxiM9NDe/ -tFWwS4CTlP38eIazC9ZwEsSF1XBl+lk80szUCcBCgRengID+2lZzmXgEPrm9W+XL -pJq4bzdtAXszUP3C67HKciQKffopZbz4HdBqcOAUBC5EEk7Finp7OPWXeypTdXgC -G6zq8Oy6jd/dbCiCPZYy3dpaPZEXti3Ow6nh/z4PCEuOIJKfI1YqkgaE+fyC7Nzd -9qBZRzjzYCiWeVKDYeBWRmxHjUOLYuAQK5FIi7fJQ5ORGNy+eoNaSjB882u7vt9u -O1VozGPgMdRfmHsndK1FBN+Y/ZAg+Ryz6Lk7ehXUPSZffAKk+XUW9MJr+7r5gl4Y -eLFZXy3ctwJopskYCFy5U+KKRbSoSI8cTywThAMs8JrGK8j69QzFiQIcBBABAgAG -BQJTIyzkAAoJEBrh01BD4I5U2h4QAIXj/d7v9cd4fg15Ij7MwRoXXHp3FE9UT2pZ -IHgrPdonR/rlMLY9ZcZJzqbj2yP7UxCqavNz5mQU22lIlWMExK8qkmVc+tQmrVeV -KFUIkDpkwLWg7j2E4aAIwmnav2otzcF6BwILWwzq5ZzXkQ1raiWWg8mPIHYz3qFF -K+47sADiTXZpOUolJxxvThirO6oOhqhJIX4Pj+yub5EbEir90pWyrQAhQK+p0N2b -dX8JerOOcDFNtvHTtrSvV3StQCfCtrVRpvOYdpYkziUwX4db269c9HqdN7ynQQK2 -jEezAXFsH6JIVy286rT7WXr1UmsFU7RGf1RwS/ubSSrwYQ2hSWN2HvGUYtxrf261 -aK99Qb3oph5hvWvePdkVJyVn6pAYn+V4Dv3+NSk7hjEGOuGRa+XcpVwJ5isTM0hR -TAAW/BZnBVoMdwTntcU/tXIAdq4iRhjGGtCuERmemrZOWf9bE+2Xc0KRMnGGRUDr -QQhqI7kV9s6k5S2f5CuMDArzrJg4h48MXNpoaOZi97SFocI08/JcMoJVEAmb41ql -IsUgAmTRmtl+9jXRPeyFpXkGwJXUNtlSjFEPBoK+cY6HSDrvrLdMaSNyn4lKYOH3 -rJeqOI2viITyeY5wCCGT57DeTYQrJsRk0yvEOKD7HMorWoX68lCdtJwGc6tJVhW4 -p9nisxBwiF4EEBEIAAYFAlTxHDsACgkQxlVWk9q1kefyDQD9FdpHBxCC1LbNbrIS -84/AjmU9wJ3bz53I2UU6Mgmv2QMBAMtNUhZgVV+69sxb/ocIMm/18dX769Fhffmh -EMCg+t2eiF4EEBEIAAYFAlViCZ4ACgkQfX0Rv2KdWmdWpAEAs90quYrDe/mpRenc -E4JoouzF9We8KFmPDWhRXq4Arf0A/2I5iyAU4uZ8UdkL6dkrPFltd2A2OK2fETPw -sLUD5KpViQEcBBMBCAAGBQJV/SnoAAoJEE90TaH18VOBA8MH/A6ruIg4ZPdAxfog -FYeDZy2PsRhkoJhy7cFCm1ZEdKnEA1H+/aqA3RJUYMW0fxDpCeIk83Bv6EKar+8z -25gX1j0MU0RSwhq3KuXSYuPwIn0VH8UXjkaChMtgkXGkqzTijF0C+PDIUIyf5Gf1 -EBsN3Kt505Bt04L8XExUgSEnJjVugqq2dU09+1XtfcQ3qMjX2gosWxRbTHhMiIuq -UpkDwEpn6DEJQf39zxaaBSULrr9njThPI5wCDxVPbj6v2fI6zsre+paXlS1STBbv -fIhrgMJTb00oMBRT53gK1fZ9TS0uRnTRUR8qLVUT8ZDOo8iLl+aEh43tPwj3yjdX -glBhufeJAhwEEAECAAYFAlX69ooACgkQ2SAObNGtuPGkcQ//S3cRyzAb8rKQRcjP -sle1mYtfvkaxQCYahi7NXmr3Bq8mCgdy0y3x4qbJXcyzB3Bw7WObbS2BeOjkn4Gc -5P1jjP7RWeDJgI8NOowChf3vykuUryf7Hps4TccRU1tsxVddS5j4pO3/RdcuhfyY -gpSori+z262BgKPasUuUcheNGKNEyRwDnWnIbtnSz3O5dz/4bmNbZuKIpDB8GIpX -KHW6Gp5JISmC4+r5VrIu0rjPV8PgkyUrJbUZx77V/nmrR2lTpKOAh4+S5qew8EXB -WXqdQ5HnMBnHBtmAAFlq0LQXKhvsDuCZWr5ZfYNwoqE5TKO54Fp02mrIQ/AIQToW -QbZVCYMC2Oen/N3i2h/cJX2fuW/UwBboCLdsO2IP+VejKVJa2pQ81uryVMMASG5q -iShgvuu3VncH0BZ07aEgO/OuSAYL4ex79eIud8sxlccgHBiLm0XqLRMj8aKeImoc -O29rDCoXQzn7HMP/uRNr75pglyCiEHWFbsBg/7YQ8u1RaMshdbOQy8GnsNRpEF1g -BqVoQ6sNXb/s2PZEOX+jj3nju3rwy6b7g3VS1tvmLpP8Nekn7i800kl0eDb1ip8G -LgD3xhy6AXKPN4j7AJCEwIi6gIsouLqVY0KScuqArtd6Ay5tsksOtsIfH0K0Q167 -8g7svQROglgpBLhlinC4U9MzfNKJAhwEEAEIAAYFAlX9nckACgkQibu4Zj4uZc6L -Ug//VPxretsKLMDL0aytVuXvn6JZ7mR3EABfdUOr4R+LByxb/uD9etTkpI+DiKo/ -02YUHjGF9WLzcgcZkHNnpFMcPb6/ZEi6K+Y4WC21xS4jgSyPwVMm0jZb2O9oAri2 -ppejjsmtjXy81wUQ8C0GHAQ2PSVTobF+fFvgfU5hBi1aj1+Fsp4dMmerJrec3d+Y -GcaWm7/6Vcj3mGHBMZ8h7ONsrsqF8j/9IE9NgSBEjxmK94v16AsreEXjTyNspi1X -VbCZyjCM5uoAjEm1Eidxs/Gybat/EYLAHZaUxzFTyDWuyKJ+l6rwof+n9f9HuXwl -QJq+mmzZAgNC63rIgqp6zQLRRSvvDw+PSqrniYsKrq/O5nP0J0zgM+/zjXf6cSbM -v+EgHnGQSTRwM5bl2xKO8pWlinNghzVn6PBhOc1uLZgwUqZUB+Kbq5dZu2YL1LzL -SM1d8t0edDo8sKwluAnBg/vC6J2e9Yc9Iaj7GJSUseAb0kMJT3tXUJ12BuVpku+b -+c2hscN7K5iAJDWNigDR8c3AfMIJQJ6Z7FMBg4rBDt8MVZodJ5yuF8qQNXhtIFfj -6GxJcjK/Zz/LpgiDOL2GmfZaVwt93UHbsrmnqBwcQLaDUgxfPDKfb6VEid9QIU4o -9G8gJ/r0yMdTx4drjQc57WXDkkrgEu9ZdrPudIQR0h961jmJAiIEEwEKAAwFAlXc -dv8FgweGH4AACgkQDfnr1rwJAr5nVw//c8FTHtmeR9dtib777QWpD284IyARCEoc -dKmxZ33dhHYhk4gfJ7CWuWCVX9/+XnV6hoTusxyBcXNbxBnFdwQfEwftP+5nSRsO -LfhfXlzo1Yfjx+ZbgMK1aRX2a7DO5pGMHIOBpnwOo7HGsXykizHPlxQF9IOy4mG+ -D4dWaoarL/oz/Wn+XlvWQauaDcfYxtiUufrY1dO057JmjETJ5Xp5yWqHEAR1X+7h -v0CI5PnnyItPI4xmg5Jamni0CCiqElFlN2t4fz5QJEiz50Pgj7kAxDKRY9NuDc0u -Mmdl8+bru3InLGC/JTsPQzIoC6H4aWxHg9IzG5CE4Std3bd0raX24wgsZLAQVJvz -krRhs/NS1p1I1mQ6uqcu+HUFsHKaXuaIEGaofUc3eYHizYDdOLaI22uXRsrJEJN3 -FYtM9hFBEnd2fPcc76GPqbSLzLFw6JxUbZtkJsxQdmAt9s3lAIFliaKCFlWnA3sS -MP8vUKArXpg4S7Goo1zwpAWp9fK9lKHMBuZGm+YC0VEIWeEee6MtJrGFNRQ2YhZY -q4BAXN7eD+8RyQunMXoRIWqpcW54MZllRuO3DbTWWGGQw2xOo3ditQBmbWh78SLp -PA4tXFbps+XcCte/QaGatoIWDmi3Lqp3QfVEE4BQeWbgfqUURaHXnpCG14jVjWw0 -JC0fkpA6Dm60PVBpZXRlciBXdWlsbGUgKExvY2F0aW9uOiBMZXV2ZW4sIEJlbGdp -dW0pIDxwaWV0ZXJAd3VpbGxlLmJpej6JAjYEEwECACAFAkjFOBsCGwEGCwkIBwMC -BBUCCAMEFgIDAQIeAQIXgAAKCRC5pAjnHarJdLLgD/9XkWqCiltlS3P0VjmVRAeO -n72QRVTyfXCnUYo5gbOv1B6EABEiIcYVMqMg+2exi8L2GgIjBLm7GUWkOrpwruR7 -QdQBA6hzfw1uQsDa7SoPF7CrSgYW6ZPV4PGorAnc6k0ThYddSP84ODnZe1wvhFyc -NjiwhZiSPSsIySSTYhQRROICdSQTWOGYFThFs/Us3AUC2UDJhaX4jJSN0usxp9Bj -d481i0La35EvLAIQTICiwPbT877/tJqmk6EHZeJ4X0/xa8jEi7/eWs3hG+I3bLLF -FtmFJBFR5A8q+D3acd5KX340qZVX1eerMFQvAkIDY3bDrXGS5673pGH7H7x9Gk+4 -u3hIlW9pJnY4P/Kd/r3zDTWS9RF/9d8M9h9McshI8cF3bsGX21EzXS7fuAa4FQcS -Po+jxpNYb8SHThNlDJ08GK8ma/HyCgZG6DhkaFuDztvXRg1wYgy0chaOB+O/JteX -NMsl8NlyhY/1d5uia/EzR6PjG7Q3Nm0vP0bfpzuvX+gdy2ui3qL1BxILnRpaBasv -oMVvbUh/Elnggi7aHg5Gc2XFTidwBx/lQCP2tJlWDhp8E58Yr53MoVzj8cwtdDXo -SLY8RY2q0ajhVKEdEUseT5u5nRe2sytxDEqrgPfR3g5lCgNixTm6dU8uq6PA082C -84SNnczfHCVEUApI0q9FCokCTQQTAQIANwIbAQIeAQIXgAYLCQgHAwIEFQMIAgQW -AgMBBQJIxTnzFhhoa3A6Ly9zdWJrZXlzLnBncC5uZXQACgkQuaQI5x2qyXRv0w// -aHZji8NRumwZBNRaVeyitg9T//19u26KkWgfeY2mnWIzLlIYkqepaW9CzhXgaz2I -tj1MIeqGrFa5fItGSsv2XzDZNOXhgi4A95HVFQhnSzMpKM2QfSzdPbkkW5/xUDXt -P6ezWeCnEPmnYHR9SPDvAbNRdRYJZZ0xwIIwj+e3SsNJoNPabMYF8bgsra+qioyX -s+EEezPvlOEeBavwyR68M3g69jrhw+22amgvivXEkq1L+lH4ZwUM8IuZNCt1bB4N -dvp03XOn+NXJKhBPnM/lTktyOH58+J/p+3xho3bn2VMHu4UJpqFlj1vTncWgt3cR -zVkojhNtjJCcmZvSvcoTrTYNPeqh+VeVpQDdxI/21HJhG3o9TWKtv6gcS2epvYXx -F+6VbHH2uljK5nCdBKrt0p20eYrFAZ9o1sVL3NHz4P/b2v9GDudmyf7GUnLJz8F6 -+iRWUPMjxLoAjCTNFeM5osyfiHXXoosboTxKCWsDHFMaNjGR72ls2WYNRYoJ41vV -ODbcelnfkpwfNob6V4vcq02Ie+zu1W17SYakwkKthKCh1w3fk0fn6upa35xnWTJS -8nytIQW0mI/mXje/gq1qqCH8KjG7Jv/HsugEoRbuBE85DQCz5cacZhfGr1/euhOR -yTb+AdsOUkIzUbOwNZoX1Cgo9lg92eX7+BufqvfJvPOJARwEEwECAAYFAkjPwJoA -CgkQNVMKbJ+v6ZIW+wf6ApgSpnmtKwTG5/dzRDkVLX2IYzkXzL5tHSs840HsPq89 -QfuoahNthdVfMzrvnmzYTPBlrrfTnVBRKlbhJEc/3J1vVXe1jhGAy8iFSvwdeRf/ -MeUDFKrC3ag3jewMaRn6VDt7IMJ4rZ7XYV9QXrgc7VtdDCRcd0UCDpJiWusVrE9w -p7P3OqWhPmut6TfG+Yfwe7oAgvUEU81g/MeDO/oQ6amd/59w3vdIES0KH38Yz+vU -8FS/NjC7dxtPAxhfk+5SZQhiZvnFG7L/+icojFxxqcLEV+37n2QUn7tBtdLv1N/w -QVSNYFCLe6MSWrxtjyDDBgVzfn4gK+ilbQP014R4PokCNgQTAQIAIAIbAQIeAQIX -gAUCSMWe5QYLCQgHAwIEFQMIAgQWAgMBAAoJELmkCOcdqsl0I98P/3mS6P2DECDD -BgUpn+6HF37L/Yx+/S8nplFk5kvKTko/aZ30JVmqWTWcH+I9th2HI1InXs5qDl4B -o0A+/1ThZkS5kH/ZubZmFOyh+/kEQa8trUQ0jidiCVzaTF7rCFXfPp9M7nBqsapI -0NcfJhPQjupxjtbfzOlo3V6FpAtGSYTULzmsnNK+FdHMDGBb9u+PR+rnqiQv/SjB -7vT4iJR8Z3iLn6b3nEFUCUdSiLU3FXSGXlmSn9hxPx8ZExMUim07EFWZr28H5WTz -oas/SnodthF7SBAQjxOBevzt5C/c9ffLLOKFEvAW74TDx3WTKYBLK8dP+wtmkewW -SqJM4d1/tKWog3PgvoA6wNEznnWzDsq117ba1fzHvs+jEe7UJ07rh0B08viRfvPK -YKTGjxnvDS3YmlJGrYTusrRD0sYsJAOsQaM+8rDaWI8t3tnMFJpWnSiMSWZLqHiR -qt0ok68YGtFo3wg54QLdjFe1s0/gLbIRiyMEhodXolByTuVB9x3tiYxAE4YQ6YFA -5uFEcTv/NcgVoaUpgKyuKYtolL2xOXw09Lc8redkmCF0pJD2peHg+p7KeLmNavZr -g8z1htqKM/z7TY8L7pr7dWLs4J4ASXdkPB/bicbvG8AS5sJ6ujgR+wY6lL+YMgc6 -B3dJAzK0RojZ0v7ryjZXlna4Dus/rb7uiEYEExECAAYFAktvJuoACgkQF3q9fEkq -hHAkUACdHOgte8XPX/iYXwULkGbxHWc6YvwAoIduoJrAegoD4zU91K9SlEtYRgPI -iEYEExECAAYFAktvNMQACgkQzSaggc6rQV39yQCdH8dv0hkKGcZd/KST6S5JdqXv -7fcAn3IhXbCrQtfBab6wk8iDVLbSWoQ+iEYEExECAAYFAktvPgIACgkQ539IWoEy -06UNAwCfYI5g8WP8PVw7JJsFW0a1b8cU7ToAnjRxVXLw3OVJ6/j2dE+nlDWXqOOx -iEYEEBECAAYFAktu6Y8ACgkQ/DzYv9iGJztP7gCfVG7LVAnXXDI5M5/G279Q1l73 -ToYAoLw2nwMyhL9n94DKxX/tkG9JZB+2iQIcBBABAgAGBQJLbz+/AAoJECGfa2Cy -u/z8E10P+wWVDH9m1u+gbW9I0tetGDERjXIKOWCW5PU5MJzp2UbD7HcNE5k+c/9t -cMW+bJ5ZRonDUCzX79QYDQNx+FBJPKZerzCYMWqboGtU0hevxoyMwDhL1wPunh7s -i6Q81lcKRO9hupZXKxTnVTFlq/F6Wr9HRnEvQlzcbKoTqNF8U5Xwnx+VUQBW/d9k -N966X+6uxCG8X+DFChlvt3uPQbmdlZn9fVgveb2gLtQM4K1e1tsgrP1KgnID2HJj -X6m0KvC36rJawBBFTQZkedT4Kcy/LRMr1UkdALlj0XPoyYd/PbxRpSKSi0Crul/0 -POYJLSNLX9oOj6oM7texGbqVfYESl71g4GwvmvrVvtRBbOfyYzuP1ESJTpmB297m -Tu5sOc3Js7r2ScBQm+ISBnJLPqgvskt/2g0LYwyAqbb/Y9xDIvihLZ8ZWe5SNxP1 -95rPQRBBoNIB6dCqzKu+thLxusxMnXSkTPM8c0xGji7vC+vGlIpEHleNf7DwvUEL -zPzx0xdC0bVkDEEDzR1qqOfpuuu9QhPZGfxKildCqnkiC5j+IujitjYMna4XniSm -CYdydOBh5JR1vjF6bR52uRtFyyqAIgXQBvzAo0C/+KNPekmFT27Nl1Sezbq6QxFH -d3FumH7Le7M7V06n3cjjmqr3T9nfoYcBpq3zwnFixjiOAXYV3uaLiQIcBBABCAAG -BQJLbtYhAAoJEGo6ELMcEJUXh6gP/iMdMoZjCkPSNsFL0QRANXjcc3HZ1TID/I4L -EJcH2LuPXic5awlS/5yt4z8SK0z0V4crk9t32FR6UAZHGWeNuJD6cwXluPxo1zUl -Nd07YjDMlZfxZ/zpUd6fmtgfp628q/BTFbm6l+iHiKxtGne32uQdT+KS5tiV83jM -oPrR5ueVDB474gIXZT14gQTusqbQYaYc6aF0vlkNYHbbK5yC2XWeOGWxRDb8rAcm -9Xgm+UwQM2zIgdbV/jwLpEVZMoAX+uEcpTQr2x4ZusKVTIC6pXOGQghuSTsK83nT -KybMIh/mlgpZ1u3oo90Uj6Mo7hJnZIl+JtYNpmPlUJzD057UiTQBMdcJAjmWPe9C -+i7R3WDPSWT42ylT+5sgDDPiBlWt0M2k2/WGrXuRaRVOTVsGZQnCba5Q14oEZbWN -0qziIU3vJX2zEzDy3osMInZ4FX1AD9LT5DorJrl3eMtqUq0kAK2hG6fWzq7Q/v9G -0clG/Wevt7lHnfmHtAM5yZts9UEA1TXzhBpTfTIUipFDXdHXm2nbboGiqF0wVyOi -1RI2mF9eOgJVBA8UEaMkx1sHtOr0DGGe38av5OW3auc1FNHl5lMn+dvFD1NSAj+u -XxI0oF1qgltXd8vNI9zOSicvXQcVOboLeaudhC8GUrhNFKw1BiMQPm0TmdAxZtBF -aEWn2y5liEYEEBECAAYFAktv81gACgkQuJKTHaNIZ++tXwCdFR1KRyaxlZ+5TygM -JNI0qlgyrYsAoMrMoudfYI55mTfg/GmkQSlz4z4JiQIcBBABAgAGBQJLcAEUAAoJ -EJ0g9lA+M4iIL74QAJJujzFhU9k5Mj7pNEMgdiI9Z3dRfFZttICcKiV7+zeVuIYT -osiqTYdz5BT/KU+d2imfOCt0MsftOXuRUpdrNmUsOQ2tD5RHnEom9JKoNf3jeXty -ao0/pMWMYLJnh3bRZ8d8cSJiC25surhy+cRL6+qkeI9n6x5EKbVBVxwYo9Q6ov7r -7uWEkZcW31pA8sbJcvgnYi9/luGxnCqTxZ3a7gOFg/tPZLdF1ENC8FetBpm79eh0 -h/1wU7sTb8vrXd4pRIULmy1ypDGDZP9U8mZ8gSDVPY6zwoKO9qcsWelJek+rH1rY -pryVHtrPxArjI58ubIwTYwgk8QfsbgKIgJ2TUf8BjjEnu0CStYcFoc9neKxD5fL0 -4KwbAlqiXD6G7h7oPdqSQAMfzg9D5vyJuE/WHRFtlBb4ZCHV9YuL2/HtDgfxNxE+ -NHbtghvZG6SgHIOxFh1jMkY2YEsDAXBg7Hxyf68PFqcSTraI67vtubynARLpaS2d -iJ6vba7Ihr7K8UUrNX+bDtKnPJJ3VqIxyX0TBArb7PQ8so2tnkuetC+3IyyYsAlT -dOMCrSgjBsm8LvYwIhN6LfS7C3AbSI3qrJxvablafxnNpMoZMotSE/iBEHzfHAIs -io3hM2zbttL12IVB3khYjYQWK1t2dSnxq+7iX/NjcMvNf4VclEmxfbrKp4Q9iEYE -EBECAAYFAktwIQ8ACgkQd5FD2Z8azpyBkQCgmY9QQcv8d5lAU+ML1WGiXnhojZcA -oIwT6LswV7DaYLpyMzStmdBOS3dyiQEcBBABAgAGBQJLcEb4AAoJEAjDulgCSX6x -Cr4IAIrLRW4I59cRtiBnBw6WaEX1Q1HXmO4lLiYnV4Iz5t5/c8kpGSqa3kTTIjwF -+BSm4SrhuxFA2bO6kPXHD/UUuTr8V2HA+tSq0UkUBJa/7nuE5sVBro2GUPXVipv7 -uHvMYuNPupxMZCk9sgZ37lftBHCkbwIJ9m3So/9ZV9MO7IEervVSyFhVXEG3UbZm -hyCS9ahYpVLQdIPhUECqwCeC9gnni4u/637ZEW00/nxhyWvViMOh0uJJxVo3A1Kg -oJ+v+BxJnPxQAubQzNCWLt3Tzt1sH5ilwsTlpeeBdopyQQddbwZZ2zIeEs/Tb1C4 -OUc8S/Xa3R6BKRXvGa3tXzO6IQ+IRgQQEQIABgUCS3BGAwAKCRCHYfAIFR4kiUzK -AJ9GI4JkPDaRdTjNrNvaDrfmgFXjbACgjwu3ijJ6IaflBLuSKJsGLpRRqZqJAhwE -EAECAAYFAktwTYkACgkQTB58ZUQMVDeeVw//dBatmT7pJYtB57aI8g86bGi6fPv0 -wdphrEqbSBz/5qPb1FBnVX1vgQ98UW7+EZYQjbQue79qVBo8yOShoVovuDrryQ9t -4brLjlpOXxaiwdDeVmicIOoGU1UmGBSc5F2VzIVV/oKf9IJGJXmnXjTX2jmSjuHo -Qrmtniu9M1BfaI3GN4WFm2htfSFh3mrPET4091hKlZWH8nl4XVWt5BKiOoBZ/EaC -Klr2HKnp3yaA4j+JM7TThwAgc3z5fFhDQCOQMg/rMULYe3D2fTa3zKZf137Cyqkd -b3GAiqZL8GhX0qm8uFuJq0VekY7g7OAOuNPeZTamutVw8hKtRr8Cb5bciaeCsYk3 -D/lXItsPCP9igAFgAsMVlWCS9SG+dwMXu6dFRGTzGt06WsdvQ3L0V9O1qKaVaPtZ -0AbsYl8V+U/G8RXh/l0apLMQ+yAL7vjZ9of0hRgErYlpipzJ1aZ6+/9Se0gL3gxk -5nfsmetvdfdATpmBdZF/Ekg1lhzT+vwwJajf6zDxGw6+qKeBCATu6jeXXoMHfZpU -Zf4Vw4dfzE7J1m3z32b6G3NMcCWKtaSD55raK4yKSBoVu0ZrQVpAKfe+RZuvJidx -jdAsZTZ3qnC7tSQLpM5efGYTquKYVOaSWjDSwJPM9b2PIlGNEdH8BY3wPodSgYEA -/UdKNfwW2L0Rj+qJAhwEEAECAAYFAktwYe8ACgkQSdB0YSG95Bb+dQ//UqRD0dhM -YkYFHGKMD7CWukDLRqJbpRlsuTgnzd7pMYCvdiC+yJlerq54riuuLaLpaYQqengs -Ykolg2ZeSf45ANUYchFUfHszG0vIk9iTxHjS3wh+COl5/SiJyUabia71gdX0jVOQ -/jK6qTEFr+Grv9B45Ad4nAFgy2kEUVEadDbq6NmHSJyY4qNr2ZBjAdmNASkAAIEI -rQPGHgooIdelDPUwgB7hB/indX1fDChPWDFHuCxl/BCDO28gPBw11iG08wj/7fQJ -MRyixsmIcH4ULtYkl3rm7yxLMnqfhvkySqGHdwmvQl/ZEdr7rxwSsbWb4pmZzCra -l60ePGEyxNptOSN2V9nQhsr0rQU8FuCZ4DCmgIrvr8PaRVWiQyivApxpTZG2tNaK -HU9ViLUic39SQ2e9/S2KOcjne+8TC8FV76REM6ra1AwbwwwMv/K5KiAGOBAKVEwb -Rtprr1ry9n/uD2SD/DWaRjkQJVOAqd5W6JvuUeWen6ZVfC3vsK/Sju7uu++SJM29 -xsS+gc/tkRP/R0RhBBNF9B03P1CkC2p7XHzfCrdlZfMEh97m99yO8OP65zWHkCQu -rfMY3WLKwe2EEhdcqzxu8rpaYKWJFdQF5jEuYwczaHbQTGJxraA7dhQiAGwmMrIN -/15iXI2P98Y+XrHn08G2G37gF0LN24GQpziIRgQQEQIABgUCS3Bs4gAKCRBkYluI -+pkzo2yGAJ90uUzMBlTh1u7QHYa1soRr1CINGQCfXSAKouAlG6H2kYsVe5zi4eec -vFWIRgQQEQIABgUCS3BsqQAKCRAwAo0kSBO1/lLVAJ9f5CvKx7Wwwy9XaFn961S2 -RmnrFACgjM2MzWqwojgsBgaXlrM/D0Np8WqJAhwEEAECAAYFAktwbnwACgkQqmz8 -LRT3mFzXdg//RpsMHT2PBIArXzxFuF7AAOJyO9+SjbtyZ66ZpsGLNRZFYps5Lxqj -0n8pboM4EOcXKBR8WoJ2iqix4viqYV/T74gBVbqZ2zZP3yuBG8v+PFeeQnHZCcSn -S4J8797xgSq+osQREandwtYFCfyDNLimy3rhaJXLBD8ri8PgOnJPn1RsFiSD2Rt8 -FA4NOmBTCi+XPBGJWBRezj2zN+8+l+pAMusk79w8o+8SfN9hxz+pZj8AzB+Rs0Tx -rhyoiRnPMgg3gtsfimApGafItvnaqUKBcmj50WzBRJAGZk4krj894n/KssBAbCFn -IDIfi0bVGl4Uw33VmKtkckHV8DNgxdT7KSBrzzcL95PZzLbv1Y02xDtH1dmIQGSx -QzR5bnr58dRb6uYCzRHplxGWdJjVVwUy7wzPh3vZmCSGnKdy3OCNhb8L3XSPbyiO -a1J9iEZEkxp9KfiD3BhAn8XIvEaysPBIFVvg9q7AxLHR3lDVIkcbEdEC0UeaY5zM -eI0/D3l6kd76ckU029AiLul2Jcxogi00MstzvZjyKUwVSRzugTppWW7yWnXKbhwz -Pb2s/gGDpM2dz1KY1GKNqoyt9Gz4a5S1s8AhtdqtYPQJmma7Ispxr0dlg+bFriUh -9xdPL16auJJoj8suqfHcq/51mZOp8IsVSht7CiHOKndTN+75u1+kITOIRgQQEQIA -BgUCS3BvbgAKCRAU9jENLe0Iy/UiAJ4o0y81/Ntt3LM4qtL4LWmHsMY0bACgxD4o -87N2Kb3++NNV642Qyj71wHGJAhwEEwECAAYFAktwca0ACgkQqchsjdOujTp8GhAA -1y52qZbrVz8iMUqr6jVCGnD0I8k2086fPbSwNwKPZ1fud2mqUtkKQ/OxkkD1R9mm -ruzpURw8sNCRS66A4oOjy46vv7DI6wI7IvLD7dWQV1yVYIsPmGBnJfxRL7WQf29j -FHU8sV7JWKRJOL2pxyl61S1F4X07XGke3vY2aLqA6savzROHBr4atT1+Dxv+NJpS -NUfMXoJyQCJMx6Wce02guTKbAl4xRvwmRe/wA9UETGV2TaM+WXO288JqUfy9a+LW -dHYXywH6FRkFz1V3trzdNXqe/CYw+Buo9n49nzPJKbxz/Tpxtb9aC4F31NJh/tMS -dsDy2Ag3tBb4MdX9yuniRDgU4HWAg6Uv6kSLe4Gwo8cMBJsJ3r+0/BHQei3nYsqW -PzQFVpkWDGBmSGoSsQkstu4Fp9hPx6jjIH5mmyKJVDX8nR/tcJkh1y5GkE2NKaUc -51y4JpbYVdGxVyFA0hbd6Hp8vUjbqGIcOxtEGsoimxr9dbx2omWLAamumOjw2aT7 -h8h6YB64xcRfw5oR6wOn+NBSKePXdgNwNZeAUhFV9dyPNIs41afzfxJ6/RGEoRHn -5IWN5/TF8eWNbs/7cHrNZoE62uG9GAI4xxv0jq68p3rKMXH4CqgmHegZe+UTOlJp -MioCEvlWW0u10adGWDlYL+q8VVNnlSC6hHdirtIdhNCIRgQTEQIABgUCS3B+igAK -CRA7v893vYsFDQkmAJ9HDKELVZUkKQoj7KREBnMSYSP3pACfZXEkDA4C8+3nyEWC -XqmwUNZ5F+SIVgQTEQsABgUCS3B+jwAKCRDmrC0itmgwQEUfAN40/DT9hsYfIL5T -b8GqJmZ6aF0iH4JB+3Rtdg2kAN9psenZSfXU6nuT0XK4YmvvI9nOPcz/+ZR1V61I -iEYEEBECAAYFAktwhegACgkQAxLow12M2nvnMQCbB79C8TNkvolxOzKceXpD3oGZ -3okAoKj7izIVEuvnj8dE1Y2VQGT5n/usiGAEExECACAFAktwjlwVGmh0dHA6Ly93 -d3cuYmxhYXAub3JnAwUBeAAKCRBy1N/41MPxl4AvAKCIBcC6yY2HHfKE8mVxYBRG -f/GFWQCePeSBfcaZRteqnpa8047tpAJz+wKJARwEEAECAAYFAktwiFQACgkQmwvi -TVTM1b/5gAf5AQFRpWiKuaSsbWtC7Er3MwG3VispqasveT2ADuOJr19Kp6EfuRdi -3Ql3fGx/hfZmBtnM7a4hBBLIhPGOQTD1u080sa6eRt+bLuNRlEuyd2/mSovTGKT9 -We0/AmGwqvqq7RauFa+bnQ42P1O+u3iNA/vtpV2SNU3lK3NTPywAPFj+APgDDqW3 -cY1YtvCvlS83GjFjpzSegNEaSdK0v9VRtmaOMFm7g7lSOkPCg6PBgy2PAIHsINcj -lUZNh+txIb9BZyTgSvtDvcKSLeaWpkCldWr7WpecxTH8laJeV/rF1U7i3W7QeOh9 -Lpwm23r7voVHwhTF0OZ46wiXI0M3R/XBookBHAQQAQIABgUCS3CLZgAKCRACf+VZ -3zOxutNtB/9TZPim9Xc6/KgHlvAb72P+rtIWA6nvYdp8vXnAvhVT3Mn+G5Y4er+n -r+ILlfeLbddb1RD5RjqNG+flYR2pgBepYXvop/9xaG/t2ulfygvNgIJpsEktw5Aw -Yutdl+U0A6u9BmWOOfreXG0rcDNAaCskHjdTJvhSHoL/QcrWRe5QQdxp0lwpvyT1 -if0M4oBMqky/eUWeQhwaOrY3m3CfrkzHOAAfu/xKFEdb1h8yWC1O0ei6TOFV33jC -eELVVhJg7/nN7CdaebvpGNUxKpM6S6cT35ffaMAarkcho8/yKMGWlic24LMlpQpN -Rn9pyYPtH6kpJE58ecbbUsNf3Qp6ev3MiQEcBBABAgAGBQJLcIt/AAoJENwB9eiy -jP8NJboH/0NjRhqdukmK52RBC/MorWGW75k5t50scl5AplNEvWdHpJZh3WZZRSVd -vDv9ERRCKOvG7r8Wz0LSj+cF7YcZfDsp1joei9R7D+L2f8nl6doQAmZ4erhCHp6m -kIput+H1meY0Qs5GiwZYtX8/dZ/HKuAz50Chfk6cu5S9DkbWlZQjmcHsDaqQq22I -vFHamKD6uY0XElZrdqbhSPBCq5MV+942vFbQcKCQKrfbKeOpfONlUPw0FKyir7zY -u2aehFi1Efvi8WULBcX3RHydoArsbFyPFMehdOoC7ykIgW7CTqEj8x8Indsnt8K/ -WmTz4rpveNxt5nSIDYf6q+PNfx7KpyKJAhwEEAECAAYFAktwkwgACgkQfpcqy/4K -evOxDg//Vi4E6o9wq+9y9sx7184iaHGJfC8uplqDY1v6n/khkpwkEQnBR98UdcE2 -FWu4VE3kx4nkNThHwp6q/5YcnEirs+Jt8k2KpB+/xENCPJ3OBqgmItpfGmWa301T -xteXFaj4ab4mk+gjREt9P5JYCvMzhjRwYMfnb0G1oU7MarYGT596bo6iKKK8UqfJ -ko9Evxj8wPMArSPLzTkEqUGp1dETPc5Hey9mRPWDRXesz0rGzB/WBdPR7UNMUa05 -i+LlPr+OQRNhwtlnaHlKlKyl9fUnU80mf7HV/qnTmv+QOKSlVLXvbzhE54DV87dq -xVUieAVQzzRRyEFRU5Mq6vIBVZKoSJd5IUQa5Xlzrs09TscFaZdR+mldPSmE4shH -535vtSXpCawQHcy9e+LIQZGmtsQ1TMMLf8P31vvwN6wNTNuGmv1D1DwL+HlaUKJo -yj88zn9m7lFzTfk4KZTlQ113eiR1NHZ9CKNcbUm2m0v2xfTd7lieQfdBiZySn5pe -SvUq/2BN2zHisLBoc/5eI8EdsdTUv/v8znntOa7JEyKv7vTPBb6FlRUd3wiaM39D -tGuTfJmxHfaphoNRncdJU3TmLw6TpKM3iXewrhY1NAyBtiDNu5aiHFYA1JF0QT3F -KmtzMjrtA0c17o9zYjsMtOhAvt9uQJ6tc2JI5nDsoiy+zbjJAQyJAhwEEAECAAYF -Aktwn9gACgkQY8Q1BjeyOHLCBQ/8C9CUYj0R6U5Y2wcCq1BEYCHjiQXAGbUUcshF -eqNvy5nS1s5z907VIoSVBQAY6NqugcYZg7UKAPYM5RhVagXb3S8rZ68RCmqu9S8p -XvR63IqeYuktxEMpNZg8ZVBnn54nJwCyM2JSvKvBr86/709IUREXaw6PIBeU7MSJ -fNoxSAvLqIQJEIx7Sh5aSj2OrFi30JAvjCqiQFwQb8NPO1kIpcGpsDf+FzX0758/ -sP5Ioqs/LsNAK5ClCM5rw2eby5LZPSSZF9o0pZi5+rxaP8SiTUGjqBZocy220uYg -HZa5MVn/FvMTirdPdXoCbOUnmv+kLexuo7jptELGkWQCqfCcNTiAmNmDOLCoiZlI -HGyYrYJytRY+ALD+NLNbjymHTa/GodyTj+WItXxYH7zuMryZF57XkKUh/rNFGePo -sBmjQu/ySM5ivfqSXio0u3p6/0Q+zS8FHzRUfCh7UMKb/gVFIJY3KKhSENwhAj3c -nHCQLdplBRglDv3cgsaxm+uICoFZS1jCmEaISacfDKO/bcjfnBOiWR0B2Ex0jcUq -n7LQh1DPGyjo2kQzzFuPsM5s+T1gmO8KMC5dBhenMEpZkrGEnvDvxKhTzYBvJ9E3 -OgbfMe+hoCrWB/6SCnE+Jxl0b28qcgXLJ0Rq+XlsGnG1856KVrxKWym4jErpvCvV -6a5y6nCIRgQQEQIABgUCS3CbYAAKCRD7E+LdXKjpJzVMAJ9LIu3DLQcRenhQMWGT -JW9Ug9IrlgCfdVy0EZQqYMOwJajm2OWh6R8CxvaIRgQQEQIABgUCS3FKIgAKCRAz -JV/onng+BYF+AJ4sTqZ0IDgHMiANUCIKcEYpGsV9TwCeOpiPNZpCKr7mWTYAQPkm -pOEek8yJAhwEEAECAAYFAktwTVQACgkQ9CHGg14t43TtjA/+K15228gECSOIwP88 -Ggw4Dotvqgz4Al1GXnws1S+dViDgc2lx/R1ejr47/Anwa5l+Guea4ATQfbqb6cKk -3uxGbDkuq3/mFLZ/ZlvXqCOvZ7nFf9TQCfGzfVh9TXWRjTA+vWysmHi9/pUy7/Hc -3slrAkUJ0i/BNIxSfqYlGlg/W/LWJ+aptYuWi81mqIsvC9Eq6jc4NXWSWR2ZR4yb -5kb/mh6FS01X0Dq39eb5/NPsFYcOdWlPIH/8q8bA+cMa3ZxqsFjfj8Tt01i5tMEc -eo+cJiM5nhkEbWkZp8qI5T00t1twhTk/kfP3uwf2h/bx7ZonUcr3oxKAqytwPDqM -S/UBQzo1CRz1UabZOG//+eluznOi6FQJSnLF/yTRvBQUqQSB5AH5wpxopAUZH5qK -zKiV4hcsUCkdQLHD/OYdDkOU4LkMHKnbpdjxVCHp0D5hhhc2tRqTDCbCaPg4brc9 -sicEiPHXZD0VFMX40iwBe0foceiYdwaSSVy3csP09pYFWBJaej8y7kIlyYSMHgXu -p9RvoLKuIeBQTpVQP4TYQKxn3wTOnr8yM+Ok0tOIkpRC55W4Y/NOlMEye6UTnRs8 -yuniJQu7E/KxKLeThvrV8Vcxm1MR4TKNDfhdwLtM8u+FMQum+aSoR8D+DJlB/Ry3 -bGGp8rnfkc6B7h2RSGrx5jkbDuqIRgQQEQIABgUCS3FICAAKCRCEGeDbaL2jQm9u -AJ45f9KyNjzJlpZcQ9awYotQa5oOHACdGaJiUe8BQ5B5LZhS1H3tP6XIJ/uIRgQQ -EQIABgUCS3FIHwAKCRB+gRSgdcsa0v+4AKDL1WCzznXD5rbov5J1FtsYrN67EACd -FEAWTPkziwzqkTKUJcAhBom341uJAhwEEAEIAAYFAktxZUoACgkQq64ROhZokcd4 -wBAAkNOf8JAouqLvOA0IZTaLwPMPWJuwjajszwU6tIgXrVvQJdP8uQdozuDpzUwk -bWN0ahYwUkSYuS+hZ3PWxOmJ5JsgtYa0fwmWHbUkdEYNWiVfvwS7ftuOAtI5IIvI -r2fOz0nWQD6d4z6PmaxZ39xqZx2MpXpqg9tIFDDNNWDUCEFsKDq5bpfJ1XSXib0F -TQ+lGS4xzVAAoVZqqNdLm+l6+TCmVYoh7pMG9GIOfJlhj9pZuNafA87g1Z7ETn89 -0npYsNsMv3fQW+0G1XImfGsFzZiP5icBJeSnlLjNWmxuPEDB7Cx8yDK0dNbmqjXQ -Yo8Tal77a45db5FfXSnMMpI+ki6DEarb0Vn2z1UNk67qX/dUWzTxL9AKi+V9Yoo6 -xtuij5PyILh6bToHopJEELY2YDEdlE/EVhwccH/3FaSaSqcd9rYW5zAw2LwM3Pxi -om4LcYDHvD8VPISS9ndetl8zcZoRFXFTCCl0xdYatLVaco2XLwURk657qBvmVYdZ -pMpUmUF1IJYk5XpCtU9gOWrf27JVD96tXoX4NsuNYu800AGJibeHwM7lAa7MKzEU -IECp/jbEsZgOOfMwQiBG4mReECs008iGJs3deezBHLq66GygbIETnFNpRqYxwNiV -PRLLxJ+M9++YIib8lnynz5HR1PyofOmJ9H0xVb1qSdOcBZyIRgQSEQIABgUCS3GI -lgAKCRCO+R71kVI8PfsJAJ9mTh0BiKnECtF/sIFq8+nUrthfFACeJAyDPVD+MPvm -wSww28SJPorUIj+IRgQQEQIABgUCS3Ft+AAKCRBQSUvt4ml8RLW0AKCKiigMFG1b -W1+sn9MFbGa/gv324gCeI+zZdyCtPKUXo1MiTcKnjp7e4BqJAhwEEAECAAYFAktx -jRAACgkQ0AOFL71SUp6EMA//fx92CsLHxbayiT489XnjpGB8RFI7yHmb5ctBRgA4 -RGff/ULwojVCxyfvEdMuvW1BVjzj0++8C0UEtUSBhhybjB9Ir4Sk+USyogF0uOWq -oDcocZ36FljfzNBFOmN8kVPAIjEQVYDmwIxNwQDX4QoOkrZCgsASqdzuzdOnq6o4 -SF6EVqF85q4TPFNKNKpA0qBA7/e5/dguDLq5WSeNJA8Xd9cwb3FPZi6MPsCwaugn -dECJrPAns6X3dAa12HvRDw4x5dGFJTxq4k3F4sm2iNnWb1WvFArNIR/j+zODI67x -ZtoYu35g5pWndEaVTVv3Ve9BRV/xDjgHAtAPqkC/DU4fYVexXI/N3jmlfQKIzSV0 -lJCa22GIJ+z8I5ZKk33EO2J41qx+H0OKG9+dTwPQq6xkXdpdxcAEJ8WL5nzSXnHB -Vk5oqj4+FIC3QoHYHtIi+gSaCO2MEtxV+lezkPckHaaJY4ZoC6ecC35qfaXpwyC6 -vaOe+avZVf6Zhtbxy4vsOpFxr+yCecXa/Nwpc2OJJMU1cM++Yn+2vJyLfdrsayoB -DUgHVG5uu9xbHAf3U59PzB/EUbBHZFHahBer007AzhtFwhGbMfCWEtlq2MOqKHbN -WR4HU5gBZ0oewrSQFchUjr1Byf3lEh1qEy2yyb1AiRlqw9tQ1o9H9cGCHtSZ9Rv2 -f46JARwEEAECAAYFAktxqT4ACgkQMXy75kMEJnlo9QgAwfVnmaYZL216tuaXl0EI -Rfk0N8ln+XA1bjQ7QkqZPymZPNzDN8sgRcI3R5ydD1cVTKWzLKNDJP6kD+GsziDd -TvFJBjNSr/pK8Gaz/b+J0JEvnbmIKP69iIAEeDfj2Ygo92RZmqVSz6Wu/oB/YCTx -7sTEMU1gJGDSUwJuVKX+QQxxkajeH0C6hdcgk1EA9v171BU2wPb9t4cOa1isQT1t -6tuNpSNJgxvPZPnAR93ks95TPwopFRKRSmKq/rtCDexV+o+kq7lYsFdY/WD5sPy9 -i3gARnVbI0+5xDSFMRXgxZ5tgoaK4RHmC+hHsonPgjfFQ2BzKWyOa238IEQjTgWi -cYhGBBARAgAGBQJLcbg2AAoJEExd2Vn7CHi7eTkAnjTFygl9AUx7zlUhhGDGV1O5 -fhfkAJ46UUidf8T+22ddPXDqcx1uMY6PUIhGBBARAgAGBQJLcdP7AAoJEANNWsug -fX1fLkEAn1Erq73XLKdZU388GIO8oonU0XmEAJ9IZRyseyioOHtc78cwNolIkIgm -84hGBBARAgAGBQJLcdWRAAoJEC8a0HMpPAX9KmMAn0FefAJyaBtMickRn43F6xV3 -XoweAJ9pyogaJ9zjUg1q0GyG6KdEIDoCWYhGBBARAgAGBQJLcepbAAoJEAOz4dZY -2jgdAkYAoJdtvw5sVb6VviUIreHhClUsiIoaAKCPrn5ltJyfIPhdnVFYcBqcq7+v -wIicBBABAgAGBQJLcfruAAoJEDGmPZbsFAuBuS0D/0HimJPpThw0EFTf5oqZFBVr -T8+advgEaSKyjT3Q2cpy2h6jGRw9ghDegnQ4BBAqOzH1llBJpOBH8iZ9iZwGinR9 -vGWfwBFdFwaG2djjNnkry3KIJvZ5tZdNVystH7ec3jZLEZcV7Lya46T/dY/nPTsS -iHJKgIj1vxj7+FCMzGJmiEYEEBECAAYFAktx+vYACgkQ/W+IxiHQpxvSyACcDQzX -6dFyXNCchPMLBzaHa/iIQrwAoOT7Wd7a5womKp1ceB07cVni1GXniEYEEBECAAYF -AktyIooACgkQJLdEcgHXKsFx8QCePdbYJSo3ZpM+57SEZrWqr2xFIrEAn30lR1Bd -iZvRL1tI5JkAziEw15CwiQIcBBABAgAGBQJLcSlsAAoJEJSEK8huURwx0tQP/3A1 -h4UG40HuWnz6IE+IbTUNCP22SkXZWuyINGD4uskKiBiYrDUzzzpbVW5lDMpxQpG/ -1+/DVXMPiyYbuMruNbx49ODBaTqpv83v/H1fRiHcUxRIj8GyR1XFX/+ze0Z9Z2VQ -cHKVYc2lqTHW5Mpy+XGcDYRkB4erEA6nKFMZ8rVJBRD65cMq4/2cAzidtD0JDx7b -lb0Yxr3QpfHozkT1sF/K0M9xxaOJotVSfu/9ISjrwwl8vsgJUabGTmunHeHTg40D -YnjG3H0kePjEzs/Q5HXg7U/qhv4Vy7FMVNxoJYPq1EO5aFeg1eHYuRc/j70agrg+ -1x0iF6pjnIlSU42bOhUxeEYZg6aBWcergjm56p0GJo4UMgMPElXNfykDmWiuo2KF -7pDBCn68Dji8LkaNpr4R7AM8JqeIUofzJfF4Eks0LfvCHLBOuEIGRbj3ajAr5/0e -kgWtnBrypSqFaew5gEUxsLbCdBMuheTHk519bSkRLprQUnkaAZ1Hcccq7X/dlQEf -kgRhA+TxX/gJruud4idROuDjCk8BNjQgUlxBNODUIsoBrO+feurg8VeiNklAOj+u -zCmYTP12S//loI0Eh4NNHXTMmTCurZ2KEXxIKaGAkqweBr9KxoWtftidRuxERMZ6 -nf7FRh/eITKSP01pTtKMT2M3Mjp6LRA6Cnh0cWF2iEYEEBECAAYFAktvxBIACgkQ -7oGSpuRD1th/TACfS8DYlk94QLGriUN2DKB/5ctpYDgAn15+i4vWQ+VyQjytZV8I -SUw2OMrriQEcBBABAgAGBQJLcrbIAAoJEDIkYaGJmAybB0MIAMFztSNDPpUFNUMO -+aR0ycz2l9/AsGC69WnFik+SxLHocU/LYCb3Ki3IS+RIw+0fnKKtaZNpb519CPwr -TyLwJ0AIMldAEcrqsuOcmF/7LXL+hms8mkPcwBXXGlk37st9N7xOcdJ+mKuWxuJ+ -WBxk70xPqSjN1aTnzH5OlGjN7nsA1IB3mkiI5VsZIq+nHPqNJ8hskDdykSpyCkAO -TyE0g0KwJnIx0M85kpL1eqVfnMhZgQKIQULsqokr6xFcp8tMSAVambHRe/8cBHd6 -DIAnR25HPZzQWP+W8Z1gA7+qtBICje55KT7Lex0YUJ74d+9zm7yi8M7ydk0qY92j -vOdtWPqJAhwEEgECAAYFAkt0BvYACgkQ9DDBRcZB84yuzQ//XJByqrJ8jdeMLTdU -0ixXJiiAa593oxZORAjQGk6JRmSZe6yW65I3MwPZ82VsBanfoVHpv3kL75z0WPWr -w2Avu7bvsZ6KDJsYNYh9EBHplkrNoI4u+pMKVBvLyRvaCY0CobnzWQpeHNIJzu/Y -74Lk9Y9zbbVUnvEqmEDjCx4hWhPGUrQOqNE5XrjU0HnsTJK77Vq/ygl8REmJnII/ -uTWyVNCcBp2v+PWDMpEqQ3nwJ5BNqp+5wXFkjYbKd8FQIuSkdz+sHMhZ1AfG32mf -r89P2yqhbRaGU8Y+rPKz3e3wmoh2Jx4PbptIRUU+hmY64Z359GaAApLUax7b84uX -N8Rck1i5VSBRvPkkNAwyO/1pY7icw9UJ3U9mzShMVTmtkzqI8EL2zIvwm90OZ/Bn -gwtLez6JW2H3zXNfEjrYhu4AaomoFNv5IKcnOX8p+UQH9Qz+SrA/Tmoov0/oUwaW -J/sDqNQhM0q0Ph19UhHJKJqhszJy9xEW6v3JfybfH/ggrVOsqJb4kpPZ/SmKYLZO -HFoqS7ATaCP0Tm8xp3usPuC8nv3ClZ4102PNM+cAl8drX/YQiBurqzdSXorxFbPk -kbKOTbuEql4jliPblCpaP+ab6o4swuyU8K8roxY/o1XRDbuwxQVHAKMkdCpezJVC -lFXBf5AJzrj1Io4qXPjAOJ7am3+IRgQQEQIABgUCS3QNAgAKCRBpwjG5mqVqbdan -AKCHFU0S7YJJVfzXVukj0gCh2UcRfwCeJSwVONDVA87mjK9zYO2AFX1zVauJAhwE -EAECAAYFAkt0DQoACgkQuOUId2ZHWq9tfxAAjAjRt21vbzX/JKcUoCfEQqqPzgw9 -vYjW10TYSgU01pWgNFLQqXBCrPsjzHVqCmEdLGkHRlBNaFdrr7mHThf25qEnHwaS -ypCptevILLk3hoXqLv1prykUSDY6K4RaR1MozVU0bUnkTRb/WU2wrTYfwWOqZdsS -oyejW7fpBKD5qEtzvp5u6Qe2xQZXyViT9za6AsJ2wnqq9jPO4zXidGZPEPwz6dEc -Kygh+Bi9OMkdkL+yg4STn/4llm9pfqrobjhxk4APNGasPVo9+1U2zP6ISxWAIMzs -7PW+a1oCtS0gI0VPG8iBDm+NZ5mypFWEViw0ddfDzCY6a6iXv0KgLbPFQvZ5p2ho -dKTfZ8inVw7JSS8l4kCR5jR8Md80BfEik59Zuv6UqucokJNbfiQO+hoITHg7lnKk -+4ReDdAAP3mBnSp393NMOZPv+6qkQ9rM9lvM5Ck0sO0NCNltPU0X86e6xDH/MJow -dU8oSgMrYNe+54V85IvtbLLbioB2c1GLK6DjJFmhZf5+sLoIpgYniurdd8EaOIbq -19k7++rCo0vVQSfMBhKJc6CsnUR9r4yk32UMdIwcm3yzj/c2fMH1vr+J4r3fqIsO -cwTYzb7gu/XNXqg+kHzvEGjprM2ZxZDG1rCsaFoADgUsN8NpD0KczgVi71f1i/xA -IjJz2lgvsaHyiMWIdAQSEQIANAUCS3Qd4C0aaHR0cDovL3d3dy5hMnguY2gvZGUv -a29udGFrdC9wZ3AtcG9saWN5Lmh0bWwACgkQcW1EEz2MIi0anACfbMd0oJw6tkSV -IedaV324LbqlKz4AoIex8krakBbli5j/PlBepsUDPJ8QiHQEEhECADQFAkt0HfYt -Gmh0dHA6Ly93d3cuYTJ4LmNoL2RlL2tvbnRha3QvcGdwLXBvbGljeS5odG1sAAoJ -EFbVKT7JegZUH80AoJwVQLM2fIMz1jMtS2Qi8yBEGQ/HAJ9ComvwPDO0brt8q99h -njWca+WvFIhGBBARAgAGBQJLb+2bAAoJEDUKrXwrhZ3jxRQAn0jog4il4EN//Uv8 -EjfqESds515CAJwLvIYM5+IZK3tJW+sRwuE3PpGpHohGBBARAgAGBQJLcsijAAoJ -EHMcr9NTwaMvlOoAn1BV2b/j0vN3u62NgbtENqt5ILxBAJ0bKuqzQRw6feYyouml -LHLxe8C8eYhGBBARAgAGBQJLcyPaAAoJEGjzWPbBOWR8w2EAoK31RBXphsMOuZDo -K0mPYC8SUHHDAKCDZJ/oph+JMfMW0xX7ydEgqqO7MIhGBBMRAgAGBQJLcxDpAAoJ -EC+VFQiq5gIu5ZEAoI/lh2oiTtXUzYYKtuiE3I5I3eszAKDBNzICS/0VzWHjhQXI -5z/bAydpRYhrBBARAgArBQJLdK4NBYMB4oUAHhpodHRwOi8vd3d3LmNhY2VydC5v -cmcvY3BzLnBocAAKCRDSuw0BZdD9WFG9AJ4wFu1vsMxtMP6d+irnxUprYHYIkACf -T4vKoghYTfmdw71UaUev2kQUTqeJARwEEAECAAYFAkty/J0ACgkQGoKtV7tZJEOv -xgf/SN9SCPLhi5I+bt8+KWmzT+YkrXH55OpbkxoMwVmegfTvTI+nis3ItqKvLz5/ -AT0Yw1sD/MIOAj/YdzPtALjC5HetlB4zc7AFA3gDKwn18FN+Q6lbrGrYkIyz618s -5TFwB9vXnJfJmZhaJB+INiiS5nWA5P6MQFB8Jq0z3W7Jp2/YPkxvmdUreGjflWV3 -YkKavGsrnsk+PEvcUVpTIR9bPamPdCqOhQKmpLd4vHHVVsXcA4JqILui5bmWbl9N -rg9yGwwygdXEs7ifH/8Qn2l7B6h7WnRZtlDV32bH0xuVtP8d+eaGi2F0B52PKfpa -AZcIOrPfVUZJFV9zNBgNDCrUxYkCHAQTAQIABgUCS3MQ7wAKCRCsMIeaq1WzEgIT -EACIZY4QGk65sMMdr556R0u/FHCJerFEDRbYlKDJGtXl75PJ2WgsjJYhc+1leitt -kQfYv2+ZHwmZP9kBnL6ovVR9EdY41Y2tLR4nsD4rA24jlni69QXjeqa/BhmeD5O2 -/2Frd3wu4s+OuAwa5Q7bBHnwSdXh9Q1xQWzqGWxtej8jhTZJflw171yDhnzJd8fn -0MgEy564U+Z8R6wf+9F0tRR0dh6oJujlyzBwO4hCtJNuKCNjkIgDUyMr+UlazicM -ZraLY5nDvASkAW6h64ywaqIc9q07pyDum5KsweqGjxi7UFzur01oyD/RRbtl/9A6 -Nmp8qL1hQuAasBqOrPw1pnlopC/oeX8BAXXVZLMuJun5tiDFngwcbMwEu3JsIW2R -yCGxf/WPletOqjlOfwsvaV+XT3naXAiF5X2xZHQcseR2xfLAUJoU9FVpL/qF6CJG -mR4CiQJtciRXzVV8rhBNhLTowlIQ4huKtLQc4zWg157Vs86/QMIprvxLkC5V5BEY -ZMSUTwzVmH3yCN2KgC/a2vUqxQxZ6Ys0Wn8eJ8d/Aec5xVPlojeTHIutZY1JtXkM -3oUk+xnsuhwhxGbhGgmetTI3ZG3IMIn5o2RK23qBQfOS8JpIsZ8QCbfBbqhG52In -veXmPGobHLcFC7KML8Lu2hTM3DA6OPyeFF1WoOeiK0DRE4kCHAQQAQIABgUCS3Q7 -jgAKCRAzlhWI4cIYRcqwD/9jinZIxEke2IYMig8cLQXw0xkunArVlLQal/j9BCUM -MEA9LlHGvAGpvKiy2vEKR8AzqAOx10SYQE5FjF0tGcO77W9GJNaFf24c4r+PjjAs -KKbH8BWB8b1W0Vd0xMtY2sUxY8ityrXHD0H0Q7xdYEqO8isl5DebY34uzilp3ktg -dP+ISy3Js4MobNSWV7YT4nCFFH+b2Lm+sHOpLw2NcJRv7e+kLcDD8MjodbModxDk -TcVcMu6F8xmwELy3PfQoQAeSJ8StNRAoctSnYnE6Ak8y7+eDomtCRuKBJH2JE3uX -l7RfY+xr8OElTXXJ7bo1i1jh4R1XmNIaEQSFLHVOIYsNWlbfLW4r2gdtCZa8C7Y1 -ZS7dfBKJrGCVlFB68cvvo6WGAKn5NS1F/EQPe3ldPCVwlAzDcFKhtkypqrb5oDc0 -JivMJe7YjlpIVoM4nPcuSnA8pJbCZTXGXhtIJctjlswTN9Q8Xt3l2OarRq2CoOmJ -TQVjElTk5fkxap1x6VfiVVqzCy6OI3PU60leC4v9Hyz3LLfG95M2slFD5KzEq93P -m11uo8aQCh75xGy4yKl2MRB5eDMVn4+f3vtA6mfWhmbLNRdnKUhSCCrcGrdgBEUB -HNHCb2mSLAann2jU+DI3tY/fn3pap3ojXm/x0zdWG5jnfphidDOcyKAEAzOc9md4 -7ohGBBARAgAGBQJLdD36AAoJEOUxFeW4oZxpvloAnjyhJidWM2b57kl/4PcOjLns -ROPaAJ4r/1/2XrJ7F2rkNPMPK9zKT4VAKohGBBARAgAGBQJLdEJ1AAoJEBsbLvY0 -FfZ2cYMAniykfNZIDf4LvxFpm3Fx/3Py6/UmAJ4lvZO9yBVsaGXmendbxtlo2lZs -9YkCGwQQAQIABgUCS3R6ZAAKCRBMwgDWgEsyTYYcD/YyN6bxrX0vOT3w5rzzudvu -pImCat8+oVbENXRo5gNtE3UosAzjUgPZdMAmR1nmnPRLXxMWzHFKKrUM0+t20HAn -pGA2X35oceKVTRgV3UqIVPRp/Tjcgr20tiV+wd31Q346/CxY6be0TnJhfyOZT0pQ -ARX0ev/oILoIQF++/YmHXAyN/Kz3sP1+NQ9VcTYirmhcF5v+TqYr2ZP2a+fZFxaq -JlyNhxCpNjLRWY8MePsAYkA7fc2ag56gndxRMV8RvCT9Qvk/uVdFbnCXl7G+oyCG -5D4ulhHJ6NDOAaTSoK+ca4249g1fBcS4oq06AHVMcidFX/yapuNpUT4JRW6jvXi0 -SpCuREcLqzB5LswYxWnb/+R/b0sZQ1hT2CCB5TZFCXorRf8NKBWWxpgBxi26N3/g -J2zMxAoRe83f4hcikhVyRBz8ejcgJ7ZN43lnFIDLacjvlgchlQBH+ORqS9j2riWh -dzHjXVIkQ1lVQeGkXhVEVKPd1X4ASm8Wbf0UhvCh1LaiBKAADKx/duNeCzZF8tvp -RQVZ8jnpfbtwDD7Y27X1WeX0M42qu7jOiRFNLowQTi+JWY1vUTJe37d1uzzANDfZ -5Iqc6+nYpyVpsTnrHfsVsv7T4vubUHEA+U2UnrF510qxh0mS7xoUTgzTJ+RnfRuJ -rpJG4q8PkLnLEBfyXqcliQIcBBABAgAGBQJLdYQQAAoJENNzD7MkeDIgzK8P/ibT -KJ8GvKfBAq7iPEZFTe0Bhpfs/YING5X8HR0+tF05ZfBR8hAASOZsdsSAwk8tG7rw -U3FLCtvCIzSaSO8dYl4Qi9gt5iafN3PHXNCN9Cy7rwMp/cxAd2aOv+aScC7zZ3WV -YRT1NMukS7g3Ov8naGdOUSna24ECSmXt+Gr0qJLfhilI5/576PT6GjGHZTNrgAEO -JWe5cgnY0Xp6UWeORqgJyGsKNlg1Z0d1ahbVaHbJq205rd12xnOclefIkd6/5Yiz -bI6b2HKlWkEndxVlkaYMbYKlQbIqK/pYtYeEAISfa8ZwWuePem4oMZOV7CPXLC0L -ADn/sVNTyz98b7x4CRtz9mYg50APNE4p/mzw5HhPRz291OMh/nkkzIHtolRZ6wGp -Ki6VNz7BSSkzQr7TfMyOg3O4HAoUIvZ58cGRTdAdXijvcnhGxVESDFR4GN955JX7 -8mzd0F7GxCxDBO2vH277a0F4jyDPjroueJVf+vHaoWYYMwa74Ue69r2XmJ7gEP0F -QmQ4nQbs21UaY4Eu8sHmM31c3U/WsiELAgbOoIJk6Mvvny8f994DuArEfUNl7/ib -kUMxHxHhmzqsayIKpa1JfJv/kR1hV3xEHyTUpes2kRSK9IXNuyr2WQXjIWUds26j -vTIKn6zmVt8E8NFeqINWCSD66GgkofAH8YP0+raGiEYEEBECAAYFAkt6egcACgkQ -8cBcumlruBlnjACgxq0Wgaou6D2RVBKo689uROssypoAn2FM0pQBu3IdCsKE1vKr -PrXFxoQxiEYEEBECAAYFAkt6VMoACgkQsnuUTjSIToVYfACfYzpoDYsi0JL/WQkX -Q6NeHFBDsKMAoIoNjhq32KZ0xklGa+uKk4I83ziCiHAEExEIADAFAkt79cMpGmh0 -dHA6Ly93d3cuc2MtZGVscGhpbi1lc2Nod2VpbGVyLmRlL3BncC8ACgkQtHXiB7q1 -ginc/QCgvAeBUK+wZwqLLgl6i2YojiGyOHwAn0eNgRH1WzdHtIAUmRiS8rSBtMzG -iHAEExEIADAFAkt79c0pGmh0dHA6Ly93d3cuc2MtZGVscGhpbi1lc2Nod2VpbGVy -LmRlL3BncC8ACgkQlI/WoOEPUC5WLwCgzXXwUIOfZMAWIXA7foZI3aKNw3MAoMDl -azjpDRD/BwdX+8Jw6jj3JOjWiEYEEBECAAYFAkt221QACgkQWIK+Pe9twhrrZQCf -TKu6MSNZgzt6U95gBFOXtmE1fpMAoLd+expSOTwGGy732YCJmskA9lC1iEYEEBEC -AAYFAkt4NWoACgkQVzc9bUjjZsxG6wCfRSe3OlwZsMmQnqm5g6jPmTn/kFkAoI/i -4HI1KwnihQtGAcIDFxhC4T3CiEYEEBECAAYFAkt4NXoACgkQKOf8YmEjJI8GZQCd -FwTtAy33cL50ZhK+WERb1oGizr4AnitgzdiN3LOjPfjTViS48cd2M0FLiEYEEBEC -AAYFAkt4SbQACgkQ4to+B4gbPC1DKACgq83Jeam5ZxVAHw5LWBUCJjOs+PcAnjsR -A7/DKnaey5UTEMx/OkUT4mnHiEYEEBECAAYFAkt4Y4IACgkQaliC34RARgLn5gCe -JjQ8OLOouOyvPx/zxird9vJaAYEAn0WjKxtJdqbxUb3IRp6hZsNpdVgBiQIcBBMB -CgAGBQJLfQusAAoJEGUe77AlJ98T2fgP/1/zPMVEKN4Czh2cQD6OCYGEQYIL5iyV -4yjMrxu1GB2SZk5rSsG8CD91n13+rhXPBVJF7mSqOU0Y8WWx09j+qapTI/syHmwO -XXKdSopr/g/d8R/3kqG0pxb7tRNEj6CYfw6+9bHD4Mwzcnsl5V6fOfaI6HfuBwXW -+9SvwQeDEjybvV0DRdHmQPFN38pRKVxjD2WrEhCKzAIbqzbQ1Bi1TtkcckCT0Vfd -1FJSBbrhL5N4a1/Za+U7Y8Ei+ioFxLbERMw2/sX1VN3gtGQmBnCZPu02upqDPhJo -RcZtThyRKrYKjKZznVIS3HNI5T8Vv+a5FInx+lJwAflqkTODrxzrWqIRlNx5hnWx -tiqeKP1Z9iMRyT9PfHspp1jn/KMTI7ub9ruUpUlirxtDBihem9lp2qXr6s5mtINi -9P6rKj0ugi5ck3qQY9uoOGCYiiZ2WjLoBl0m5Tc+QAco8SItDqChOGHtdp2Yoeig -vYVx1zTBVYxJ5cHmfOYJ0D1W0RjH7YxkyltM4M1416mAcXIfzY74P3P/rPgLiulC -PFrM+ta/FWqUuZH8cFBhxm5Jhegvx4F7u8RCU04FOWP26hY4nZxpb4UVIxHYeIZF -Ea22V1BKiLxT4FtKFbaPrjaAtHZwTgrVkNSvB6oMCwh94YSSOdFoFnXF7bAmT92i -AS0PCVTu7EJ0iEYEExEKAAYFAkt9IiUACgkQ7Ri2jRYZRVMLKwCgxtycr+8uPyx3 -h47DrlHHNYdoBYAAn1Dx0+1otHQ+drDb4KWfjJ5EnbuTiEYEEBEIAAYFAkzWlsMA -CgkQ9ijrk0dDIGwjjACfaoNyQQdqFuiZSGtfSCrx8ZCsX0YAoKyPRlEqecg18uD2 -+ODT8eJB+ZNDiQIcBBABCAAGBQJM1pbSAAoJED2QirPw+/Uf0fgQALj1ZM/2ghr5 -8rUCx273i0doo+NhfWvQauMQBzwC0Nvn9sFdmfwtKvfYu1x3YIbIP2u0pKUpNm54 -kcSJGhRzLWdsIkKOb5R2fXi+WvvKHw0eN5I953LWf0SoZkG2nbeGCm3PtQuIHA0/ -MtDQht/yWOoxhijjWM4olj0SMdQlJKkd5XQDhMXsYiSmVhZZqdGoRiPeL+hyOFVt -Fh2T6XaSJw56HfUqx77nmnVeAfdfU6C7xmqJMXGu55i5B/FbGxhErxjvMUtyJegu -tVwxqGeD7EFCeBHYWHCDqN94FUzbs6UQt70VEdr9ZfP8Vh43Un7/+pBWTZJROVqR -EegEVmMj4wRRSZJdPwdk2AcK9iC2aiETe+yRsLZUXI8FX4AS6X/7leyc10wIlzHA -8iAESWQH/q9cfQxbzIO7GthawBm4pYGmiZ/t3Mo1aD4DicfJ89zo0UfAVfBcwOu3 -CXJWQIopzt6FCNgIQ8rL9B5YUpJmkjSnHBUlvg1dUuGGj9FlKvM0PvcW5ZLen4qs -19HR/kq3AbkBlewcjVGj40dtA5GbVs9lufyxAmFd+RxNPbSq9ZChAs11WTUr6AeB -++HhQ8FxCWr27j2zRNwW29Uy28cr8o6JkuABpuQqvWHVHrNjdZlx/XENROVNu2dD -pkhnEzQnBS2FsM/F4u9M8bMLEiAmSxcoiQIcBBABCAAGBQJNILQkAAoJEJNqg1tn -i5eWbgsP+QGdPcZ0dV6KCvRoOCN8S+548cMlPhtvS1Ou9vtacZPHu2aLY83yV39Y -X1UnKqv1tMQEQLY7jh0u68tTKt5zgGO4vsE+sjWf2SWqrhdAnf540NDGazrEV6x1 -ErKUdZyziC/mbbnWswWqtePBl7uoBQAnSbTa3OGREHkIH14eIUr+ivNt3Ki7eOc+ -sSW6oo49EpegbjeQfpkJaziu/polCa+tL0dO4hpiNG8eWAwtSbhiAKR3VGPN5X4C -qtOAIn8KIC0/6mffaSpFBa1ML8LGG6Ing2LbBm0sbCgRCmnRT5Ha98LpaEojvCWo -AhItw2QyAB6yM8uK+swqkPWO8fdhbVdezVuxBL/QWRJPG2x+bQYRq1ToJx4bXH+H -mouvwtLR+0GZ1vAiw4yTmLo8kNPC2VS6fQPGJXINjGh74AQ5LTMbf+i+4PA5hJ/p -9VR98m+M899X8I0XFF9CKiHDRNlDcbUoOKIT42JcCtSdKdAaGgrCd3AiP2cyQEYR -klppwMeM6mGb2bSd//cdwuQ2yAPxkNnKg/X3mRtCE/ebPRp7HIBBLJHQ0LkDLn12 -sZ9hm4+iozqeZkH1dywYiSkvAwiCamqB7zPxY/ZNcPnnCtxN5nIjvoNjg0TXI8h5 -Q6izHcaPO1BFX9Ss+JE9U4cG1yxSEY7ijs1FfVGZiPgubcH1nlVJiEYEEBECAAYF -AkulZRcACgkQi/mCfdEo8UpKiACgkZCZbGpogwxVV+x61yeReeLys4EAn1HDkcQt -lewcr5J49BsaEahHBxp+iF4EEhEIAAYFAktwd+UACgkQajPXGT73Mfih1AD/VElP -oKs5vn7jsCaNNqo9Bhfq7cYNsq4Knjfuh/113bIBAInzE+Te9vnJmy5Z0N5iHlNC -iBOE34i5C5BLMT5s7MGniQEcBBABAgAGBQJLeY92AAoJEEKTP9ONXAyPPxoH+wX5 -bJjFs683On7ax/rofozgIyZkUE80mrvlwYbhrjtNn0wH+rJrElIJ39bmd2vu2HJd -T/lCPPBd2xAPHBPS0x+SQNraE96CxOnW6yBOlalxb16/TZpw0mTsRQIlgEGVGDxt -VWdGe1Hau06cQuU4xDouDLxSVZ9piR7024OhzGFo4WnoGeQrFFM4/hXmzXhUjY4Z -rm1jwOsqfFa99GULobIRZ+FuIGXs9TuA3GOzpzqutuq3gxUNOwbAA5eitpcGDUon -ZcA/lZlXtI0wZowedJtf87xJaKjX39TorpIBfHnNR6SykrZ/ev/6SQvWtF0gMjWD -mDl2SogFvY1Xrm56P8GJARwEEAECAAYFAkuAehQACgkQi5nEqDtFWic+hgf/bsGf -pAEsbQD1GwqR3yfrCZI9gl9nSvO7ubieG1A4/Kcg/19/g9DK64Y+RRamNNoVdYwB -sWiNXXlS/lTTlvgbGna21FaHj9lmBHfU7pNFVottVmy7K2iJ3HqL+TFNMuB2sgkL -gkwCN4+KdoSmdcHby8EpkyotLnGD0Msypf55GoZgd0CZgyhg8KZzjLwrYdljvysG -ps1oOS4m4WKZS6oWWQgNbJ5kLZlHJjrl4IN9u6SUYop9IekqZ7YioV+iFndCHT0g -SaLA5RyQxdhP5pKUCNhIE05wF0CXFhMHJo/dBsLsRmc2YG1wtR6ran5TojgXPT5z -Z7pYg+GjtbJi+KQe5okCHAQQAQIABgUCS3/3cAAKCRBXkw2rC4awZxN4D/9KhZe0 -7E/JV60vTE0q4oMH9edWEd4KiM8hvtDrChjDD67WwcKK7EIgtWKlMjUd20ZkXgyB -YDHurTgin9ZgT1jajXWUnGUkk3DtBr3r++41I27pcK68NnpL8kLdQwbeck8R2G1O -cHRBStqslMK8W2NeKN31+n2yaYsgcm1V1z+hzEFb6XtNEJaoKCGis830MumnqdDm -bi3CD1MaBSQ0GXbIIGtGTOPgzbsfQU/TBgF/tH28GEtEIGNknjVvBCeBpZgGXFip -0GdD1y7txdNRKyCsSKwd4ELmx4K1A9qjowOiP8ljDWenxTPfRrqqpDUc7BaUV4Yd -rKHR1arX25Gmqxmaru3Z2sMVDKcknNyl8DCsS68Z6EMOlvdCVR3OE3e81a0404QO -wsYbpbg1s77In4XD2XMr/KRKzDFKgSqSvf08NCvkqLsQx89uFa7YkXf177D/EN2Y -mOlILW5gYYtZZ/QV+p/gtR3Ajl/ebwmVOSW0ABYZz7ciXTO8Zrj1CBCwRUGcVHdc -jEEKi/E4CkBYzoNtkPuQTCJqqN/WJreFzNYSNeAjdfHZYm+z+o2tufuTOcnFQ7G/ -agD2Xe0GAPK4M7LL4BGV2SepVjyLKkZqMtQN1LMVDlSr84HLIFslqDmaqoM6qoXS -nrsRdDSoWITifl2jx1OmdLXO1qIqlsYfO+VuqohGBBARAgAGBQJPhcvCAAoJEFbn -/4ooQMcIr1sAn1IsEtgUm3AlqThzosesuG7RuHmPAKDmFxFsJQHa4fD1bLXZwjLt -xYiGIYhGBBARAgAGBQJPhcvCAAoJEGNC8uy8Wva5r1sAoKWo434MpAyyz4bZDQGc -wF4Vt/UoAJsGGwbexLC/aWMSlMlmA5ZimsxOmIkBHAQQAQIABgUCT4XLwgAKCRBn -53Lwg1Hgr+3BCACBe8tJWMuaNkhwXFJ31qfZ41y2S49x1ii3GvBDmhzNLEcBNYfA -3lQQmFCATCXmHEmP5VH2DCy2OsHjKSD8rEKrx/2rtuA9Gkqx8PQX1zPYT6mA/WYP -qjtg97C+EsfmvaUJhwsY0krwxUHVq/QLEo4DVBJoq0VvDeXSW9rWYCFpBpicXmwJ -0OK5uM1S5zmo/xVLc6WEl330RCWLZZ+q+EseH4N1BnmxQjw/sOTed5lyjXpt5uzZ -cHYS76wZgaoNUdr+agwIE/LsHo9TGBzMoj/NAGWXOJDJmLIsdHL18AYQGIxVjNls -rMF+MIuv7DO7t273XCQiCx79dtoQQd6MsWx8iQEcBBABAgAGBQJPhcvCAAoJEKjO -KKYBDW867cEIAKuzAtmOydfTU+8o1B4ZXTbP2Q8khwbJ/BrpXStiUkyf0M/OMpdE -5Gx8MoXLtIx7SUit2le1wuiNZyD5Z1OFc4jJdzMWNVkVfehvjwBLNUCBpJZPugGz -06rx6haj9twvn9AvBe3BzbonJexCUZmQEyyrrdR9+YClXszYJExO9RcOltT7ZF1N -vbpjuP/E107MPQ+QaYcTLH8ln6JJf1E1s7kMQ6SsvbCHVwSQfwUkVWamIdYdgmhz -8buc5nqNqx1Pd9lcUcK7vIcITWJ7v9PR3RcQrPXAuALQaawdxe2yx7aWJH0HFnO0 -sPnEIDZFTlCJ9J6PoYRGWoAu/6mXEFuJV46IRgQQEQIABgUCUF4mhAAKCRBiTcVl -E16maGuHAJ9iCX99ojoq9VPOe6epNfAnzdkoMQCfXoz6jIAWhY+x0PQYoDCeBQZS -fnSJARwEEAEKAAYFAlGM41oACgkQdIELASNGyaYWUgf/VumvPJzoz7DR9r6nBanj -evfOA+fWvHXHRSDmo03PrUTbhOSRD6PmlsAHyR3RwFPG936FNxYM9J7n9PTaUdRt -O+a8448Lcu0bfcfAeXokOD7bd4g5540eWzEx4J9LQ8U29zwwlirlOPMTkQIKPxC+ -USI+t9IYNXocUzFlqg/T2r5Y3+VNBpjA2QaK4a9oSWzZ0zhqDfaAjZFekyochFEV -az1EjdIeU81u34a3w+ezbwG/dvzY7hBnAynJoetVs+p7/hGGr3+AtpPDDf9FZ7qu -/WS8hlmN48AOhuUjCkxIDo+HNN5hH7+GjINL9ezZxU3nhN4R+FXUc7Br4Ei/vle9 -2YhGBBARCAAGBQJSHQq2AAoJEKyFk2KwQTv6GCYAn0iZv3DdVI9Ew8QPv3qR0IML -NgTuAJ9H7E9crRHhEf46C11KGIqSIXXsEIkBIgQTAQoADAUCUhOGdgWDB4YfgAAK -CRDnpY4zetygeeR2CACXE7T2YZ4LEpzpnNDttErQ3I5KkJWre3CeoEvNHaXbCgAF -kMLal+Pu/vRQXpMEnKigCcLJlne0R4lH9s3PZks/q09zhOpTTjWdlNa+8dpQNN3V -sI1lT7pgO70zK9UPIrZzHWN+XqttAmPWJPUbIEzMUMMxP9TDs3h6e8hV67uiNO/h -zq7ff1+oR088vROmvuA4FhfHlCw/ayGSEpJXXK7b81C6E/rqp70KndpVWBOw8ESw -SRbLCinX5Ilfv36aITSroPH9nkmi1WHM/ey6azDxdw4ZI88jY7rWaTmrNzjuOQ3u -MdrPMsg+einql7lZRCxHY3//J3f9hmKLrrS35vjniEUEEBECAAYFAlMY6bgACgkQ -dzdhZHtTZBVaVQCYqfC68MwnvDiWa7CadlgyOQk6RACfeDjZmiT95NFqc3NYRJ43 -+OL20iWJAhwEEAECAAYFAlIySG0ACgkQ4Wb6EVcRORYs2w//Sw2UWPWmBf0EyWNP -pyW1QIfyCeqJrvwQxEkSJGlr1sdNodUeQwED2/qWx9WU6OOa5zV6SBnaHa/SNan7 -TYFg5ZTo9xeJZhdHyeiFXwqb1fkhp38LpxDnd6kqkuVeVMhOY3mvPzUitJw7P1KJ -8zQTQIbi9sd8r1bkD+Xy4c5PgHH0CjJ0zeBtmL+oSnp/bd8civzJKpY2XLDh5rT6 -Em4/ClXvzdM5JcQ9r4kuVbh+0/sHrDVoRJtmwReciOn3Yl95XKgyNbErJjgvfePY -p2xp0kotP0OPNN4EGEp6GsHG7kkluwMsxIXbHv472xylppaN8A9tp11vuSfMFvcz -5RnnFG5xEqe/VV+FFpWKQ8JwjLiUAwByhftRLyZRU066kAHCXiZ562ipXMYtjvDC -M00sBT5eF+plKTXE76TYiZnlWhHmZT+2kBnzJbQ48BUqM8ioCO1JAdvy6KqK2bwn -cd4tNy44ev+dCS3eS/p0lEgB+4ga9ZB5JnTm1Kpq9rZpf+6pob+ysswuRuCuDrjc -PN76dLglQQYdVq0KP/uKFC2+qHMMGg6JZFJD5DkI2iW7ImPyz6f6zjI2xytKPdfU -H+cq+qJTPZnkMZZWCPOBLlW1Qr8SE9sjzw6VRTp0y0qAib98VyITGU0WmSxVWo+H -8MfCzxxkyJpCVj5VtQd/D7675DaJAhwEEAECAAYFAlMjLOoACgkQGuHTUEPgjlSi -MxAAgLc+xKplCyovLJPsJnOZe/uBy2+VnUnDDRpn3tbQS7l2lE3NhkHpLb+X2TKf -/1adkauI6fDyuSSd/2rNYof8YkxVGAZA6C1eq+bGzChoEOdeAUreZR55HxF0iqWU -k3T5wo7lZdjBMBZaQE673T/ciJhK4lZW5DLB6T/X8ccQdqYvZXDCy/zN1yxuqTgQ -RxguVxkUbkSKVOxHT3dnqJN7TiSezf9wuVFcNM5eEgxlFfAFntJ5pOyAvalLptPI -8DBhFVzJcabgrMZD8dqq/5Xz2miqMBSBWkvcBb31pzMX1379sj4/E2tPzuh/WIyS -SbbLqehRd/uSKEnA86/vPrY5R3TijxbaW9G8MwWyBrTixN9c+75S2/4U+5/G7Day -vzXalHV8QpGD+sTp5l/Ch5GJ501G/+E6O56NbnfH7QragRqADMPS7HUezlPCXJTa -dv+5UbZXz0PD78p1KKfUSIh5acuWpCzU0fVZU6k5FZAD0FC2uVxqpycrR/t827OY -TscGXa+N8fv1Phn2nZSls4Ohv/I0qFu5CTG5iTCUaDreB4gUYPqylSxASq6avP5k -0XlSC8eV6zXmK7TDr4VxPiuEZKk4MLEMjIijhJz4PnuJNCMbAbDam95ektg2sh3v -Evl+Igs0wzfbXQJJV9mmmadPNytdp5NPz9dr2WBmFdOOkkCIXQQQEQgABgUCVPEc -OwAKCRDGVVaT2rWR52cSAPUZtxsqONPFyV0eoFRxAB31wKLDYJDc2bZefqmLAQs1 -APwO5Rd46A5Y8WMrT1ser/1w8mAgZZJEngMIRK2p+ilum4kCHwQwAQIACQUCVK3i -qQIdIAAKCRC5pAjnHarJdAtPD/0V9yp+eNmCbZKdGQieBZNnhmJAPPyZHQd4zHk2 -7v73C5/m93LgAyA0sf7xh1fn1frS9skIMTOiVh/fw+qjpnt5fPWqCsiBAHAc6i4D -g3jnNJDa5cmAt3PCnJHYWClb9asxZlo0VuVVHfHZcB8DcWhYJh7VPLhJSSmdG09E -ThEzWbtRspxEDl7xWQJqyCetd+qC82+RqPjgB7rDk39MRaQyphFmI730Wf2jBYDI -UB1yhreSuyXC6L3wOurrE8xXm0gZ6bfv1ErCSAWnreb86XRCZpjWbz1ktZE0Oa9L -m3tObcesBdLdf+DQmgedx+VW6Cmu0r5Af5m7Dy6ligKWzLY3rpVe5wFxSaLfMMxM -F2LuETT8xS06q1U6amKGKO/v5Vs/7gxduOZrI7WUBp0ww6Talcs1vuq68z9m7n0I -O6P9FPDiduX2OgcXHf6KT/kbXnCZ+rBQyEA0PMcTLFPdF0Jiv6jOJFwMZ7fIpJfQ -9GOi6AZAErSkEUS3UKXZYqjQEVKoDGPvRrtAVcY5ThZehfH6sUGlO6MeDlZiF64U -2+jFGImLyQZh4fzwkE3aNlfvEJjqxXTNW7PLcpAMU0P/d7Zhg3n0KrCKUtZ5aGz8 -XnO9Dj5DNQ9/KXe/CMOU4kXp7FF1n/nLSTufA2AgP3e2ZYJROUH8XE/DANr4ZVun -yB1aqYkCIgQTAQoADAUCVdx2/wWDB4YfgAAKCRAN+evWvAkCvt5AEACGSUy5oZ39 -AWXDhVIozTq40JN651EchpX2eR8WRkI5Z0r6sVWARCgMe7TsmXtjbFQg9W6VX+JB -8LZwmXfS4aL0K4m7AcCttFLTCmaIuRcIrsa4k4RfGqsfj6KOG6TIkiN4QyljIZky -qzI9c26akzrX7e05y33P7zhvEJnBYsxqMtqbs40HtAtdIfjYR9pxQp2I4Ll6LceH -eWCiZd9tIk7tnX6YP33iO938NlXPlQmToGKX6NHIMIia4g21uVJvckNFXAXOAUO7 -dypSG7fXWQOLgvadn4ZfrM3GuOz55BFh6mGOWMHPeuFaquziyTJ3pKRylyasHORg -K6n0e0Sj2WosClxIClH9/fk/R//ju1tKJ8MvnH01kjGfWH+ZXYvNsFZjd15diiv9 -k/EPfBA+Qa9nw+/bqk2KyHsGX0r4NQW2TMmOQ6tdCgYhHoap3qUPaKUSlH4PSRaO -NEdYxypueXXIpPPsboYbr2KsKEQfSQXXZCaK/rQv3CfuwuOX3wiOgphnwRe4coB+ -FduzwfODVdCV3rL7FF8QVKY1WpKwLjpSdkoZ25sOb7Vj3IkYeVuwD0LPmCWQBJaB -to5/8UcmrOKFQI2hkci3S6BXqedPxhII72PB0OV2DcUHTTdvl4Nu4QAp6OJeom1w -Wk3suAJTPgVZtXAnGIPnekJIEoHiVBZtcNHXDNcKARAAAQEAAAAAAAAAAAAAAAD/ -2P/gABBKRklGAAEBAQBIAEgAAP/hABZFeGlmAABNTQAqAAAACAAAAAAAAP/bAEMA -CQYHCAcGCQgICAoKCQsOFw8ODQ0OHBQVERciHiMjIR4gICUqNS0lJzIoICAuPy8y -Nzk8PDwkLUJGQTpGNTs8Of/bAEMBCgoKDgwOGw8PGzkmICY5OTk5OTk5OTk5OTk5 -OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5Of/CABEIAREA8AMB -IgACEQEDEQH/xAAbAAEAAgMBAQAAAAAAAAAAAAAABAUCAwYBB//EABgBAQEBAQEA -AAAAAAAAAAAAAAABAgME/9oADAMBAAIQAxAAAAHuAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAa8IsSLVVi0VYtFULVU+Fx5UC39p8i2VQtVWLRVi0yqZRYCgAAK2LKiwE -vvmNdZYxuWr16quovC72c7kdVP4r2PoG3kOmSW89oBKiyiwFAAAVsSXEhj7Rjl8d -ajYeNm+WJlY7pqrWusrJG7RZ2FhwXZsy2HqZSosqrAUAABWw5cSNPDdNyS4eNhlO -2S8ddMnZtnTDZllLrx3eRpi2GNzzd5XaN8e126ZFwlxJdWAoAACshy4UcxQWVUuV -jCtJqTI1beffdnhku1iMvcMz3HLFmlrbWo3x7Sxqba49lRpNWAoAACsp7emjjYkq -MuVrU22dTs4eOetpsrZTUr3Dxd2NdBubzOk3TO2i6Tnbjoug5TrNZzkRpVzYCgAA -KuqtauOPr7msz08sa+ySNK80tbccdqzZdPNz0w0sbjdv07j2puI6bOkp7U3yYkvf -GxFAAAVlTawI5rTKz5+mgsfdt56kn2dNeMnBa+zg2Bq27c5dO3PNcPMtbnlZQrLW -M5cWVvlYigAAKuDOgRW195S53Gx91TU2RD3Z7SYuOixaVEomoeCWOdVJllai89tz -Cm75ZSosqyxFAAAVNfPgxplY+nPQLaomt2WG/HWNrl6bcJGyQRfJeuXTsz9kzlxp -NxZ+69vTl7LiSyxFAAAVMKbCj3z3wqqHquZl2exNmemyRXbiTljm6e7MMJMZlbMu -N9josrjDfGk6z7LiSiyFAAAVMHZzkX/PU2utMrdszvKHZas6gbWrWLGTS5zVtohS -Ty0x351TTNEHWO0l/P7rWOml8/elqKAAA+e8v9ainy+d9C9XjI/0LDHTisu29j5/ -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 -cc/uOP3HK3sb883kb3L5vIkiZcNTj95z+85/eNkokc1vt9v6b//aAAwDAQACAAMA -AAAQ88888888888888888888888888888888Xxx91ZtNBBS8888p2V0IMC3JBB88 -88xpkomSu4+HB8888dYNP4p+Imjp88885chWFPcxp7B8888RUvHfpELv4588885f -TnyWvV5AV8888dWL2DViD1vU8888BHHeV+ZFNa08888RBt6EV6DK5o8888pBueXE -X1utk8888zNplzLFh7X+8888ykE3m+Xp5eS88888888888888888888888888888 -888888888888888888//xAAgEQEBAQACAgMBAQEAAAAAAAABABEhMTBBECBRUEBh -/9oACAEDAQE/EP4GWWWWWWWf6xMOXLLPAQbH7gkEkOIZ4RzD5Sbgz4O9kkdW2XFv -8+GIf374i6XDuS6I0cSrzDXc8BYJ9wFYhy1nhZCRdQuxb4ffqPUh0QBJSxsjAeJJ -ySV18H4h4xsvVo9Q/ZkodS48PaJ67fRlBzaMy+AFcLDlveXJDCXM+Zt3wLWyPmP+ -F+J8Sc/pf//EAB4RAAMAAwEAAwEAAAAAAAAAAAABERAgITEwQVBh/9oACAECAQE/ -EPwKUpSlKUpS6v4lq9LhIkeVq8stspieFqxHgevjdixTHGEGmKdc2ZTBVjTGhJfY -yQnBq2LVnobLgxcIT7FqxKTnT7EmNYNNIW+iU2eT9omUo+o94W7XCYF/RqiEFhaw -89K8wcYxEigmEJt0oJkWXpEmpS/of//EACoQAQACAQIFBQEBAAIDAAAAAAEAESEx -QVFhcaGxEDCB0fCRIGDBcOHx/9oACAEBAAE/EP8AnhW4F1Zx8T9/qn6/VP1+qfr9 -U/H6p+v1T8fqn7/VPx+qfj9U/H6p+P1T8fqn4/VPx+qfj9U/H6p+P1T8fqn4/VE9 -QLqxj59ntfl/0SpBatwS1X5lJnWBu7x0bLju1+lw/wA9+8ns9h8v+Wa6l7c5m3za -GBZ0w4JitLw5+Iq0/RKhBHEGGUfTXIlhDsuPMEGoecwMtsNP89+8ns9h8v8Ag+1N -Ubo3fiWFeJvEaG3XMtco6axy6xqC+UzBWFGyAuWlz0QYpdVgfEP89+8ns9p8vpcF -lweYMq8qv+3CMmReXSJndDjXFpTfEG2zdRW0oGMbxYA3lqMuKxMQlhBn1GXLPXv3 -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 -GwVt01Q61tJa56NIvw== -=vGyO ------END PGP PUBLIC KEY BLOCK----- diff --git a/satoshinakamoto.asc b/satoshinakamoto.asc deleted file mode 100644 index 4a53ade1..00000000 --- a/satoshinakamoto.asc +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.7 (MingW32) - -mQGiBEkJ+qcRBADKDTcZlYDRtP1Q7/ShuzBJzUh9hoVVowogf2W07U6G9BqKW24r -piOxYmErjMFfvNtozNk+33cd/sq3gi05O1IMmZzg2rbF4ne5t3iplXnNuzNh+j+6 -VxxA16GPhBRprvnng8r9GYALLUpo9Xk17KE429YYKFgVvtTPtEGUlpO1EwCg7FmW -dBbRp4mn5GfxQNT1hzp9WgkD/3pZ0cB5m4enzfylOHXmRfJKBMF02ZDnsY1GqeHv -/LjkhCusTp2qz4thLycYOFKGmAddpVnMsE/TYZLgpsxjrJsrEPNSdoXk3IgEStow -mXjTfr9xNOrB20Qk0ZOO1mipOWMgse4PmIu02X24OapWtyhdHsX3oBLcwDdke8aE -gAh8A/sHlK7fL1Bi8rFzx6hb+2yIlD/fazMBVZUe0r2uo7ldqEz5+GeEiBFignd5 -HHhqjJw8rUJkfeZBoTKYlDKo7XDrTRxfyzNuZZPxBLTj+keY8WgYhQ5MWsSC2MX7 -FZHaJddYa0pzUmFZmQh0ydulVUQnLKzRSunsjGOnmxiWBZwb6bQjU2F0b3NoaSBO -YWthbW90byA8c2F0b3NoaW5AZ214LmNvbT6IYAQTEQIAIAUCSQn6pwIbAwYLCQgH -AwIEFQIIAwQWAgMBAh4BAheAAAoJEBjAnoZeyUihXGMAnjiWJ0fvmSgSM3o6Tu3q -RME9GN7QAKCGrFw9SUD0e9/YDcqhX1aPMrYue7kCDQRJCfqnEAgA9OTCjLa6Sj7t -dZcQxNufsDSCSB+yznIGzFGXXpJk7GgKmX3H9Zl4E6zJTQGXL2GAV4klkSfNtvgs -SGJKqCnebuZVwutyq1vXRNVFPQFvLVVo2jJCBHWjb03fmXmavIUtRCHoc8xgVJMQ -LrwvS943GgsqSbdoKZWdTnfnEq+UaGo+Qfv66NpT3Yl0CXUiNBITZOJcJdjHDTBO -XRqomX2WSguv+btYdhQGGQiaEx73XMftXNCxbOpqwsODQns7xTcl2ENru9BNIQME -I7L9FYBQUiKHm1k6RrBy1as8XElS2jEos7GAmlfF1wShFUX+NF1VOPdbN3ZdFoWq -sUjKk+QbrwADBQgA9DiD4+uuRhwk2B1TmtrXnwwhcdkE7ZbLHjxBfCsLPAZiPh8c -ICfV3S418i4H1YCz2ItcnC8KAPoS6mipyS28AU1B7zJYPODBn8E7aPSPzHJfudMK -MqiCHljVJrE23xsKTC0sIhhSKcr2G+6ARoG5lwuoqJqEyDrblVQQFpVxBNPHSTqu -O5PoLXQc7PKgC5SyQuZbEALEkItl2SL2yBRRGOlVJLnvZ6eaovkAlgsbGdlieOr0 -UwWuJCwzZuBDruMYAfyQBvYfXZun3Zm84rW7Jclp18mXITwGCVHg/P5n7QMbBfZQ -A25ymkuj636Nqh+c4zRnSINfyrDcID7AcqEb6IhJBBgRAgAJBQJJCfqnAhsMAAoJ -EBjAnoZeyUihPrcAniVWl5M44RuGctJe+IMNX4eVkC08AJ9v7cXsp5uDdQNo8q3R -8RHwN4Gk8w== -=3FTe ------END PGP PUBLIC KEY BLOCK----- diff --git a/schneider.asc b/schneider.asc deleted file mode 100644 index 49b1110a..00000000 --- a/schneider.asc +++ /dev/null @@ -1,38 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.11 (GNU/Linux) - -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 -VpBkRjcrHDVumGys689t7nMo -=po+D ------END PGP PUBLIC KEY BLOCK----- diff --git a/scripts/bloom_filter.py b/scripts/bloom_filter.py index 62afe701..8311077b 100644 --- a/scripts/bloom_filter.py +++ b/scripts/bloom_filter.py @@ -4,7 +4,7 @@ from bitarray import bitarray # from pypi.python.org/pypi/bitarray import pyhash # from https://github.com/flier/pyfasthash # Based on BIP-37 -# https://github.com/QuantumExplorer/bips/blob/master/bip-0037.mediawiki +# https://github.com/dashevo/bips/blob/master/bip-0037.mediawiki # Defined in bloom.h # https://github.com/dashpay/dash/blob/master/src/bloom.h#L17-#L18 diff --git a/scripts/build_publish_preview.sh b/scripts/build_publish_preview.sh old mode 100644 new mode 100755 diff --git a/scripts/create_empty_rpc_md.sh b/scripts/create_empty_rpc_md.sh index 483596e1..9a3e80b8 100755 --- a/scripts/create_empty_rpc_md.sh +++ b/scripts/create_empty_rpc_md.sh @@ -34,7 +34,7 @@ if [ "$PARAMCOUNT" == 1 ]; then echo "*Result---RESULT DESCRIPTION*" >> $FILENAME echo "" >> $FILENAME - echo "*Example from Dash Core 0.13.0*" >> $FILENAME + echo "*Example from Dash Core 0.14.0*" >> $FILENAME echo "" >> $FILENAME # Example diff --git a/willbinns.asc b/willbinns.asc deleted file mode 100644 index 6f4e1fa7..00000000 --- a/willbinns.asc +++ /dev/null @@ -1,427 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQINBFfywf8BEADE5qmsYlvJmsyUFIA5Hee8mR2o989gnzZw+Su8xKObfJ/BvVk4 -0MxxpXRZs1QDrwSKk/79QFPBAvGKOCyhrr/fTIqUtK6KwQt5kf3Xraf4OEI2SPcF -pD8U6mJ6Iizi4hFR6QuyCR9ngn4luwau7JI3qrLqFzhEyebDzYi2ecj6ZGv9YmKu -8MDHR0WZhvfc5kG6HBOOws+4TAk3hHMclM3WQ/ENvrfomG+RY39vEug3AO0BvS4v -838n5+rsHoSGdsfDl7EQob8IWUVC428Z7UDLT4tHu7UdM2iSqhgsBWahHf2XvrK4 -6ej3tjOIAuPdwgKqu4c+eN6hocwNmGjM2lpv3lhwrITVaAd7378rsiGOptks8kLw -ZOzmZS8f5fR5NivCFxeuJlOBAa5ejf4uRWVQ/vsVfk9Uh3Xls4SEb7O+eLseF5ks -fFjn1xbKWWBTJ2zGAby3JoDK/ZyQ+VWrEEyOVT18kTqVIRPlzQFxQAAq4+F6Xhph -UpWFVDBXiphuM3KVaQGHPfXgmW7h4WWZ5Ahb+ocwFrQd9HZQ/UXxfzMUt9J81HfD -Z0InAvgN22rf2lG2cqs78HF8HVxcCr2yR2VW/NyfOG3TLK8ht3+jCM5JAMpwKLnT -kKOIjJ3DH3a3nHSya5oAAZ/uDTQRq9Z7cBfcwHv5vgwCokUigm2hUGe0sQARAQAB -tDlXaWxsIEJpbm5zIChBS0EgR2FybGFuZCBXaWxsaWFtIEJpbm5zIElJSSkgPHdp -bGxAdHJlay5pbz6JAkAEEwEKACoCGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AF -CQ+BlKoFAlfywlcCGQEACgkQMC6+rut0pAT4OhAAqPmdfdXGqQh/UDCgVf/7bJI2 -4xtRIov7tlDqmIpy2LjbVjH3QRV3edSiZRqwo4y3nFLwCCzzqjW9EywHlVOV6Vjo -K79wbCqZUYhWBwHJW8Vp780E7ql+zshexG7YKwalfLC6zgrMmh21e/H80zFwVw0F -dngLpcocsdHi2qqO866PY1+zeAjnwBiWw++tI3NvglGZMWE/qLjR7etQNXqXIta5 -kl1DlZ0xoiKBUmPSd9qfGAnLKlKVzi0Q+xgdbcpm/9vzK/36wZmw4c6oRhlCG5bc -Tq1iH341rC48VdndSlwYI0sNPQQYELIJT3YKlH0OIEp8jYM+8iYIS8V84OITMWEo -XSP3tly7vSHOHh5VoziBqKemTkb3EjjGGFT3TOYcMJxNSiZ+HtUR1EA7BWuJu3iU -MRz9rpSTM1aU3gY9YIiWirQE+mkrOubyIwOzAWOGJSaaJa/7SnEZ6DLDpYbv7c+g -qEeqiJpsdVAb89Y9ynRxGzpD4DO/48bg+jciaT48URsGK5xhvNMDicxxbNin83Uw -b7mWH5lYDz1SyiO7nZFlKNsHN8pF8PSODt8GxkAUD2fd3PlgrWLw/eNwZPK5h2Cp -wpm5rEMc67m3uDpGjNCuFSs17d+vZp3tZ9+I0o8p+cJAR3n9ZtNUELfl/yFFlIxi -58beEpvnbzEpApReK5GJAj0EEwEKACcCGwMFCwkIBwMFFQoJCAsFFgIDAQACHgEC -F4AFAlfywikFCQ+BlKoACgkQMC6+rut0pATsyw//dTydYN8SZEi5gbtsa2zT4d9G -yBJT4eJCJEs+Oq4fbDbq6VzN70USfGzdGztDm5KFsuJgaOCpR72xchm7E+CO0skv -xYNCeUAk3kK3m8C9N0lXAtVefoWaOCP414MIiTXcA11wFTW4L9+C2tlryW2CgSB7 -FQvTEwjEStHjN/XpGN9dXE+xq1JwsYMI7D664vWY6qW38x97gW1rwsiUZtPGh/t4 -vJmONCL+U6xrCgasureKiz2ywCCqarMsImM6ORIliliJ523eHMezmrHpGbxJBG1Z -IMA3FDK0UGfDj3z25ogCdjCtVc8iJn67cUO6fdGAbjbcwlS2zs5lBDW81+rHtxHx -h9cP4FuyLuiWPllw/6kuKyGW7JwGDaP4Y2nWGYmEHU3I7xiGqJk9QQg+ljMxds8f -iVUNLlEAwd2F5OOn4tHYRP+dnoGG43qjrGCFfDF5TNlWlKXx2emWRD0yG+F4KZ5f -geJgzsxO9QEPtK0RNmleBmSSS/6a89JEZVt9lkqOIJIILPHXo6Ye7aDkLAjuCsCR -OaDw1T8RQr/a7m1aHa9VO+eK5+weWZLuLnjZjjGI/x9c6y/PS4fcSFIONNF4a5Xi -FfzpbT52xrMVxH/P0LAaabOgUXFRUqzcH8Xqsce4/rZDC5wbM2hvgXAlCsuu3aU9 -fNI39ztKxowvLecqwUe0OFdpbGwgQmlubnMgKEFLQSBHYXJsYW5kIFdpbGxpYW0g -QmlubnMgSUlJKSA8YmlubnNAMjEuY28+iQI9BBMBCgAnBQJX8sJWAhsDBQkPgZSq -BQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEDAuvq7rdKQEmNsP/3WSgvy7XK3T -RWP7P1XnLWZO/clr6vnzlviPbT+GkDs+bm0qdZDOFSzp8fXBfE225tvnkD69RYMo -1MIScukYGzy11bvnPOgv35tcfMQELKugwNOVhI9J8OsPjtJ1o1tEEGfCMUkVS1qx -C2Zx9oPsjnyLTvGuip2tS23fOS5+NVG2Q902/jT8ZOWdjm/JPYjJXKaE7Mu3n+dH -ha+wNw4WRIUN4No3itchsBeMhxh+fHN42zWQr+5KENfnbCkQYlF97JrFV0XE0ra8 -AorZa1iqc/ftGrOUgebmBhZCD33PVDM+mfwBrF8CGlLoG3h+q/IL38NpCQZ9fBu9 -w/onH2PZbQnmBmioEoFLlKQF5T5azUqbyNdsW/OdPFVUc8+x3u7EaFCJQ91zjRI/ -cKmDIxpHtpkquR8FNE2KMBlt/vAmNOwadu+UISZpN4LINV29t3tH2EOB5OXE2hy7 -ceYgNcOWRR/JHsDS1v1U4P/kzY5KTQgqOEMGxfK7Z6WcTocLdyYdjmzvNFwRFwZu -JuV7+C+qZNoEHOvqXfsEx7q0k7TpR5f6K/13NkqLIBY22wWExJ9XfYQ7nSHPs2Of -CbD04B8vGtYnU9ZfzzybL8sY4/9N0k/3c8as51xjrF+8zm4kItVw2+VCwu55oWvi -4bDZduZaxiQbtS4dYlWs7TMo5UW6YXQUtEJXaWxsIEJpbm5zIChBS0EgR2FybGFu -ZCBXaWxsaWFtIEJpbm5zIElJSSkgPGJpbm5zQGdpdG1vbmV5Lm9ubGluZT6JAj0E -EwEKACcFAlfyy3MCGwMFCQ+BlKoFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQ -MC6+rut0pAThLw//ej6W1IiuZ2Z8Vg0OHY+zI9UFjkNusnauryaEnuNzKT3EY49b -Ed3kUcg+CxA4IZRvo6uYfGsfctU3VkZp6pVMfSlgyHSBNWC+chUWdzpOdA7TUlj9 -qLo5TUuzKOrBGh+rLCmSFHpnV81luRFvqyB3qVl2EmwVecbdtD+K4vsFmseKs4Y1 -A6iF1znyXg/hjdW7kvNXfnSMtkLxPRrfbwO/eeZukeGOOwj4WRG/ViGFMHEnqnFZ -3Os8pexo+4M2e4o7GoBlVXOYgB55c7QQpdXDNe2bfx5Z/8nRsRm9piZ3t9Jy7HIj -h+vHp2BU+hoSNY8hgdMlBn4gRiUNbnT4hukU4wLshCbPki0w7wKU3yQ5MrXqANHD -1zWpGoAvotzaTFtKSrI4x5hTI8X/Kd04m2ZO/HbMCOmBQuE/8Q/ylgZlwHrv7RkA -upxR78wYDgDmJWJ3pK5yJvmIWoSVqGQMhxpNzjsU2Mx2QwpmA0vq4Hi9SJ6K8DOo -ogcG+guH6ZkGYEXCuF/vnZdbM0Dki6yOYCS1cQiiAx1aPqrHZaf0Mi26O2EWrAyS -gHVT8fkcbhSetWJxtMiQmdyhHto/S7Vo0vRwYII6vnC9KpKaYtnNW+ZYL4v32qjd -hw941/Z04cYDyoonDDD2gg1XpJVZvVPzneIZ6yFxgts+iA0h6gJsBkOeve60Qldp -bGwgQmlubnMgKEFLQSBHYXJsYW5kIFdpbGxpYW0gQmlubnMgSUlJKSA8d2lsbEBj -cnlwdG9wZWxhZ28uY29tPokCPQQTAQoAJwUCV/fuegIbAwUJD4GUqgULCQgHAwUV -CgkICwUWAgMBAAIeAQIXgAAKCRAwLr6u63SkBHQKD/9/d10lltBJ2+v6mIg4pOfA -62Fi+ikaEXE7xgWBePz3qVzZzDcZbLo4AjOsQZf2knnLwgflccp7Ye6qKBCL0QwO -W6esFSEhsiqRIPoL9n2wcic7BaWKf6y9brMJn72wcRSSEYITXFRxQVlKWuSBzjM0 -NC/hJvTOyWs/V8y0RgViOlQ6iOl9aStzdG00NJ8qQUJ6qKs/hlFRp8W2ZzMQNDyn -7dpxW7y1rvawD+fSBFT/Lnt5gqb8h90x4dd8UJ8lq0nxXa+J30YGgyBQkZW4EcKj -3E//gsw3mWP9gu/Oc/dM4W53BcasuX5x3L5Kr5kap5z3Ot23loX93oFcCD3FvRM6 -SYazvMKBVYbe4vqtfFVz8eBX15y2BlbghfoYbUa31sEWLRp8h0ZiLA4umc1dvaDM -3Uax8jHdU6iuyFkpDVDw1d6tljcejYHOTYISOtICAX45ZFFfC/6JFYbSrhmuum0T -9WEBqYiSfEv+1Z6nQKOjU+d5/hpcH7Say9SOtSdfTh67wJG4sEgndKsKc7Mc7+rG -VE3aPyrarsxr+vBrcVI6xON7dZ5v+IiQHESC141CSKX9nunjUtp0OElEKpnuS2hi -aq4bZTnY539SLyAkvevpPkLG/1+cgVhBOWyejsU7GcToclhhFr5oBMYICHhmxO1d -ocPDdcZGQzDxOXKIcuyPhNH/AAA35v8AADfhARAAAQEAAAAAAAAAAAAAAAD/2P/h -ABhFeGlmAABJSSoACAAAAAAAAAAAAAAA/+wAEUR1Y2t5AAEABAAAADYAAP/hAzNo -dHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/ -IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1s -bnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUu -Ni1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4g -PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIy -LXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIg -eG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4 -bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS -ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJl -ZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAo -TWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRjA3NUQ5NDg0 -RTMxMUU2QjIyQ0Q0NUQ4NjkwMUNDNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRp -ZDpGRjA3NUQ5NTg0RTMxMUU2QjIyQ0Q0NUQ4NjkwMUNDNiI+IDx4bXBNTTpEZXJp -dmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZGMDc1RDkyODRFMzEx -RTZCMjJDRDQ1RDg2OTAxQ0M2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZG -MDc1RDkzODRFMzExRTZCMjJDRDQ1RDg2OTAxQ0M2Ii8+IDwvcmRmOkRlc2NyaXB0 -aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ -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 -OFIwu8heTkl0W4j6fRSli3/BwBRk -=n+IG ------END PGP PUBLIC KEY BLOCK----- From 3d2842c6a62b55918cbee462bbc8893580c19a6b Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 7 May 2019 12:08:55 -0400 Subject: [PATCH 076/117] RPC - Add quorum getrecsig (#129) * RPC - Add quorum getrecsig * RPC - Put id and msgHash in proper byte order --- .../devdoc/dash-core/rpcs/rpcs/quorum.md | 100 +++++++++++++++++- 1 file changed, 97 insertions(+), 3 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md index 3c61ee44..03b43a5c 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md @@ -1477,6 +1477,100 @@ false {% endautocrossref %} +###### Quorum GetRecSig + + +{% autocrossref %} + +The `quorum getrecsig` RPC checks gets the recovered signature for a previous threshold-signing message request. + +*Parameter #1---LLMQ Type* + +{% itemplate ntpd1 %} +- n: "`llmqType`" + t: "number" + p: "Required
    (exactly 1)" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" +{% enditemplate %} + +*Parameter #2---id* + +{% itemplate ntpd1 %} +- n: "`id`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "Signing request ID" +{% enditemplate %} + +*Parameter #3---message hash* + +{% itemplate ntpd1 %} +- n: "`msgHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "Hash of the message to be signed" +{% enditemplate %} + +*Result---recovered signature* + +{% itemplate ntpd1 %} +- n: "result" + t: "bool" + p: "Required
    (exactly 1)" + d: "Recovered signature details" + +- n: "→
    `llmqType`" + t: "number" + p: "Required
    (exactly 1)" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" + +- n: "→
    `quorumHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The block hash of the quorum" + +- n: "→
    `id`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The signing session ID" + +- n: "→
    `msgHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The message hash" + +- n: "→
    `sig`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The recovered signature" + +- n: "→
    `hash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the recovered signature" +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum getrecsig 1 \ + "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4" +{% endhighlight %} + +Result: +{% highlight json %} +{ + "llmqType": 1, + "quorumHash": "00000000008344da08e4d262773ea545472fbf625f78b3ebfe5fc067c33b1d22", + "id": "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f", + "msgHash": "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4", + "sig": "1365171c408d686af2ca8f5fae91cdf9cf0b5eec60b0b161b9288a1c68e2cd68f225495a787415c924c5953a6282d131178aa6baf4c2673d19549fc627740cf71d295f8a38b9970525a7f248d54a548e16da285b5c1f3ec0740ad40edbcc8615", + "hash": "d9b7f7904746fbb3eeaeec36fadc79b351f6a854cd22ee9e607592aee972fcb2" +} +{% endhighlight %} + +{% endautocrossref %} + ###### Quorum HasRecSig @@ -1527,12 +1621,12 @@ The `quorum hasrecsig` RPC checks for a recovered signature for a pr {% highlight bash %} dash-cli -testnet quorum hasrecsig 1 \ - "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" + "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4" {% endhighlight %} Result: {% highlight json %} -false +true {% endhighlight %} {% endautocrossref %} @@ -1587,7 +1681,7 @@ The `quorum isconflicting` RPC checks if there is a conflict for a t {% highlight bash %} dash-cli -testnet quorum isconflicting 1 \ - "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" + "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4" {% endhighlight %} Result: From 029a436cf2a6da01fb7eb8a89cc7572ee6df6341 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 8 May 2019 09:43:55 -0400 Subject: [PATCH 077/117] P2P - Add real qjustify hexdump --- _includes/devdoc/ref_p2p_networking.md | 44 +++++++++++++++----------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 9dbb35b1..b4afe2ac 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -3082,6 +3082,10 @@ An `SKContribution` consists of: More information can be found in the [Justification phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#4-justification-phase). + The following annotated hexdump shows a `qjustify` message. (The message header has been omitted.) @@ -3089,30 +3093,34 @@ message header has been omitted.) {% highlight text %} 01 ......................................... LLMQ Type: 1 (LLMQ_50_60) -bc10b9ced438052d3726085c13aa9c6e -4f0950675f9ab1948276220100000000 ........... Quorum Hash +b34b2bcb3430f403663e37be9c63c88e +4ca1f12c41846064cf960a0800000000 ........... Quorum Hash -cbd9581d54af43a06d3f6900b5226945 -4303c1b378bbb45caea44228af0c67a6 ........... ProRegTx hash +e7d909afba6848f3fdf98b2da31db07e +3fbee621d58c469dce96d6283bcd4b25 ........... ProRegTx hash -------------------------------------------------------------- -NOTE: The following fields are placeholders for actual values -------------------------------------------------------------- - -01 ......................................... Contribution count: 1 +05 ......................................... Contribution count: 5 Contribution #1 -| 01000000 ................................. Member Index: 1 +| 16000000 ................................. Member Index: 22 | -| 00000000000000000000000000000000 -| 00000000000000000000000000000000 ......... Unencrypted secret key contribution +| 57b63ec5ae0a101f0d93bb60af70bf22 +| c21bd3a7705e1aecb9559d6b151d953f ......... Unencrypted secret key contribution -00000000000000000000000000000000 -00000000000000000000000000000000 -00000000000000000000000000000000 -00000000000000000000000000000000 -00000000000000000000000000000000 -00000000000000000000000000000000 ........... BLS signature (Operator Key) +Contribution #2 +| 17000000 ................................. Member Index: 22 +| +| 0ee1f0f0f2570589e81d2a4f8165b105 +| 28436a1a75cf3469fa81090f2d856150 ......... Unencrypted secret key contribution + +[...] ...................................... 3 more contributions omitted + +8d63d10e242ac97c6324e9a40d6e690e +4bb7fe0750b7d204f7e988a324720189 +68408d2d0621bbaba8380ad4aaf342ea +138ce9a59ed9ca82995c155609488dcc +5ac35f483b695a0624e5ab0745f7f9e2 +051edf1b3b1f0e1b1d55d185d25e0ed7 ........... BLS signature (Operator Key) {% endhighlight %} {% endautocrossref %} From ebe222c4f3f79394fcb47363c35d729f8fd8313d Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 8 May 2019 11:54:53 -0400 Subject: [PATCH 078/117] P2P - Add qcomplaint info and updated hexdump --- _includes/devdoc/ref_p2p_networking.md | 37 ++++++++++++++++---------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index b4afe2ac..9942228c 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -2999,7 +2999,16 @@ intra-quorum communication and is only sent to the masternodes in the LLMQ and nodes that are monitoring in Watch Mode for auditing/debugging purposes. The `qcomplaint` message is used to notify other members in the DKG process of -any members that provided an invalid secret key contribution. +any members that provided no contribution or an invalid secret key contribution. +The notifications are divided into 2 fields: + + - `badMembers` - Sets a bit for each member that failed to provide a contribution + - `complaints` - Sets a bit for each member that provided an invalid contribution + +If a threshold number of quorum participants indicate a masternode didn't contribute, +that masternode will be excluded from the quorum. Members that simply have a complaint +against them are given an opportunity to respond (via a `qjustify` message) to +attempt to prove to all participants that they did participate. | Bytes | Name | Data type | Description | | --- | --- | --- | --- | @@ -3015,7 +3024,7 @@ any members that provided an invalid secret key contribution. More information can be found in the [Complaining phase section of DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#3-complaining-phase). The following annotated hexdump shows a `qcomplaint` message. (The @@ -3024,24 +3033,24 @@ message header has been omitted.) {% highlight text %} 01 ......................................... LLMQ Type: 1 (LLMQ_50_60) -bc10b9ced438052d3726085c13aa9c6e -4f0950675f9ab1948276220100000000 ........... Quorum Hash +b34b2bcb3430f403663e37be9c63c88e +4ca1f12c41846064cf960a0800000000 ........... Quorum Hash -cbd9581d54af43a06d3f6900b5226945 -4303c1b378bbb45caea44228af0c67a6 ........... ProRegTx hash +b375607540bd9c6e4a5452d8c7a6a626 +ec715222a0650321487843c79cac67d5 ........... ProRegTx hash 32 ......................................... Bad member bitvector size: 50 -00000000000400 ............................. Bad members +08800200004000 ............................. Bad members 32 ......................................... Complaints bitvector size: 50 -00000000000000 ............................. Complaints +00020080040000 ............................. Complaints -98e148f112fc46d233eeee230472b305 -0b80b2a675cf7699f97412cce3606a3c -863c89aa68ed1608ed9a6503dfd1d8aa -01c7a15e70cdc45afe653beaaf399aeb -9b4f44cdf5eaafe223807f30c35a97fd -e9015178f6d642b7b25c4fd7c4ef3030 ........... BLS signature (Operator Key) +0639b0e8ccb667c161207ddc03183d4e +bb632eeb60f29e351963032a673abd61 +3fb3e847dff78699481193cf385f0e08 +0fdf518e26ef1e258b724408b1ee9d70 +511696092b6c2ebfad5e24154a7f859f +0efe3fcb8d7042da624f7298876cc98e ........... BLS signature (Operator Key) {% endhighlight %} {% endautocrossref %} From c523af4ca983801bc49a172736736eafa170261c Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 13 May 2019 11:47:15 -0400 Subject: [PATCH 079/117] Minor review updates - listunspent RPC - remove RBF-related text - InstantSend - Convert improvement list to table - Add some additional detail - Update limitation list --- .../devdoc/dash-core/rpcs/rpcs/listunspent.md | 2 +- _includes/devdoc/guide_dash_features.md | 34 +++++++++++++------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md b/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md index 8b89dbb3..73d41300 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md @@ -136,7 +136,7 @@ the *spendable* field in the results described below. - n: "→ →
    `safe`" t: "bool" p: "Required
    (exactly 1)" - d: "*Added in Bitcoin Core 0.15.0*

    Whether this output is considered safe to spend. Unconfirmed transactions from outside keys and unconfirmed replacement transactions are considered unsafe and are not eligible for spending by `fundrawtransaction` and `sendtoaddress`." + d: "*Added in Bitcoin Core 0.15.0*

    Whether this output is considered safe to spend. Unconfirmed transactions from outside keys are considered unsafe and are not eligible for spending by `fundrawtransaction` and `sendtoaddress`." {% enditemplate %} diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index b0b41515..7b26174c 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -115,9 +115,16 @@ had already been confirmed to a block depth of 5 in the blockchain. {% autocrossref %} The introduction of Long-Living Masternode Quorums in Dash Core 0.14 provides -a foundation to further scale InstantSend. LLMQ-based InstantSend removes a -number of previously required limitations and simplifies the process by decreasing -the number of P2P messages clients must use. +a foundation to further scale InstantSend. LLMQs enable the transaction input +locking process (and resulting network traffic) to occur within the quorum. This +enables further scaling without introducing network congestion since only the +output of the locking process is relayed to the entire Dash network. + +LLMQ-based InstantSend also removes a number of previously required limitations +and simplifies the process by decreasing the number of P2P messages clients must +process. Rather than tracking individual masternode votes for each transaction +input, all required locking information is found within the single `islock` message +for a transaction. During the evaluation and transition from standard InstantSend to LLMQ-based InstantSend, Sporks 2 (`SPORK_2_INSTANTSEND_ENABLED`) and 20 (`SPORK_20_INSTANTSEND_LLMQ_BASED`) @@ -128,6 +135,7 @@ InstantSend is enabled. There are still some limitations on LLMQ-based InstantSend transactions: * Transaction inputs must either: + * Be locked by InstantSend * Be in a block that has a ChainLock * Have at least the number confirmations (block depth) indicated by the table below @@ -139,15 +147,19 @@ There are still some limitations on LLMQ-based InstantSend transactions: | Devnet | 2 Blocks | -Improvements from the old InstantSend system: +The improvements over the old InstantSend system include both the addition of new +functionality and the removal of prior limitations. The following table details +these improvements: -* Changed: Transactions can be chained if the inputs are from transactions that are also locked -* Changed: InstantSend locks are attempted for all transactions (`tx` messages) - no need to request it via the special message (`ix` message) -* Changed: Only need to receive a single `islock` message - no need to track votes (`txlvote` messages) for each input -* Removed: Limit on number of inputs -* Removed: Limit on transaction value -* Removed: Timeout for lock - transaction locks will only be removed once the transaction is confirmed in a ChainLocked block -* Removed: Custom InstantSend fee +| **Status** | **Improvement** | +|---------|--------------| +| New | Transactions can be chained if the inputs are from transactions that are also locked | +| New | InstantSend locks are attempted for all transactions (`tx` messages) - no need to request it via the special message (`ix` message) | +| New | Successful locks are indicated by a single `islock` message - no need to track votes (`txlvote` messages) for each input | +| Updated | Limit on number of inputs removed | +| Updated | Limit on transaction value removed | +| Updated | Timeout for locking removed - transaction locks will only be removed once the transaction is confirmed in a ChainLocked block | +| Updated | Custom InstantSend fee removed | Note: A transaction will __not__ be included in the block template (from `getblocktemplate`) unless it: From 960a98d96e662db161ed547e2bfcac6a3a2a5009 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 13 May 2019 12:15:30 -0400 Subject: [PATCH 080/117] Minor review update --- _includes/devdoc/guide_dash_features.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 7b26174c..aa1c9922 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -123,8 +123,7 @@ output of the locking process is relayed to the entire Dash network. LLMQ-based InstantSend also removes a number of previously required limitations and simplifies the process by decreasing the number of P2P messages clients must process. Rather than tracking individual masternode votes for each transaction -input, all required locking information is found within the single `islock` message -for a transaction. +input, all required locking information is found within the single `islock` message. During the evaluation and transition from standard InstantSend to LLMQ-based InstantSend, Sporks 2 (`SPORK_2_INSTANTSEND_ENABLED`) and 20 (`SPORK_20_INSTANTSEND_LLMQ_BASED`) From e98d344734cc806af7f8595c63eb7ef6d1bb7251 Mon Sep 17 00:00:00 2001 From: thephez Date: Fri, 17 May 2019 10:09:17 -0400 Subject: [PATCH 081/117] Trivial - Add release month --- _includes/devdoc/ref_p2p_networking.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 9942228c..c5835f0b 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -70,7 +70,7 @@ As of Dash Core 0.14.0, the most recent protocol version is 70214. | Version | Initial Release | Major Changes |---------|------------------------------------|-------------- -| 70214 | Dash Core 0.14.0.x
    (??? 2019) | • Long-living Masternode Quorums
    • ChainLocks
    • PrivateSend improvements
    • Experimental LLMQ InstantSend
    • Bitcoin Core 0.15 backports +| 70214 | Dash Core 0.14.0.x
    (May 2019) | • Long-living Masternode Quorums
    • ChainLocks
    • PrivateSend improvements
    • Experimental LLMQ InstantSend
    • Bitcoin Core 0.15 backports | 70213 | Dash Core 0.13.0.x
    (Jan 2019) | • Special Transactions
    • Deterministic Masternode List
    • Coinbase Special Transaction
    • Automatic InstantSend | 70210 | Dash Core 0.12.3.x
    (July 2018) | • Named Devnets
    • New signature format / Spork 6 addition
    • Bitcoin Core 0.13/0.14 backports
    • [BIP90][]: Buried deployments
    • [BIP147][]: NULLYDUMMY enforcement
    • [BIP152][] Compact Blocks
    • Transaction version increased to 2
    • Zero fee transactions removed
    • Pruning in Lite Mode | 70208 | Dash Core 0.12.2.x
    (Nov 2017) | • [DIP1][] (2MB blocks)
    • Fee reduction (10x)
    • InstantSend fix
    • PrivateSend improvements
    • _Experimental_ HD wallet
    • Local Masternode support removed From 85f779bfc5a8d903ae0ce9340be6281e937a98d4 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 20 May 2019 12:08:22 -0400 Subject: [PATCH 082/117] Config - analytics (#130) * Config - Update analytics * Config - Enable analytics IP anonymization --- _includes/layout/base/html-head.html | 2 +- js/analytics.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/_includes/layout/base/html-head.html b/_includes/layout/base/html-head.html index 5df6e027..9ab008bd 100644 --- a/_includes/layout/base/html-head.html +++ b/_includes/layout/base/html-head.html @@ -30,6 +30,7 @@ http://opensource.org/licenses/MIT. } +--> ---> diff --git a/js/analytics.js b/js/analytics.js index d2708ffd..b134c01d 100644 --- a/js/analytics.js +++ b/js/analytics.js @@ -4,7 +4,8 @@ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - ga('create', 'UA-46627233-1', 'auto'); + ga('create', 'UA-118991016-3', 'auto'); + ga('set', 'anonymizeIp', true); ga('send', 'pageview'); /* jshint ignore:end */ From c8a285539df6a70f5f37e8b2abb249ef0e4f3e85 Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 21 May 2019 10:12:50 -0400 Subject: [PATCH 083/117] Fix - Make qsendrecsigs message show up in search (#131) --- _autocrossref.yaml | 2 ++ _config.yml | 1 + _includes/references.md | 1 + 3 files changed, 4 insertions(+) diff --git a/_autocrossref.yaml b/_autocrossref.yaml index d0357741..54f5c341 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -196,6 +196,8 @@ public key infrastructure: pki '`qjustify` messages': qjustify message '`qpcommit` message': qpcommit message '`qpcommit` messages': qpcommit message +'`qsendrecsigs` message': qsendrecsigs message +'`qsendrecsigs` messages': qsendrecsigs message '`qsigrec` message': qsigrec message '`qsigrec` messages': qsigrec message '`qsigsesann` message': qsigsesann message diff --git a/_config.yml b/_config.yml index 5d4f3ff1..04b81eb0 100644 --- a/_config.yml +++ b/_config.yml @@ -566,6 +566,7 @@ devsearches: - "qgetsigs": "/en/developer-reference#qgetsigs" - "qjustify": "/en/developer-reference#qjustify" - "qpcommit": "/en/developer-reference#qpcommit" + - "qsendrecsigs": "/en/developer-reference#qsendrecsigs" - "qsigrec": "/en/developer-reference#qsigrec" - "qsigsesann": "/en/developer-reference#qsigsesann" - "qsigsinv": "/en/developer-reference#qsigsinv" diff --git a/_includes/references.md b/_includes/references.md index 52529a2e..4a779c6f 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -273,6 +273,7 @@ http://opensource.org/licenses/MIT. [qgetsigs message]: /en/developer-reference#qgetsigs "A P2P network message used to request signature shares" [qjustify message]: /en/developer-reference#qjustify "A P2P network message used to respond to another masternodes DKG complaint" [qpcommit message]: /en/developer-reference#qpcommit "A P2P network message used to send an LLMQ premature commitment" +[qsendrecsigs message]: /en/developer-reference#qsendrecsigs "A P2P network message used to request that recovered quorum signatures be provided" [qsigrec message]: /en/developer-reference#qsigrec "A P2P network message used to send recovered quorum signatures" [qsigsesann message]: /en/developer-reference#qsigsesann "A P2P network message used to announce signing session details" [qsigsinv message]: /en/developer-reference#qsigsinv "A P2P network message used to announce quorum signature share inventories" From 1bd057a071c227e2eee2907b93e25bbc55011b15 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 23 May 2019 11:12:37 -0400 Subject: [PATCH 084/117] Config - Update version in Doxyfile to 0.14.0.0 (#132) --- doxygen/Doxyfile-dashdocs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen/Doxyfile-dashdocs b/doxygen/Doxyfile-dashdocs index 20cb5fe0..2d97a37e 100644 --- a/doxygen/Doxyfile-dashdocs +++ b/doxygen/Doxyfile-dashdocs @@ -41,7 +41,7 @@ PROJECT_NAME = "Dash Core" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.13.1.0 +PROJECT_NUMBER = 0.14.0.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a From ecb57a023b1928568855677381dd6dc515440e4d Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 23 May 2019 11:37:26 -0400 Subject: [PATCH 085/117] Content/v0.14.0 glossary update (#133) * Content - Add glossary entries - ChainLock, LLMQ, Special Tx * Content - Add norefs to prevent broken links --- _data/glossary/en/chainlocks.yaml | 29 ++++++++++++++++ .../en/long-living-masternode-quorum.yaml | 33 +++++++++++++++++++ _data/glossary/en/special-transactions.yaml | 28 ++++++++++++++++ _includes/devdoc/dash-core/rpcs/rpcs/debug.md | 2 +- .../devdoc/dash-core/rpcs/rpcs/quorum.md | 14 ++++---- _includes/devdoc/guide_dash_features.md | 2 +- 6 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 _data/glossary/en/chainlocks.yaml create mode 100644 _data/glossary/en/long-living-masternode-quorum.yaml create mode 100644 _data/glossary/en/special-transactions.yaml diff --git a/_data/glossary/en/chainlocks.yaml b/_data/glossary/en/chainlocks.yaml new file mode 100644 index 00000000..1dcec57a --- /dev/null +++ b/_data/glossary/en/chainlocks.yaml @@ -0,0 +1,29 @@ +--- +# This file is licensed under the MIT License (MIT) available on +# http://opensource.org/licenses/MIT. + +required: + #-------------40 characters-------------# + title_max_40_characters_no_formatting: ChainLocks + + summary_max_255_characters_no_formatting: > + ChainLocks are a feature enabling near instant consensus + on the valid chain. ChainLocks use Long-Living Masternode + Quroums to mitigate 51 percent attacks and reduce + uncertainty when receiving funds. + + synonyms_shown_in_glossary_capitalize_first_letter: + - ChainLocks + +optional: + synonyms_and_pluralizations_not_shown_in_glossary: + - ChainLock + + not_to_be_confused_with_capitalize_first_letter: + + links_html_or_markdown_style_capitalize_first_letter: + - "[ChainLocks](/en/developer-guide#chainlocks) --- Developer Guide" + - "[ChainLock message](/en/developer-reference#clsig) --- Developer Reference" + - "[ChainLocks](https://docs.dash.org/en/stable/introduction/features.html#chainlocks) --- Dash Documentation" + +--- diff --git a/_data/glossary/en/long-living-masternode-quorum.yaml b/_data/glossary/en/long-living-masternode-quorum.yaml new file mode 100644 index 00000000..d9e27536 --- /dev/null +++ b/_data/glossary/en/long-living-masternode-quorum.yaml @@ -0,0 +1,33 @@ +--- +# This file is licensed under the MIT License (MIT) available on +# http://opensource.org/licenses/MIT. + +required: + #-------------40 characters-------------# + title_max_40_characters_no_formatting: Long-Living Masternode Quorum + + summary_max_255_characters_no_formatting: > + Long-Living Masternode Quorums (LLMQs) are a Dash innovation + that enable masternodes to perform threshold signing of + consensus-related messages (e.g. InstantSend transactions). + LLMQs provide a more scalable, general use quorum system + than the ephemeral ones used prior to Dash Core version 0.14. + + synonyms_shown_in_glossary_capitalize_first_letter: + - Long-Living Masternode Quorum + - LLMQ + +optional: + synonyms_and_pluralizations_not_shown_in_glossary: + - Long-Living Masternode Quorums + - Long Living Masternode Quorum + - Long Living Masternode Quorums + - LLMQs + + not_to_be_confused_with_capitalize_first_letter: + + links_html_or_markdown_style_capitalize_first_letter: + - "[Masternode Quorums](/en/developer-guide#masternode-quorums) --- Developer Guide" + - "[Long-Living Masternode Quorums](https://github.com/dashpay/dips/blob/master/dip-0006.md) --- Dash DIP" + +--- diff --git a/_data/glossary/en/special-transactions.yaml b/_data/glossary/en/special-transactions.yaml new file mode 100644 index 00000000..ff3c46d0 --- /dev/null +++ b/_data/glossary/en/special-transactions.yaml @@ -0,0 +1,28 @@ +--- +# This file is licensed under the MIT License (MIT) available on +# http://opensource.org/licenses/MIT. + +required: + #-------------40 characters-------------# + title_max_40_characters_no_formatting: Special Transactions + + summary_max_255_characters_no_formatting: > + Special Transactions provide a way to include non-financial, + consensus-assisting metadata (e.g. masternode lists) on-chain. + + synonyms_shown_in_glossary_capitalize_first_letter: + - Special Transactions + +optional: + synonyms_and_pluralizations_not_shown_in_glossary: + - Special Transaction + - special transaction + - special transactions + + not_to_be_confused_with_capitalize_first_letter: + + links_html_or_markdown_style_capitalize_first_letter: + - "[Special Transactions](/en/developer-reference#special-transactions) --- Developer Reference" + - "[Special Transactions](https://github.com/dashpay/dips/blob/master/dip-0002.md) --- Dash DIP" + +--- diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/debug.md b/_includes/devdoc/dash-core/rpcs/rpcs/debug.md index b24d075d..e2c7ff71 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/debug.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/debug.md @@ -20,7 +20,7 @@ The `debug` RPC {{summary_debug}} - n: "Debug category" t: "string" p: "Required
    (1 or more)" - d: "The debug category to activate. Use a `+` to specify multiple categories. Categories will be one of the following:
    • `0` - Disables all categories
    • `1` - Enables all categories
    • `addrman`
    • `alert`
    • `bench`
    • `cmpctblock`
    • `coindb`
    • `db`
    • `http`
    • `leveldb`
    • `libevent`
    • `lock`
    • `mempool`
    • `mempoolrej`
    • `net`
    • `proxy`
    • `prune`
    • `qt`
    • `rand`
    • `reindex`
    • `rpc`
    • `selectcoins`
    • `tor`
    • `zmq`
    • `dash` (all subcategories)

    The `dash` sub-categories can be enabled individually:
    • `chainlocks`
    • `gobject`
    • `instantsend`
    • `keepass`
    • `llmq`
    • `llmq-dkg`
    • `llmq-sigs`
    • `masternode`
    • `mnpayments`
    • `mnsync`
    • `privatesend`
    • `spork`


    Note: No error will be thrown even if the specified category doesn't match any of the above" + d: "The debug category to activate. Use a `+` to specify multiple categories. Categories will be one of the following:
    • `0` - Disables all categories
    • `1` - Enables all categories
    • `addrman`
    • `alert`
    • `bench`
    • `cmpctblock`
    • `coindb`
    • `db`
    • `http`
    • `leveldb`
    • `libevent`
    • `lock`
    • `mempool`
    • `mempoolrej`
    • `net`
    • `proxy`
    • `prune`
    • `qt`
    • `rand`
    • `reindex`
    • `rpc`
    • `selectcoins`
    • `tor`
    • `zmq`
    • `dash` (all subcategories)

    The `dash` sub-categories can be enabled individually:
    • `chainlocks`
    • `gobject`
    • `instantsend`
    • `keepass`
    • `llmq`
    • `llmq-dkg`
    • `llmq-sigs`
    • `masternode`
    • `mnpayments`
    • `mnsync`
    • `privatesend`
    • `spork`


    Note: No error will be thrown even if the specified category doesn't match any of the above" {% enditemplate %} *Example from Dash Core 0.12.3* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md index 03b43a5c..0d6173a6 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md @@ -98,7 +98,7 @@ The `quorum info` RPC returns information about a specific quorum. - n: "`llmqType`" t: "number" p: "Required
    (exactly 1)" - d: "[Type of quorums](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types) to list:
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" + d: "[Type of quorums](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types) to list:
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" {% enditemplate %} *Parameter #2---quorum hash* @@ -283,7 +283,7 @@ The `quorum list` RPC displays the status of the current DKG process - n: "→ → →
    `llmqType`" t: "number" p: "Required
    (exactly 1)" - d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" - n: "→ → →
    `quorumHash`" t: "string (hex)" @@ -1432,7 +1432,7 @@ The `quorum sign` RPC requests threshold-signing for a message. - n: "`llmqType`" t: "number" p: "Required
    (exactly 1)" - d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" {% enditemplate %} *Parameter #2---id* @@ -1490,7 +1490,7 @@ The `quorum getrecsig` RPC checks gets the recovered signature for a - n: "`llmqType`" t: "number" p: "Required
    (exactly 1)" - d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" {% enditemplate %} *Parameter #2---id* @@ -1522,7 +1522,7 @@ The `quorum getrecsig` RPC checks gets the recovered signature for a - n: "→
    `llmqType`" t: "number" p: "Required
    (exactly 1)" - d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" - n: "→
    `quorumHash`" t: "string (hex)" @@ -1586,7 +1586,7 @@ The `quorum hasrecsig` RPC checks for a recovered signature for a pr - n: "`llmqType`" t: "number" p: "Required
    (exactly 1)" - d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" {% enditemplate %} *Parameter #2---id* @@ -1646,7 +1646,7 @@ The `quorum isconflicting` RPC checks if there is a conflict for a t - n: "`llmqType`" t: "number" p: "Required
    (exactly 1)" - d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
    `1` - LLMQ_50_60
    `2` - LLMQ_400_60
    `3` - LLMQ_400_85" {% enditemplate %} *Parameter #2---id* diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index aa1c9922..88d4a34b 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -189,7 +189,7 @@ block. {% autocrossref %} -Dash's ChainLock feature leverages [LLMQ Signing Requests/Sessions](#llmq-signing-session) +Dash's ChainLock feature leverages [LLMQ Signing Requests/Sessions](#llmq-signing-session) to reduce uncertainty when receiving funds and remove the possibility of 51% mining attacks. From 9d560242195f6965c4ba8a89bb5ea12d76d137d5 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 3 Jun 2019 10:22:09 -0400 Subject: [PATCH 086/117] Config - Update version in Doxyfile to 0.14.0.1 (#134) --- doxygen/Doxyfile-dashdocs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen/Doxyfile-dashdocs b/doxygen/Doxyfile-dashdocs index 2d97a37e..b4513970 100644 --- a/doxygen/Doxyfile-dashdocs +++ b/doxygen/Doxyfile-dashdocs @@ -41,7 +41,7 @@ PROJECT_NAME = "Dash Core" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.14.0.0 +PROJECT_NUMBER = 0.14.0.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a From 4dad3915f414e83866ca163ea31e26f842e2518b Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 3 Jun 2019 11:37:30 -0400 Subject: [PATCH 087/117] Config - Update nokogiri (CVE-2018-14404) (#136) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7c214b3b..9a9540bd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -51,7 +51,7 @@ GEM mercenary (0.3.5) mini_portile2 (2.3.0) multi_json (1.11.2) - nokogiri (1.8.2) + nokogiri (1.8.5) mini_portile2 (~> 2.3.0) parallel (1.6.1) rake (10.4.2) From 937a179ab8b975cca0c4b549e1c68b611f67c5a2 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 6 Jun 2019 09:52:17 -0400 Subject: [PATCH 088/117] Content - Add Proof of Service section (#137) * Content - Add Proof of Service section - Describe v0.14.0 PoSe scoring * Add LLMQs and PoSe links to main page * Correct un-banning special tx type * Review updates --- _includes/devdoc/guide_dash_features.md | 58 +++++++++++++++++++++++++ _includes/templates/index.html | 2 + 2 files changed, 60 insertions(+) diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 88d4a34b..47723722 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -878,3 +878,61 @@ Note the following timeouts defined by Dash Core related to signing sessions: | MN Broadcast | 10 | Majority | _Deprecated by DIP3 (deterministic masternode list) in Dash Core 0.13._

    If a majority (6+) of nodes agree, a new `mnb` message is not required. {% endautocrossref %} + +### Proof of Service +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +The Proof of Service (PoSe) scoring system helps incentivize masternodes to +provide network services. Masternodes that neglect to participate receive an +increased PoSe score which eventually results in them being excluded from +masternode payment eligibility. + +The current PoSe scoring system is based on participation in the LLMQ DKG +process. This scoring system will expand over time to incorporate additional +service requirements in support of the future Dash Platform (Evolution) +functionality. + +| Service | Percent of Score | Requirement | +| ----------- | ---- | ------------------- | +| LLMQ DKG | 100% | Participate in the DKG process used to establish LLMQs. Requires exchanging messages with other quorum members. | + +**PoSe Score Calculation** + +As shown in the following table, the PoSe Score always decreases by 1 per block +as long as a masternode has not been banned. Once banned, the masternode can +only be restored by sending a Provider Update Service (ProUpServTx) special +transaction. + +| PoSe Parameter | Value | Example Value | +|-|-|-| +| Maximux PoSe Score | Number of registered masternodes | 5000 | +| PoSe Score Increases | Maximum PoSe Score * 2/3 | 3333 | +| PoSe Score Decreases | 1 (per block) | Always `1` | + +The current PoSe scoring algorithm increases the PoSe score by 66% of the +maximum score for each failed DKG session. Depending on timing, this allows for +no more than 2 failures for a masternode within a payment cycle (i.e a +number of blocks equal to the number of registered masternodes). + +For example, using the values from above with 5000 masternodes: + +- In the first 5000 block cycle, two DKG failures occur without the PoSe score exceeding the maximum. This happens since a sufficient number of blocks are mined prior to the second failure to drop the PoSe score below the threshold (`< 5000 - 3333`) that would result in banning. + +- In the second 5000 block cycle, the second DKG failure occurs too close to the first and results in the PoSe score exceeding the maximum limit. This results in the masternode receiving a PoSe Ban. + +| Payment Cycle | Block Number | Event | Score Change | PoSe Score | Masternode Status | +|-|-|-|-|-|-| +| 1 | 1 | DKG Failure (1) | +3333 | 3333 | Valid | +| 1 | 1734 | 1733 Blocks Mined | -1733 | 1600 | Valid | +| 1 | 1734 | DKG Failure (2) | +3333 | 4933 | Valid | +| 1 | 5000 | 3266 Blocks Mined | -3266 | 1667 | Valid | +| | | End of Payment Cycle 1| | | | +| 2 | 5500 | 500 Blocks Mined | -500 | 1167 | Valid | +| 2 | 5500 | DKG Failure (3) | +3333 | 4500 | Valid | +| 2 | 7000 | 1500 Blocks Mined | -1500 | 3000 | Valid | +| 2 | 7000 | DKG Failure (4) | +3333 | 6333 | PoSe Banned | +| 2 | 10000 | End of Payment Cycle 2 | - | 6333 | PoSe Banned | + +{% endautocrossref %} diff --git a/_includes/templates/index.html b/_includes/templates/index.html index aae38691..3b06ed9c 100644 --- a/_includes/templates/index.html +++ b/_includes/templates/index.html @@ -44,6 +44,8 @@ http://opensource.org/licenses/MIT.

    Masternode Sync Guide

    Governance Guide

    +

    Masternode Quorums Guide

    +

    Proof of Service Guide

    From a3642bf28c508f3531c85aa6e77a5acd6be37916 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 13 Jun 2019 13:44:12 -0400 Subject: [PATCH 089/117] Content - Add protocol version 70215 (#138) --- _includes/devdoc/ref_p2p_networking.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index c5835f0b..0eec298d 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -70,7 +70,8 @@ As of Dash Core 0.14.0, the most recent protocol version is 70214. | Version | Initial Release | Major Changes |---------|------------------------------------|-------------- -| 70214 | Dash Core 0.14.0.x
    (May 2019) | • Long-living Masternode Quorums
    • ChainLocks
    • PrivateSend improvements
    • Experimental LLMQ InstantSend
    • Bitcoin Core 0.15 backports +| 70215 | Dash Core 0.14.0.1
    (May 2019) | • None (Governance bugfix only) +| 70214 | Dash Core 0.14.0.0
    (May 2019) | • Long-living Masternode Quorums
    • ChainLocks
    • PrivateSend improvements
    • Experimental LLMQ InstantSend
    • Bitcoin Core 0.15 backports | 70213 | Dash Core 0.13.0.x
    (Jan 2019) | • Special Transactions
    • Deterministic Masternode List
    • Coinbase Special Transaction
    • Automatic InstantSend | 70210 | Dash Core 0.12.3.x
    (July 2018) | • Named Devnets
    • New signature format / Spork 6 addition
    • Bitcoin Core 0.13/0.14 backports
    • [BIP90][]: Buried deployments
    • [BIP147][]: NULLYDUMMY enforcement
    • [BIP152][] Compact Blocks
    • Transaction version increased to 2
    • Zero fee transactions removed
    • Pruning in Lite Mode | 70208 | Dash Core 0.12.2.x
    (Nov 2017) | • [DIP1][] (2MB blocks)
    • Fee reduction (10x)
    • InstantSend fix
    • PrivateSend improvements
    • _Experimental_ HD wallet
    • Local Masternode support removed From 1936f625872bf0dbddba9acb7be2525c603ac8eb Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 13 Jun 2019 14:55:03 -0400 Subject: [PATCH 090/117] Content - Bump current proto version (#139) --- _includes/devdoc/ref_p2p_networking.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 0eec298d..68e433b5 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -66,7 +66,7 @@ with the most recent versions listed first. (If you know of a protocol version that implemented a major change but which is not listed here, please [open an issue][docs issue].) -As of Dash Core 0.14.0, the most recent protocol version is 70214. +As of Dash Core 0.14.0, the most recent protocol version is 70215. | Version | Initial Release | Major Changes |---------|------------------------------------|-------------- From 1d7d3920a7d38afde04803b39de34cdef3f8fcb9 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 17 Jun 2019 15:23:57 -0400 Subject: [PATCH 091/117] RPC GObject updates (#140) * RPC - Update gobject check example * RPC - Update gobject count examples * RPC - Update gobject prepare - Add details for how to create the data-hex field * RPC - Update gobject submit * RPC - Update gobject deserialize (proposal) * RPC - Add data-hex note to prepare/submit * RPC - Update trigger deserialize example - Add missing SigningMasternode field --- .../devdoc/dash-core/rpcs/rpcs/gobject.md | 208 +++++++++--------- _includes/helpers/vars.md | 5 + 2 files changed, 111 insertions(+), 102 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md index 6b6323e5..2dddb774 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md @@ -4,6 +4,8 @@ http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/gobject.md" %} + + ##### GObject {% include helpers/subhead-links.md %} @@ -47,17 +49,14 @@ The `gobject check` RPC validates governance object data (_proposals only_). {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* {% highlight bash %} -dash-cli -testnet gobject check 5b5b2270726f706f73616c222c7b22656e645f65706f\ -6368223a2231353037343534383935222c226e616d65223a227465737470726f706f73616c5f\ -2d5f6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839\ -31353037323635383233222c227061796d656e745f61646472657373223a2279664e68484c4c\ -695936577a5a646a51766137324a64395134313468516578514c68222c227061796d656e745f\ -616d6f756e74223a2232222c2273746172745f65706f6368223a223135303732363538323322\ -2c2274797065223a312c2275726c223a2268747470733a2f2f7777772e6461736863656e7472\ -616c2e6f72672f702f746573745f70726f706f73616c5f31353037323635383233227d5d5d +dash-cli -testnet gobject check 7b22656e645f65706f6368223a3135363034353730\ +35352c226e616d65223a2274657374222c227061796d656e745f61646472657373223a22796\ +4354b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c227061\ +796d656e745f616d6f756e74223a352c2273746172745f65706f6368223a313536303435333\ +439302c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d227d {% endhighlight %} Result: @@ -102,17 +101,17 @@ The `gobject prepare` RPC prepares a governance object by signing and creating a - n: "`time`" t: "int64_t" p: "Required
    (exactly 1)" - d: "Create time" + d: "Create time (Unix epoch time)" {% enditemplate %} *Parameter #4---data* {% itemplate ntpd1 %} -- n: "`data`" +- n: "`data-hex`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "Object data (JSON object with governance details)" + d: "**Updated in Dash Core 0.14.0 to require all new proposals to use JSON serialization.**

    Object data (JSON object with governance details). Additional details regarding this are provided in an example below." {% enditemplate %} @@ -157,21 +156,55 @@ The `gobject prepare` RPC prepares a governance object by signing and creating a {% enditemplate %} -*Example from Dash Core 0.12.2* +**Details of the `data-hex` field:** + +The `data-hex` field is comprised of a JSON object as described in [GObject +Deserialize](#gobject-deserialize) which is serialized to hex. + +An example of a proposal JSON object is shown here: + +{% highlight json %} +{ + "end_epoch": 1560457055, + "name": "test", + "payment_address": "yd5KMREs3GLMe6mTJYr3YrH1juwNwrFCfB", + "payment_amount": 5, + "start_epoch": 1560453490, + "type": 1, + "url": "http://test.com" +} +{% endhighlight %} + +To serialize the object, first remove all spaces from the JSON object as shown below: + +{% highlight json %} +{"end_epoch":1560457055,"name":"test","payment_address":"yd5KMREs3GLMe6mTJYr3YrH1juwNwrFCfB","payment_amount":5,"start_epoch":1560453490,"type":1,"url":"http://test.com"} +{% endhighlight %} + +Then convert the string to its hex equivalent as shown below. This is what will +be used for the `data-hex` field of the `gobject prepare` command: {% highlight bash %} -dash-cli -testnet gobject prepare 0 1 1509548445 5b5b2270726f706f73616c222c7b22656e645f65706f6\ -368223a313530393638303337392c226e616d65223a22746573742d70726f706f73616c2d646\ -173682d646f6373222c227061796d656e745f61646472657373223a2279554b447a353950745\ -0577348596b56346537424337416263454c72346a52787371222c227061796d656e745f616d6\ -f756e74223a32302c2273746172745f65706f6368223a313530393637363831342c227479706\ -5223a312c2275726c223a2268747470733a2f2f646173682d646f63732e746573742f7465737\ -4227d5d5d +7b22656e645f65706f6368223a313536303435373035352c226e616d65223a2274657374222c\ +227061796d656e745f61646472657373223a227964354b4d52457333474c4d65366d544a5972\ +33597248316a75774e777246436642222c227061796d656e745f616d6f756e74223a352c2273\ +746172745f65706f6368223a313536303435333439302c2274797065223a312c2275726c223a\ +22687474703a2f2f746573742e636f6d227d +{% endhighlight %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +gobject prepare 0 1 1560449223 7b22656e645f65706f6368223a3135363034353730353\ +52c226e616d65223a2274657374222c227061796d656e745f61646472657373223a227964354\ +b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c227061796d6\ +56e745f616d6f756e74223a352c2273746172745f65706f6368223a313536303435333439302\ +c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d227d {% endhighlight %} Result (Collateral Transaction ID): {% highlight bash %} -061ec99eb641ffdeaa05a1a724a255103bebc445b15c6c8c028b19c08608496b +3fd758e7a5761bb07b2850b8ba432ef42c1ea80f0921d2eab0682697dda78262 {% endhighlight %} {% endautocrossref %} @@ -220,20 +253,20 @@ prepare`. *Parameter #4---data* {% itemplate ntpd1 %} -- n: "`data`" +- n: "`data-hex`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "Object data (JSON object with governance details)" + d: "**Updated in Dash Core 0.14.0 to require all new proposals to use JSON serialization.**

    Object data (JSON object with governance details). See [GObject Prepare](#gobject-prepare) for additional details about this field." {% enditemplate %} -*Parameter #5---transaction ID* +*Parameter #5---fee transaction ID* {% itemplate ntpd1 %} - n: "`data`" t: "string (hex)" p: "Required
    (exactly 1)" - d: "Collateral transaction ID" + d: "Fee transaction ID - required for all objects except triggers" {% enditemplate %} @@ -247,21 +280,21 @@ prepare`. {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* {% highlight bash %} -dash-cli -testnet gobject submit 0 1 1509548445 5b5b2270726f706f73616c222c7b22656e645f65706f6\ -368223a313530393638303337392c226e616d65223a22746573742d70726f706f73616c2d646\ -173682d646f6373222c227061796d656e745f61646472657373223a2279554b447a353950745\ -0577348596b56346537424337416263454c72346a52787371222c227061796d656e745f616d6\ -f756e74223a32302c2273746172745f65706f6368223a313530393637363831342c227479706\ -5223a312c2275726c223a2268747470733a2f2f646173682d646f63732e746573742f7465737\ -4227d5d5d 061ec99eb641ffdeaa05a1a724a255103bebc445b15c6c8c028b19c08608496b +dash-cli -testnet gobject submit 0 1 1560449223 7b22656e645f65706f6368223a3\ +13536303435373035352c226e616d65223a2274657374222c227061796d656e745f61646472\ +657373223a227964354b4d52457333474c4d65366d544a597233597248316a75774e7772464\ +36642222c227061796d656e745f616d6f756e74223a352c2273746172745f65706f6368223a\ +313536303435333439302c2274797065223a312c2275726c223a22687474703a2f2f7465737\ +42e636f6d227d \ +3fd758e7a5761bb07b2850b8ba432ef42c1ea80f0921d2eab0682697dda78262 {% endhighlight %} Result (Governance Object Hash): {% highlight bash %} -75e991c86ed5a50305e315e00c9a95fc74841bd97d58391071edc9ff206a0d3c +e353b2ab5f7e7cb24b95e00e153ec2a6339249672f18b8e8e144aa711678710d {% endhighlight %} {% endautocrossref %} @@ -276,7 +309,7 @@ The `gobject deserialize` RPC deserializes a governance object from a hex string *Parameter #1---object data (hex)* {% itemplate ntpd1 %} -- n: "`data-hex`" +- n: "`hex_data`" t: "string (hex)" p: "Required
    (exactly 1)" d: "The data (hex) of a governance object" @@ -298,11 +331,6 @@ deserialized. Examples are shown below for both proposal and trigger object type p: "Required
    (exactly 1)" d: "Array of governance objects" -- n: "→
    `proposal`" - t: "string (hex)" - p: "Required
    (exactly 1)" - d: "Proposal object" - - n: "→ →
    `end_epoch`" t: "string" p: "Required
    (exactly 1)" @@ -340,35 +368,27 @@ deserialized. Examples are shown below for both proposal and trigger object type {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* {% highlight bash %} -dash-cli -testnet gobject deserialize 5b5b2270726f706f73616c222c7b22656e645f6\ -5706f6368223a2231353037343534383935222c226e616d65223a227465737470726f706f7361\ -6c5f2d5f6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373\ -83931353037323635383233222c227061796d656e745f61646472657373223a2279664e68484c\ -4c695936577a5a646a51766137324a64395134313468516578514c68222c227061796d656e745\ -f616d6f756e74223a2232222c2273746172745f65706f6368223a223135303732363538323322\ -2c2274797065223a312c2275726c223a2268747470733a2f2f7777772e6461736863656e74726\ -16c2e6f72672f702f746573745f70726f706f73616c5f31353037323635383233227d5d5d +dash-cli -testnet gobject deserialize 7b22656e645f65706f6368223a313536303435\ +373035352c226e616d65223a2274657374222c227061796d656e745f61646472657373223a22\ +7964354b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c2270\ +61796d656e745f616d6f756e74223a352c2273746172745f65706f6368223a31353630343533\ +3439302c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d227d {% endhighlight %} Result: {% highlight json %} -[ - [ - "proposal", - { - "end_epoch":"1507454895", - "name":"testproposal_-_abcdefghijklmnopqrstuvwxyz01234567891507265823", - "payment_address":"yfNhHLLiY6WzZdjQva72Jd9Q414hQexQLh", - "payment_amount":"2", - "start_epoch":"1507265823", - "type":1, - "url":"https://www.dashcentral.org/p/test_proposal_1507265823" - } - ] -] +{ + "end_epoch": 1560457055, + "name": "test", + "payment_address": "yd5KMREs3GLMe6mTJYr3YrH1juwNwrFCfB", + "payment_amount": 5, + "start_epoch": 1560453490, + "type": 1, + "url": "http://test.com" +} {% endhighlight %} @@ -383,11 +403,6 @@ Result: p: "Required
    (exactly 1)" d: "Array of governance objects" -- n: "→
    `trigger`" - t: "string (hex)" - p: "Required
    (exactly 1)" - d: "Trigger object" - - n: "→ →
    `event_block_height`" t: "int" p: "Required
    (exactly 1)" @@ -415,38 +430,27 @@ Result: {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* {% highlight bash %} -dash-cli -testnet gobject deserialize 5b5b2274726967676572222c207b226576656e7\ -45f626c6f636b5f686569676874223a2031383435362c20227061796d656e745f616464726573\ -736573223a20227952465968665a4a4258567a3861696850365a7166714174374245316256644\ -676567c79544c795070554668696768355270787a72695a6362474c5972527836687959455022\ -2c20227061796d656e745f616d6f756e7473223a2022322e31323334353637387c322e3030303\ -030303030222c202270726f706f73616c5f686173686573223a20223632623161336564633938\ -37626432313134636439323263336339376166643039383339353534313862313730316330666\ -131353262616662386131313735667c3138376337353166653631336434386139623331316161\ -34383833383635666166396234336333623931333433333438326636636632343763313835656\ -13037222c202274797065223a20327d5d5d +dash-cli -testnet gobject deserialize 7b226576656e745f626c6f636b5f68656967687\ +4223a203131393539322c20227061796d656e745f616464726573736573223a20227954686d6e\ +75565a316765516e79776f456147627079333362695435473573587a62222c20227061796d656\ +e745f616d6f756e7473223a2022312e3335393631393331222c202270726f706f73616c5f6861\ +73686573223a20223836333966636464653131626432373032373663396330333564366435346\ +3653962393138323465366466373532636164376464646331616532663734386435222c202274\ +797065223a20327d {% endhighlight %} Result (wrapped): {% highlight json %} -[ - [ - "trigger", - { - "event_block_height":18456, - "payment_addresses":"yRFYhfZJBXVz8aihP6ZqfqAt7BE1bVdFvV\ - |yTLyPpUFhigh5RpxzriZcbGLYrRx6hyYEP", - "payment_amounts":"2.12345678|2.00000000", - "proposal_hashes":"62b1a3edc987bd2114cd922c3c97afd0983955418b1701c0fa\ - 152bafb8a1175f|187c751fe613d48a9b311aa4883865faf9b43c3b913433482f6c\ - f247c185ea07", - "type":2 - } - ] -] +{ + "event_block_height": 119592, + "payment_addresses": "yThmnuVZ1geQnywoEaGbpy33biT5G5sXzb", + "payment_amounts": "1.35961931", + "proposal_hashes": "8639fcdde11bd270276c9c035d6d54ce9b91824e6df752cad7dddc1ae2f748d5", + "type": 2 +} {% endhighlight %} {% endautocrossref %} @@ -511,7 +515,7 @@ The `gobject count` RPC returns the count of governance objects and votes. {% enditemplate %} -*Example from Dash Core 0.12.3 (mode: `json`/default)* +*Example from Dash Core 0.14.0 (mode: `json`/default)* {% highlight bash %} dash-cli -testnet gobject count @@ -520,12 +524,12 @@ dash-cli -testnet gobject count Result (wrapped): {% highlight json %} { - "objects_total": 177, - "proposals": 177, + "objects_total": 3, + "proposals": 3, "triggers": 0, "other": 0, - "erased": 5, - "votes": 9680 + "erased": 4, + "votes": 18 } {% endhighlight %} @@ -542,7 +546,7 @@ Result (wrapped): {% enditemplate %} -*Example from Dash Core 0.12.3 (mode: `all`)* +*Example from Dash Core 0.14.0 (mode: `all`)* {% highlight bash %} dash-cli -testnet gobject count all @@ -550,8 +554,8 @@ dash-cli -testnet gobject count all Result (wrapped): {% highlight text %} -Governance Objects: 177 (Proposals: 177, Triggers: 0, Watchdogs: 0/0, \ - Other: 0; Erased: 5), Votes: 9680 +Governance Objects: 177 (Proposals: 177, Triggers: 0, Other: 0; Erased: 5), \ +Votes: 9680 {% endhighlight %} {% endautocrossref %} diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index 10695d64..7461f16e 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -395,6 +395,11 @@ NOT IN DASH p: "Required
    (exactly 1)" d: "Object creation time as Unix epoch time" +- n: "→ →
    `SigningMasternode`" + t: "string (hex)" + p: "Optional
    (0 or 1)" + d: "Signing masternode's vin (only present in triggers)" + - n: "→ →
    `AbsoluteYesCount`" t: "number" p: "Required
    (exactly 1)" From 3f6f7a7dd7d59f295f0a101a8333b9fb538486dc Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 26 Jun 2019 09:38:26 -0400 Subject: [PATCH 092/117] Rpc/getreceivedbyaddress note (#141) * RPC - getreceivedbyaddress clarification * RPC - getreceivedbyaddress --- _includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md index 502c2267..79b6b466 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md @@ -15,6 +15,8 @@ http://opensource.org/licenses/MIT. *Requires wallet support.* +{{WARNING_ICON}} Note: This RPC only returns a balance for addresses contained in the local wallet. + The `getreceivedbyaddress` RPC {{summary_getReceivedByAddress}} *Parameter #1---the address* @@ -23,7 +25,7 @@ The `getreceivedbyaddress` RPC {{summary_getReceivedByAddress}} - n: "Address" t: "string" p: "Required
    (exactly 1)" - d: "The address whose transactions should be tallied" + d: "__Only works for addresses contained in the local wallet__

    The address whose transactions should be tallied" {% enditemplate %} From c3527c18ab469b9d19d7c7b894efb30bc096006b Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 4 Jul 2019 10:28:13 -0400 Subject: [PATCH 093/117] Config - Update version in Doxyfile to 0.14.0.2 (#142) --- doxygen/Doxyfile-dashdocs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen/Doxyfile-dashdocs b/doxygen/Doxyfile-dashdocs index b4513970..4174ebd7 100644 --- a/doxygen/Doxyfile-dashdocs +++ b/doxygen/Doxyfile-dashdocs @@ -41,7 +41,7 @@ PROJECT_NAME = "Dash Core" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.14.0.1 +PROJECT_NUMBER = 0.14.0.2 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a From d1db8ba12de25063b11f5f8080cc6a851d50101f Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 8 Aug 2019 12:52:05 -0400 Subject: [PATCH 094/117] V0.14.1 P2P deprecations (#144) * P2P - Remove Alert guide info and code xref * P2P - Move alert message to deprecated section * Content - Remove misbehave based on alert * P2P - Update IS related inventories (changed due to LLQM-IS) * P2P - Move ix and txlvote messages to deprecated section * P2P - Add warning icon for deprecated messages * Content - remove bad link * RPC - Remove alert categoryfrom debug list - Also remove previously eliminated masternode category * P2P - Remove messages deprecated in 0.12.1 * P2P - Remove messages deprecated in 0.14.0 * Move alert, ix, and txlvote to deprecated section of config.yml * Remove deprecated messages from references --- _autocrossref.yaml | 12 - _config.yml | 13 +- _includes/devdoc/dash-core/rpcs/rpcs/debug.md | 4 +- _includes/devdoc/guide_p2p_network.md | 24 - _includes/devdoc/ref_p2p_networking.md | 727 ++++-------------- _includes/references.md | 7 - 6 files changed, 140 insertions(+), 647 deletions(-) diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 54f5c341..5d9e6f50 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -41,8 +41,6 @@ DER-formatted: der '`dsi` messages': dsi message '`dsq` message': dsq message '`dsq` messages': dsq message -'`dseg` message': dseg message -'`dseg` messages': dseg message '`dss` message': dss message '`dss` messages': dss message '`dssu` message': dssu message @@ -119,18 +117,8 @@ micropayment channel: micropayment channels: micropayment channel '`mnauth` message': mnauth message '`mnauth` messages': mnauth message -'`mnb` message': mnb message -'`mnb` messages': mnb message -'`mnget` message': mnget message -'`mnget` messages': mnget message '`mnlistdiff` message': mnlistdiff message '`mnlistdiff` messages': mnlistdiff message -'`mnp` message': mnp message -'`mnp` messages': mnp message -'`mnv` message': mnv message -'`mnv` messages': mnv message -'`mnw` message': mnw message -'`mnw` messages': mnw message '`MSG_BLOCK`': msg_block '`MSG_FILTERED_BLOCK`': msg_filtered_block '`MSG_TX`': msg_tx diff --git a/_config.yml b/_config.yml index 04b81eb0..872f1e83 100644 --- a/_config.yml +++ b/_config.yml @@ -505,7 +505,6 @@ devsearches: ## Bitcoin P2P Protocol messages documented on Bitcoin.org "P2P Messages": - "addr": "/en/developer-reference#addr" - - "alert": "/en/developer-reference#alert" - "block": "/en/developer-reference#block" - "blocktxn": "/en/developer-reference#blocktxn" - "cmpctblock": "/en/developer-reference#cmpctblock" @@ -541,8 +540,6 @@ devsearches: # Dash - instantsend - "clsig": "/en/developer-reference#clsig" - "islock": "/en/developer-reference#islock" - - "ix": "/en/developer-reference#ix" - - "txlvote": "/en/developer-reference#txlvote" # Dash - privatesend - "dsa": "/en/developer-reference#dsa" @@ -578,13 +575,9 @@ devsearches: - "govsync": "/en/developer-reference#govsync" # Dash - deprecated - - "dseg": "/en/developer-reference#dseg" - - "mnb": "/en/developer-reference#mnb" - - "mnget": "/en/developer-reference#mnget" - - "mnp": "/en/developer-reference#mnp" - - "mnv": "/en/developer-reference#mnv" - - "mnw": "/en/developer-reference#mnw" - - "mnwb": "/en/developer-reference#mnwb" + - "alert": "/en/developer-reference#alert" + - "ix": "/en/developer-reference#ix" + - "txlvote": "/en/developer-reference#txlvote" donation_banner: address: 1GwV7fPX97hmavc6iNrUZUogmjpLPrPFoE diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/debug.md b/_includes/devdoc/dash-core/rpcs/rpcs/debug.md index e2c7ff71..df8de10b 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/debug.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/debug.md @@ -20,10 +20,10 @@ The `debug` RPC {{summary_debug}} - n: "Debug category" t: "string" p: "Required
    (1 or more)" - d: "The debug category to activate. Use a `+` to specify multiple categories. Categories will be one of the following:
    • `0` - Disables all categories
    • `1` - Enables all categories
    • `addrman`
    • `alert`
    • `bench`
    • `cmpctblock`
    • `coindb`
    • `db`
    • `http`
    • `leveldb`
    • `libevent`
    • `lock`
    • `mempool`
    • `mempoolrej`
    • `net`
    • `proxy`
    • `prune`
    • `qt`
    • `rand`
    • `reindex`
    • `rpc`
    • `selectcoins`
    • `tor`
    • `zmq`
    • `dash` (all subcategories)

    The `dash` sub-categories can be enabled individually:
    • `chainlocks`
    • `gobject`
    • `instantsend`
    • `keepass`
    • `llmq`
    • `llmq-dkg`
    • `llmq-sigs`
    • `masternode`
    • `mnpayments`
    • `mnsync`
    • `privatesend`
    • `spork`


    Note: No error will be thrown even if the specified category doesn't match any of the above" + d: "The debug category to activate. Use a `+` to specify multiple categories. Categories will be one of the following:
    • `0` - Disables all categories
    • `1` - Enables all categories
    • `addrman`
    • `bench`
    • `cmpctblock`
    • `coindb`
    • `db`
    • `http`
    • `leveldb`
    • `libevent`
    • `lock`
    • `mempool`
    • `mempoolrej`
    • `net`
    • `proxy`
    • `prune`
    • `qt`
    • `rand`
    • `reindex`
    • `rpc`
    • `selectcoins`
    • `tor`
    • `zmq`
    • `dash` (all subcategories)

    The `dash` sub-categories can be enabled individually:
    • `chainlocks`
    • `gobject`
    • `instantsend`
    • `keepass`
    • `llmq`
    • `llmq-dkg`
    • `llmq-sigs`
    • `mnpayments`
    • `mnsync`
    • `privatesend`
    • `spork`


    Note: No error will be thrown even if the specified category doesn't match any of the above" {% enditemplate %} -*Example from Dash Core 0.12.3* +*Example from Dash Core 0.14.1* {% highlight bash %} dash-cli -testnet debug "net+mempool" diff --git a/_includes/devdoc/guide_p2p_network.md b/_includes/devdoc/guide_p2p_network.md index 057acaeb..4248181c 100644 --- a/_includes/devdoc/guide_p2p_network.md +++ b/_includes/devdoc/guide_p2p_network.md @@ -605,7 +605,6 @@ information. If a peer gets a banscore above the `-banscore=` threshold | Net | Header List Size | 20 | More than `MAX_HEADERS_RESULTS` (2000) headers received (`headers` message) | Net | Header List Sequence | 20 | Non-continous headers sequence received (`headers` message) | Net | Invalid Block | **Varies** | Invalid block header received from peer -| Net | Invalid/Expired Alert | 10 | Invalid or expired alert received (`alert` message) | Net | Bloom Filter Size | **100** | Maximum script element size (520) exceeded (`filterload` message or `filteradd` message) | Net | MN List Diff | 1 | Failed to get masternode list diff (`getmnlistd` message) | Net | Unrequested MN List Diff | **100** | Peer provided an unrequested masternode list diff (`mnlistdiff` message) @@ -636,27 +635,4 @@ information. If a peer gets a banscore above the `-banscore=` threshold | Spork | Signature | **100** | Peer relayed a spork with an invalid signature (`spork` message) -{% endautocrossref %} - -### Alerts -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -*Removed in Bitcoin Core 0.13.0. Retained in Dash Core (see [PR1326](https://github.com/dashpay/dash/pull/1326)).* - -In case of a bug or attack, the Dash Core developers can issue an alert via the -Dash network. Alerts will be displayed by the Dash Core UI. Users can also -check the error field of the `getinfo` RPC results to get currently active -alerts for their specific version of Dash Core or use the `-alertnotify` command -line parameter to specify a custom command to execute when an alert is received. - -These messages are aggressively broadcast using the `alert` message, being sent -to each peer upon connect for the duration of the alert. These messages are -signed by a specific ECDSA private key that only a small number of developers -control. - -**Resource:** More details about the structure of `alert` messages and a -complete list of message types can be found in the [P2P reference section][section P2P reference]. - {% endautocrossref %} diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 68e433b5..c3bbef32 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -159,8 +159,7 @@ The currently-available type identifiers are: | 1 | [`MSG_TX`][msg_tx]{:#term-msg_tx}{:.term} | The hash is a TXID. | 2 | [`MSG_BLOCK`][msg_block]{:#term-msg_block}{:.term} | The hash is of a block header. | 3 | [`MSG_FILTERED_BLOCK`][msg_filtered_block]{:#term-msg_filtered_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 `merkleblock` message rather than a `block` message (but this only works if a bloom filter was previously configured). **Only for use in `getdata` messages.** -| 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. +| 4 | [`MSG_LEGACY_TXLOCK_REQUEST`][msg_txlock_request]{:#term-msg_txlock_request}{:.term} | `MSG_TXLOCK_REQUEST` prior to Dash Core 0.14.1. The hash is an Instant Send transaction lock request. Transactions received this way are automatically converted to a standard `tx` message as of Dash Core 0.14.1. | 6 | [`MSG_SPORK`][msg_spork]{:#term-msg_spork}{:.term} | The hash is Spork ID. | 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. @@ -179,6 +178,7 @@ The deprecated type identifiers are: | Type Identifier | Name | Description |-----------------|-------------------------------------------------------------------------------|--------------- +| 5 | [`MSG_TXLOCK_VOTE`][msg_txlock_vote]{:#term-msg_txlock_vote}{:.term} | **Deprecated in 0.14.1**

    The hash is an Instant Send transaction vote. | 7 | [`MSG_MASTERNODE_PAYMENT_VOTE`][msg_masternode_payment_vote]{:#term-msg_masternode_payment_vote}{:.term} | **Deprecated in 0.14.0**

    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**

    The hash is a Masternode Payment Block. | 8 | `MSG_MASTERNODE_SCANNING_ERROR` | Replaced by `MSG_MASTERNODE_PAYMENT_BLOCK` @@ -1127,113 +1127,6 @@ d91f4854 ........................... Epoch time: 1414012889 {% endautocrossref %} -#### Alert -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -*Added in protocol version 311.* -*Removed by Bitcoin in protocol version 70013, but retained by Dash.* - -The `alert` message warns nodes of problems that may affect them or the -rest of the network. Each `alert` message is signed using a key controlled -by respected community members, mostly Dash Core developers. - -To ensure all nodes can validate and forward `alert` messages, -encapsulation is used. Developers create an alert using the data -structure appropriate for the versions of the software they want to -notify; then they serialize that data and sign it. The serialized data -and its signature make up the outer `alert` message---allowing nodes -which don't understand the data structure to validate the signature and -relay the alert to nodes which do understand it. The nodes which -actually need the message can decode the serialized data to access the -inner `alert` message. - -The outer `alert` message has four fields: - -| Bytes | Name | Data Type | Description -|-------------|-----------------|------------------|------------- -| *Variable* | alert bytes | compactSize uint | The number of bytes in following alert field. -| *Variable* | alert | uchar | The serialized alert. See below for a description of the current alert format. -| *Variable* | signature bytes | compactSize uint | The number of bytes in the following signature field. -| *Variable* | signature | uchar | A DER-encoded ECDSA (secp256k1) signature of the alert signed with the developer's alert key. - -Although designed to be easily upgraded, the format of the inner -serialized alert has not changed since the `alert` message was first -introduced in protocol version 311. - -| Bytes | Name | Data Type | Description -|----------|-------------------|---------------------------|------------- -| 4 | version | int32_t | Alert format version. Version 1 from protocol version 311 through at least protocol version 70002. -| 8 | relayUntil | int64_t | The time beyond which nodes should stop relaying this alert. Unix epoch time format. -| 8 | expiration | int64_t | The time beyond which this alert is no longer in effect and should be ignored. Unix epoch time format. -| 4 | ID | int32_t | A unique ID number for this alert. -| 4 | cancel | int32_t | All alerts with an ID number less than or equal to this number should be canceled: deleted and not accepted in the future. -| *Varies* | setCancel count | compactSize uint | The number of IDs in the following setCancel field. May be zero. -| *Varies* | setCancel | int32_t | Alert IDs which should be canceled. Each alert ID is a separate int32_t number. -| 4 | minVer | int32_t | This alert only applies to protocol versions greater than or equal to this version. Nodes running other protocol versions should still relay it. -| 4 | maxVer | int32_t | This alert only applies to protocol versions less than or equal to this version. Nodes running other protocol versions should still relay it. -| *Varies* | user\_agent count | compactSize uint | The number of user agent strings in the following setUser\_agent field. May be zero. -| *Varies* | setUser\_agent | compactSize uint + string | If this field is empty, it has no effect on the alert. If there is at least one entry is this field, this alert only applies to programs with a user agent that exactly matches one of the strings in this field. Each entry in this field is a compactSize uint followed by a string---the uint indicates how many bytes are in the following string. This field was originally called setSubVer; since BIP14, it applies to user agent strings as defined in the `version` message. -| 4 | priority | int32_t | Relative priority compared to other alerts. -| *Varies* | comment bytes | compactSize uint | The number of bytes in the following comment field. May be zero. -| *Varies* | comment | string | A comment on the alert that is not displayed. -| *Varies* | statusBar bytes | compactSize uint | The number of bytes in the following statusBar field. May be zero. -| *Varies* | statusBar | string | The alert message that is displayed to the user. -| *Varies* | reserved bytes | compactSize uint | The number of bytes in the following reserved field. May be zero. -| *Varies* | reserved | string | Reserved for future use. Originally called RPC Error. - -The annotated hexdump below shows an `alert` message. (The message -header has been omitted.) - - - -{% highlight text %} -73 ................................. Bytes in encapsulated alert: 115 -01000000 ........................... Version: 1 -3766404f00000000 ................... RelayUntil: 1329620535 -b305434f00000000 ................... Expiration: 1330917376 - -f2030000 ........................... ID: 1010 -f1030000 ........................... Cancel: 1009 -00 ................................. setCancel count: 0 - -10270000 ........................... MinVer: 10000 -48ee0000 ........................... MaxVer: 61000 -00 ................................. setUser_agent bytes: 0 -64000000 ........................... Priority: 100 - -00 ................................. Bytes In Comment String: 0 -46 ................................. Bytes in StatusBar String: 70 -53656520626974636f696e2e6f72672f -666562323020696620796f7520686176 -652074726f75626c6520636f6e6e6563 -74696e67206166746572203230204665 -627275617279 ....................... Status Bar String: "See [...]" -00 ................................. Bytes In Reserved String: 0 - -47 ................................. Bytes in signature: 71 -30450221008389df45f0703f39ec8c1c -c42c13810ffcae14995bb648340219e3 -53b63b53eb022009ec65e1c1aaeec1fd -334c6b684bde2b3f573060d5b70c3a46 -723326e4e8a4f1 ..................... Signature -{% endhighlight %} - -**Alert key compromise:** Dash Core's source code defines a -particular set of alert parameters that can be used to notify users that -the alert signing key has been compromised and that they should upgrade -to get a new alert public key. Once a signed alert containing those -parameters has been received, no other alerts can cancel or override it. -See the `ProcessAlert()` function in the Dash Core [alert.cpp][core -alert.cpp] source code for the parameters of this message. - -{% endautocrossref %} - - #### FilterAdd {% include helpers/subhead-links.md %} @@ -2066,71 +1959,6 @@ a11e5e7930deccc3e11a931fc9524f06 ........... LLMQ BLS Signature (96 bytes) {% endautocrossref %} -#### ix -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -The `ix` message (transaction lock request) has the same structure as the `tx` message. -The masternode network responds with `txlvote` messages if the transaction inputs -can be locked. - -{% endautocrossref %} - - -#### txlvote -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -The `txlvote` message ([transaction lock vote][msg_txlock_vote]) -is sent by masternodes to indicate approval of a transaction lock request -`ix` message. - -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 32 | txHash | uint256 | Required | TXID of the transaction to lock -| 36 | outPoint | outpoint | Required | The unspent outpoint to lock in this transaction -| 36 | outpointMasternode | outpoint | Required | The outpoint of the masternode which is signing the vote -| 32 | quorumModifierHash | uint256 | Required | *Added in protocol version 70213. Only present when Spork 15 is active.*

    -| 32 | masternodeProTxHash | uint256 | Required | *Added in protocol version 70213. Only present when Spork 15 is active.*

    The proTxHash of the DIP3 masternode which is signing the vote -| 96 | vchMasternodeSignature | char[] | Required | Masternode BLS signature - -The following annotated hexdump shows a `txlvote` message. (The -message header has been omitted.) - -{% highlight text %} -84a27bb879f316482598fe65b0b51544 -e85490d85fc36af1c293e186da373c02 ..... TXID - -Outpoint to lock -| 4c1e6318bab4f9284d3bc0e49ec7fe76 -| 1e9c914b8ea0bcac4563005daa451221 ... Outpoint TXID -| 00000000 ........................... Outpoint index number: 0 - -Masternode Outpoint -| 5d02f07c7318411e41fdd4be9f1e5ece -| 16d680cfe318306087edc8fb205e507b ... Outpoint TXID -| 01000000 ........................... Outpoint index number: 1 - -b62cb5007704d2db8595d5b31cfb7cb0 -8d7e530c16a7597e1db4430a00000000 ..... Quorum Modifier hash - -569abbea4ab45f36dd059c44f1dc0804 -f3f13071379c2f418d3637fb548c4159 ..... Masternode ProRegTx hash - -60 ................................... Signature length: 96 - -0b0b97ec14fbc1f12566c3a90ed113e4 -e9c5ee6cdcf2fe2171e4b5f387286146 -a0632a250d64ea507ce5e1d1f1983aae -0b70e568ad2856a0cc13008001c6d0f3 -5bdeb380f6aba0c54663a3b5e2d86d44 -305c2e5d855c72588ffb0e8e2a36482c ..... Masternode BLS Signature -{% endhighlight %} - -{% endautocrossref %} - ### PrivateSend Messages {% include helpers/subhead-links.md %} @@ -3869,462 +3697,177 @@ The following network messages have been deprecated and should no longer be used {% endautocrossref %} -#### dseg +#### Alert {% include helpers/subhead-links.md %} {% autocrossref %} -![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 +![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.1 -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. +*Added in protocol version 311.* +*Removed by Bitcoin in protocol version 70013, but retained by Dash until 0.14.1.* -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. +The `alert` message warns nodes of problems that may affect them or the +rest of the network. Each `alert` message is signed using a key controlled +by respected community members, mostly Dash Core developers. -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint | outPoint | Required | Request options:
    `All Entries` - empty txIn
    `Single Entry` - Masternode's unspent outpoint which is holding 1000 DASH +To ensure all nodes can validate and forward `alert` messages, +encapsulation is used. Developers create an alert using the data +structure appropriate for the versions of the software they want to +notify; then they serialize that data and sign it. The serialized data +and its signature make up the outer `alert` message---allowing nodes +which don't understand the data structure to validate the signature and +relay the alert to nodes which do understand it. The nodes which +actually need the message can decode the serialized data to access the +inner `alert` message. +The outer `alert` message has four fields: -{% 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 %} +| Bytes | Name | Data Type | Description +|-------------|-----------------|------------------|------------- +| *Variable* | alert bytes | compactSize uint | The number of bytes in following alert field. +| *Variable* | alert | uchar | The serialized alert. See below for a description of the current alert format. +| *Variable* | signature bytes | compactSize uint | The number of bytes in the following signature field. +| *Variable* | signature | uchar | A DER-encoded ECDSA (secp256k1) signature of the alert signed with the developer's alert key. -The following annotated hexdump shows a `dseg` message requesting **all** -masternodes. (The message header has been omitted.) +Although designed to be easily upgraded, the format of the inner +serialized alert has not changed since the `alert` message was first +introduced in protocol version 311. -{% highlight text %} -Masternode Unspent Outpoint -| 00000000000000000000000000000000 -| 00000000000000000000000000000000 ......... Outpoint TXID -| ffffffff ................................. Outpoint index number: 0 -{% endhighlight %} +| Bytes | Name | Data Type | Description +|----------|-------------------|---------------------------|------------- +| 4 | version | int32_t | Alert format version. Version 1 from protocol version 311 through at least protocol version 70002. +| 8 | relayUntil | int64_t | The time beyond which nodes should stop relaying this alert. Unix epoch time format. +| 8 | expiration | int64_t | The time beyond which this alert is no longer in effect and should be ignored. Unix epoch time format. +| 4 | ID | int32_t | A unique ID number for this alert. +| 4 | cancel | int32_t | All alerts with an ID number less than or equal to this number should be canceled: deleted and not accepted in the future. +| *Varies* | setCancel count | compactSize uint | The number of IDs in the following setCancel field. May be zero. +| *Varies* | setCancel | int32_t | Alert IDs which should be canceled. Each alert ID is a separate int32_t number. +| 4 | minVer | int32_t | This alert only applies to protocol versions greater than or equal to this version. Nodes running other protocol versions should still relay it. +| 4 | maxVer | int32_t | This alert only applies to protocol versions less than or equal to this version. Nodes running other protocol versions should still relay it. +| *Varies* | user\_agent count | compactSize uint | The number of user agent strings in the following setUser\_agent field. May be zero. +| *Varies* | setUser\_agent | compactSize uint + string | If this field is empty, it has no effect on the alert. If there is at least one entry is this field, this alert only applies to programs with a user agent that exactly matches one of the strings in this field. Each entry in this field is a compactSize uint followed by a string---the uint indicates how many bytes are in the following string. This field was originally called setSubVer; since BIP14, it applies to user agent strings as defined in the `version` message. +| 4 | priority | int32_t | Relative priority compared to other alerts. +| *Varies* | comment bytes | compactSize uint | The number of bytes in the following comment field. May be zero. +| *Varies* | comment | string | A comment on the alert that is not displayed. +| *Varies* | statusBar bytes | compactSize uint | The number of bytes in the following statusBar field. May be zero. +| *Varies* | statusBar | string | The alert message that is displayed to the user. +| *Varies* | reserved bytes | compactSize uint | The number of bytes in the following reserved field. May be zero. +| *Varies* | reserved | string | Reserved for future use. Originally called RPC Error. -The following annotated hexdump shows a `dseg` message requesting a specific -masternode. (The message header has been omitted.) - -{% highlight text %} -Masternode Unspent Outpoint -| 7fe33a2901aa654598ae0af572d4fbec -| ee97af2d0276f189d177dee5848ef3da ......... Outpoint TXID -| 00000000 ................................. Outpoint index number: 0 -{% endhighlight %} - -{% endautocrossref %} - -#### mnb -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 - -The `mnb` message is sent whenever a masternode comes online or a client is -syncing. The masternode will send this message which describes the masternode -entry and how to validate messages from it. - -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 36 | outPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message -| # | addr | CService | Required | IPv4 address of the masternode -| 33-65 | pubKeyCollateralAddress | CPubKey | Required | CPubKey of the main 1000 DASH unspent outpoint. Length determined by if it is a compressed public key or not. -| 33-65 | pubKeyMasternode | CPubKey | Required | CPubKey of the secondary signing key (For all messaging other than the announce message). Length determined by if it is a compressed public key or not. -| 66 | sig | char[] | Required | Signature of this message verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes)) -| 8 | sigTime | int64_t | Required | Time which the signature was created -| 4 | nProtocolVersion | int | Required | The protocol version of the masternode -| # | lastPing | `mnp` message | Required | The last known ping of the masternode -| 8 | nLastDsq | int64_t | Deprecated | **Removed in Dash Core 0.12.3.0**

    The last time the masternode sent a `dsq` message (for mixing) (DEPRECATED) - -The following annotated hexdump shows a `mnb` message. (The -message header has been omitted and the actual IP address has been replaced -with a RFC5737 reserved IP address.) - -{% highlight text %} -Masternode Unspent Outpoint -| 3fbc7d4a8f68ba6ecb02a8db34d1f5b6 -| 2dc105f0b5c3505243435cf815d02394 ......... Outpoint TXID -| 01000000 ................................. Outpoint index number: 1 - -Masternode Address -| 00000000000000000000ffffc0000233 ......... IP Address: ::ffff:192.0.2.51 -| 270f ..................................... Port: 9999 - -Collateral Public Key -| 21 ....................................... Key Size: 33 -| 02 ....................................... Key Type: 2 - Compressed (even) -| 02a47a6845936a4199e126d35399dd09 -| 97c1aaf89a3fe70d474c53f29624a43a5b ....... Public Key - -Masternode Public Key -| 41 ....................................... Key Size: 65 -| 04 ....................................... Key Type: 4 - Uncompressed -| 04da252243305d604cab90480880af4a -| b5cea3a934c91393452e9b7b4c97a87e -| 198bc809916ac2c27436a1db9c28d0aa -| bfefec4dc3c2193835fd9a56c31150c633 ....... Public Key - -Message Signature -| 41 ....................................... Bytes in signature: 65 -| 1fb80f9ba8c110835e4a7dd4c8deccd7 -| 89027663d00084d9a99ef579a9b5601f -| 40727b27e91aab2897a078f63976ae25 -| 3ff8f01e56862e953278f432530f6ee080 ....... Signature - -4728ef5800000000 ........................... Sig. Timestamp: 2017-04-13 07:27:03 UTC - -3e120100 ................................... Protocol Version: 70206 - -Masternode Ping Message -| Masternode Unspent Outpoint -| | 3fbc7d4a8f68ba6ecb02a8db34d1f5b6 -| | 2dc105f0b5c3505243435cf815d02394 ........ Outpoint TXID -| | 01000000 ................................ Outpoint index number: 1 -| -| 94fc0fad18b166c2fedf1a5dc0511372 -| 26c353d57e086737ff05000000000000 ......... Chaintip block hash -| -| 66c1a95900000000 ......................... Sig. Timestamp: 2017-10-01 21:21:58 UTC -| -| Masternode Signature -| | 41 ..................................... Bytes in signature: 65 -| | 1b3017c49a03e2d77083f3c92a8c2e4c -| | d815d068b6256498a719e3cb6a34f774 -| | ec6434cfcbb7a5a51704350a05903287 -| | eecc82e6b40ac2fcfa2df29ddaa6c4fc -| | b8 ..................................... Masternode Signature -{% endhighlight %} - -{% endautocrossref %} - -#### mnget -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 - -The `mnget` message requests masternode payment sync. The response to an -`mnget` message is `mnw` message inventories. Masternodes ignore this request if -they are not fully synced. - -{% highlight text %} -Note: Dash Core limits how frequently a masternode payment sync can be -requested. Frequent requests will result in the node being banned. -{% endhighlight %} - -There is no payload in a `mnget` message. See the [message header -section][section message header] for an example of a message without a payload. - -![Warning icon](/img/icons/icon_warning.svg) **The following information is provided for historical reference only.** - -In protocol versions <=70208, the `mnget` message has a payload consisting of an -integer value requesting a specific number of payment votes. In protocol versions ->70208, the `mnget` message has no payload. - -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 4 | nMnCount | int | Deprecated | _Deprecated in Dash Core 0.12.3_

    Number of masternode payment votes to request - -The following annotated hexdump shows a pre-0.12.3 `mnget` message. (The -message header has been omitted.) - -{% highlight text %} -a8170000 ................................... Count: 6056 -{% endhighlight %} - -{% endautocrossref %} - -#### mnp -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 - -The `mnp` message is sent by masternodes every few minutes to ping the network -with a message that propagates across the whole network. Dash Core currently -uses a minimum masternode ping time of 10 minutes. - -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message -| 32 | blockHash | uint256 | Required | Block hash from 12 blocks ago (current chaintip minus 12). This offset allows nodes to be slightly out of sync. -| 8 | sigTime | int64_t | Required | Time which the signature was created -| 66* | vchSig | char[] | Required | Signature of this message by masternode - verifiable via pubKeyMasternode (66 bytes in most cases. Length (1 byte) + Signature (65 bytes)) -| 1 | fSentinelIsCurrent | bool | Required | True if last sentinel ping was current -| 4 | nSentinelVersion | uint32_t | Required | The version of Sentinel running on the masternode which is signing the message -| 4 | nDaemonVersion | uint32_t | Required | The version of dashd on the masternode which is signing the message (i.e. CLIENT_VERSION) - -The following annotated hexdump shows a `mnp` message. (The -message header has been omitted.) - -{% highlight text %} -Masternode Unspent Outpoint -| ce12d7f32945c9544c5aeb0dcf131174 -| a6269b64b40f9461595e26689b573c58 ......... Outpoint TXID -| 00000000 ................................. Outpoint index number: 0 - -6c7da9d9eae78644a3406eac8ed0be3b -f15eb4bc369acc95b106f37400000000 ........... Chaintip block hash - -3c84025a00000000 ........................... Sig. Timestamp: 2017-11-08 04:12:44 UTC - -Masternode Signature -| 41 ....................................... Bytes in signature: 65 -| 1c7572842058a2075b8a996c3905e306 -| 27a581a0b0702842ac4088e6c1a61b22 -| 8e79a4d8aed0f413150f976045f256ef -| 2727e68a36622efcabfd60a554533b8c -| 6f ....................................... Masternode Signature - -01 ......................................... Sentinel Current: true -02000100 ................................... Sentinel Version (1.0.2) -ecd50100 ................................... Dashd Deamon Version (12.3.0) -{% endhighlight %} - -{% endautocrossref %} - -#### mnv -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 - -The `mnv` message is used by masternodes to verify each other. Several `mnv` -messages are exchanged in the process. This results in the IP address of -masternode 1 being validated as of the provided block height. - -| Bytes | Name | Data type | Required | Description | -| ---------- | ----------- | --------- | -------- | -------- | -| 36 | masternodeOutPoint1 | outPoint | Required | The unspent outpoint which is holding 1000 DASH for masternode 1 -| 36 | masternodeOutPoint2 | outPoint | Required | The unspent outpoint which is holding 1000 DASH for masternode 2 -| # | addr | CService | Required | IPv4 address and port of masternode 1 -| 4 | nonce | int | Required | Random nonce -| 4 | nBlockHeight | int | Required | Block height -| 66 | vchSig1 | char[] | Required*

    Added in Step 2 | Signature of this message by masternode 1 - verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes))

    -| 66 | vchSig2 | char[] | Required*

    Added in Step 3 | Signature of this message by masternode 2 - verifiable via pubKeyMasternode (Length (1 byte) + Signature (65 bytes))

    - -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`.
    Sent by _SendVerifyRequest()_. -| 2 | | ← | `mnv` message | Add `vchSig1` (signature of the IP address + nonce + hash of the requested block).
    Sent by _SendVerifyReply()_. -| 3 | `mnv` message | → | | Verify `vchSig1`

    Add `masternodeOutPoint1`, `masternodeOutPoint2`, and `vchSig2` (signature of the IP address + nonce + hash of the requested block + `masternodeOutPoint1` + `masternodeOutPoint2`) and relay message to peers if valid.
    Sent by _ProcessVerifyReply()_. - -Nodes receiving a relayed `mnv` message (one in which `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 %} - - -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 +The annotated hexdump below shows an `alert` message. (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 +73 ................................. Bytes in encapsulated alert: 115 +01000000 ........................... Version: 1 +3766404f00000000 ................... RelayUntil: 1329620535 +b305434f00000000 ................... Expiration: 1330917376 -Masternode 2 Unspent Outpoint (empty) -| 00000000000000000000000000000000 -| 00000000000000000000000000000000 ......... Outpoint TXID -| ffffffff ................................. Outpoint index number: 0 +f2030000 ........................... ID: 1010 +f1030000 ........................... Cancel: 1009 +00 ................................. setCancel count: 0 -00000000000000000000ffff2d20ed4c ........... IP Address: ::ffff:45.32.237.76 -4e1f ....................................... Port: 19999 -9d090000 ................................... Nonce: 2641 -ed5c0000 ................................... Block height: 23789 +10270000 ........................... MinVer: 10000 +48ee0000 ........................... MaxVer: 61000 +00 ................................. setUser_agent bytes: 0 +64000000 ........................... Priority: 100 -Masternode 1 Signature -| 41 ....................................... Bytes in signature: 65 -| 1bf5bd6e6eda0cd32aafb826c4066fa5 -| 4a53baa6f4211528e51716054b4df981 -| d97a77e633947bbbfafd6882324b76a0 -| 90c6e65c16ca1222db48f8558537c062 -| f6 ....................................... Signature +00 ................................. Bytes In Comment String: 0 +46 ................................. Bytes in StatusBar String: 70 +53656520626974636f696e2e6f72672f +666562323020696620796f7520686176 +652074726f75626c6520636f6e6e6563 +74696e67206166746572203230204665 +627275617279 ....................... Status Bar String: "See [...]" +00 ................................. Bytes In Reserved String: 0 -Masternode 2 Signature -| 00 ....................................... Bytes in signature: 0 -| .......................................... Signature: Empty +47 ................................. Bytes in signature: 71 +30450221008389df45f0703f39ec8c1c +c42c13810ffcae14995bb648340219e3 +53b63b53eb022009ec65e1c1aaeec1fd +334c6b684bde2b3f573060d5b70c3a46 +723326e4e8a4f1 ..................... Signature {% endhighlight %} + +**Alert key compromise:** Dash Core's source code defines a +particular set of alert parameters that can be used to notify users that +the alert signing key has been compromised and that they should upgrade +to get a new alert public key. Once a signed alert containing those +parameters has been received, no other alerts can cancel or override it. + {% endautocrossref %} -#### mnw +#### ix {% include helpers/subhead-links.md %} {% autocrossref %} -![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 +![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.1 -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. +The `ix` message (transaction lock request) has the same structure as the `tx` message. +The masternode network responds with `txlvote` messages if the transaction inputs +can be locked. + +{% endautocrossref %} + + +#### txlvote +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.1 + +The `txlvote` message ([transaction lock vote][msg_txlock_vote]) +is sent by masternodes to indicate approval of a transaction lock request +`ix` 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)) +| 32 | txHash | uint256 | Required | TXID of the transaction to lock +| 36 | outPoint | outpoint | Required | The unspent outpoint to lock in this transaction +| 36 | outpointMasternode | outpoint | Required | The outpoint of the masternode which is signing the vote +| 32 | quorumModifierHash | uint256 | Required | *Added in protocol version 70213. Only present when Spork 15 is active.*

    +| 32 | masternodeProTxHash | uint256 | Required | *Added in protocol version 70213. Only present when Spork 15 is active.*

    The proTxHash of the DIP3 masternode which is signing the vote +| 96 | vchMasternodeSignature | char[] | Required | Masternode BLS signature -The following annotated hexdump shows a `mnw` message. (The +The following annotated hexdump shows a `txlvote` message. (The message header has been omitted.) {% highlight text %} -Masternode Unspent Outpoint -| 0c1b5c5846792b25b05eeea9586d8c34 -| ecb996c566bedb4ecf6a68fe8ffa9582 ......... Outpoint TXID -| 00000000 ................................. Outpoint index number: 0 +84a27bb879f316482598fe65b0b51544 +e85490d85fc36af1c293e186da373c02 ..... TXID -fb4f0a00 ................................... Block pay height: 675835 +Outpoint to lock +| 4c1e6318bab4f9284d3bc0e49ec7fe76 +| 1e9c914b8ea0bcac4563005daa451221 ... Outpoint TXID +| 00000000 ........................... Outpoint index number: 0 -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 Outpoint +| 5d02f07c7318411e41fdd4be9f1e5ece +| 16d680cfe318306087edc8fb205e507b ... Outpoint TXID +| 01000000 ........................... Outpoint index number: 1 -Masternode Signature -| 41 ....................................... Bytes in signature: 65 -| 1c25da47190a83937fb5ef607235703a -| 7cdda155bf5a1ae6139929024750f899 -| a90a4f57cdf9d54c9d9603c1f31009f8 -| e257355b49c0484fb4c31bc412c73dd9 -| 20 ....................................... Signature +b62cb5007704d2db8595d5b31cfb7cb0 +8d7e530c16a7597e1db4430a00000000 ..... Quorum Modifier hash + +569abbea4ab45f36dd059c44f1dc0804 +f3f13071379c2f418d3637fb548c4159 ..... Masternode ProRegTx hash + +60 ................................... Signature length: 96 + +0b0b97ec14fbc1f12566c3a90ed113e4 +e9c5ee6cdcf2fe2171e4b5f387286146 +a0632a250d64ea507ce5e1d1f1983aae +0b70e568ad2856a0cc13008001c6d0f3 +5bdeb380f6aba0c54663a3b5e2d86d44 +305c2e5d855c72588ffb0e8e2a36482c ..... Masternode BLS Signature {% endhighlight %} {% endautocrossref %} - -#### mnwb -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -![Warning icon](/img/icons/icon_warning.svg) Deprecated since 0.14.0 - -There is no message for `mnwb` (`inv` message only). - -The following annotated hexdump shows an `inv` message with a `mnwb` -inventory entry. (The message header has been omitted.) - -{% highlight text %} -01 ................................. Count: 1 - -08000000 ........................... Type: MSG_MASTERNODE_PAYMENT_BLOCK (8) -dd6cc6c11211793b239c2e311f1496e2 -2281b200b35233eaae465d2aa3c9d537 ... Hash: mnwb -{% endhighlight %} - -{% endautocrossref %} - -#### mnvs -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -Masternode Budget Sync - Deprecated since 12.1 - -{% endautocrossref %} - -#### mvote -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -Masternode Budget Vote - Deprecated since 12.1 - -{% endautocrossref %} - -#### mprop -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -Masternode Budget Proposal - Deprecated since 12.1 - -{% endautocrossref %} - -#### fbs -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -Masternode Budget Final - Deprecated since 12.1 - -{% endautocrossref %} - -#### fbvote -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -Masternode Budget Final Vote - Deprecated since 12.1 - -{% endautocrossref %} - -#### mn quorum -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -Not Implemented - -{% endautocrossref %} diff --git a/_includes/references.md b/_includes/references.md index 4a779c6f..73739d4f 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -231,7 +231,6 @@ http://opensource.org/licenses/MIT. [dsc message]: /en/developer-reference#dsc "A P2P network message used to indicates a PrivateSend mixing session is complete" [dsf message]: /en/developer-reference#dsf "A P2P network message sent as the final mixing transaction in a session asking users to sign the final mixing TX messages" [dsi message]: /en/developer-reference#dsi "A P2P network message sending a user's inputs, collateral, and outputs for a mixing session" -[dseg message]: /en/developer-reference#dseg "A P2P network message which requests either the entire masternode list or a specific masternode entry" [dss message]: /en/developer-reference#dss "A P2P network message which sends the user’s signed inputs for a group transaction in a mixing session" [dssu message]: /en/developer-reference#dssu "A P2P network message providing a mixing pool status update" [dsq message]: /en/developer-reference#dsq "A P2P network message sent to indicate the queue is ready and the user is expected to send the entry inputs to start mixing" @@ -257,12 +256,7 @@ http://opensource.org/licenses/MIT. [mempool message]: /en/developer-reference#mempool "A P2P protocol message used to request one or more inv messages with currently-unconfirmed transactions" [merkleblock message]: /en/developer-reference#merkleblock "A P2P protocol message used to request a filtered block useful for SPV proofs" [mnauth message]: /en/developer-reference#mnauth "A P2P protocol message used to authenticate connections between masternodes" -[mnb message]: /en/developer-reference#mnb "A P2P protocol message used to describe the masternode entry and how to validate messages from it" -[mnget message]: /en/developer-reference#mnget "A P2P protocol message that requests masternode payment sync" [mnlistdiff message]: /en/developer-reference#mnlistdiff "A P2P protocol message used to send a diff of simplified masternode list entries between two blocks" -[mnp message]: /en/developer-reference#mnp "A P2P protocol message sent by masternodes every few minutes to ping the network with a message that propagates across the whole network" -[mnv message]: /en/developer-reference#mnv "A P2P protocol message used by masternodes to verify other masternode's IP Addresses." -[mnw message]: /en/developer-reference#mnw "A P2P protocol message used to pick the next winning masternode (payee)" [notfound message]: /en/developer-reference#notfound "A P2P protocol message sent to indicate that the requested data was not available" [ping message]: /en/developer-reference#ping "A P2P network message used to see if the remote host is still connected" [pong message]: /en/developer-reference#pong "A P2P network message used to reply to a P2P network ping message" @@ -424,7 +418,6 @@ http://opensource.org/licenses/MIT. [block170]: https://www.biteasy.com/block/00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee [casascius address utility]: https://github.com/casascius/Bitcoin-Address-Utility [coinbase special tx]: /en/developer-reference#cbtx -[core alert.cpp]: https://github.com/dashpay/dash/blob/master/src/alert.cpp [core base58.h]: https://github.com/dashpay/dash/blob/master/src/base58.h [core chainparams.cpp]: https://github.com/dashpay/dash/blob/master/src/chainparams.cpp [core git]: https://github.com/dashpay/dash/ From 80e4cce47e1c8a8126ef72b14f861aa6e8359a17 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 8 Aug 2019 13:03:32 -0400 Subject: [PATCH 095/117] V0.14.1 spork updates (#143) * Content - Update list of sporks - Move 5 and 12 to removed list * RPC - Update spork output --- _includes/devdoc/dash-core/rpcs/rpcs/spork.md | 22 +++++++------------ _includes/devdoc/ref_p2p_networking.md | 4 ++-- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/spork.md b/_includes/devdoc/dash-core/rpcs/rpcs/spork.md index afd5c1f8..28b57d66 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/spork.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/spork.md @@ -44,7 +44,7 @@ To display the status of sporks, use the `show` or `active` syntax. {% enditemplate %} -*Example from Dash Core 0.14.0* +*Example from Dash Core 0.14.1* {% highlight bash %} dash-cli -testnet spork show @@ -55,16 +55,13 @@ Result: { "SPORK_2_INSTANTSEND_ENABLED": 0, "SPORK_3_INSTANTSEND_BLOCK_FILTERING": 0, - "SPORK_5_INSTANTSEND_MAX_VALUE": 3000, - "SPORK_6_NEW_SIGS": 0, + "SPORK_6_NEW_SIGS": 4000000000, "SPORK_9_SUPERBLOCKS_ENABLED": 0, - "SPORK_12_RECONSIDER_BLOCKS": 0, - "SPORK_15_DETERMINISTIC_MNS_ENABLED": 7300, + "SPORK_15_DETERMINISTIC_MNS_ENABLED": 1047200, "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 + "SPORK_19_CHAINLOCKS_ENABLED": 0, + "SPORK_20_INSTANTSEND_LLMQ_BASED": 0 } {% endhighlight %} @@ -96,16 +93,13 @@ Result: { "SPORK_2_INSTANTSEND_ENABLED": true, "SPORK_3_INSTANTSEND_BLOCK_FILTERING": true, - "SPORK_5_INSTANTSEND_MAX_VALUE": true, - "SPORK_6_NEW_SIGS": true, + "SPORK_6_NEW_SIGS": false, "SPORK_9_SUPERBLOCKS_ENABLED": true, - "SPORK_12_RECONSIDER_BLOCKS": 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 + "SPORK_19_CHAINLOCKS_ENABLED": true, + "SPORK_20_INSTANTSEND_LLMQ_BASED": true } {% endhighlight %} diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index c3bbef32..e6897063 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1707,10 +1707,8 @@ Sporks (per [`src/spork.h`][spork.h]) | ---------- | ---------- | ----------- | ----------- | | 10001 | 2 | `INSTANTSEND_ENABLED` | Turns on and off InstantSend network wide | 10002 | 3 | `INSTANTSEND_BLOCK_FILTERING` | Turns on and off InstantSend block filtering -| 10004 | 5 | `INSTANTSEND_MAX_VALUE` | Controls the max value for an InstantSend transaction (currently 2000 dash) | 10005 | 6 | `NEW_SIGS` | Turns on and off new signature format for Dash-specific messages | 10008 | 9 | `SUPERBLOCKS_ENABLED` | Superblocks are enabled (10% of the block reward allocated to fund the dash treasury for funding approved proposals) -| 10011 | 12 | `RECONSIDER_BLOCKS` | Forces reindex of a specified number of blocks to recover from unintentional network forks | 10014 | 15 | `DETERMINISTIC_MNS_ENABLED` | Deterministic masternode lists are enabled | 10015 | 16 | `INSTANTSEND_AUTOLOCKS` | Automatic InstantSend for transactions with <=4 inputs (also eliminates the special InstantSend fee requirement for these transactions) | 10016 | 17 | `SPORK_17_QUORUM_DKG_ENABLED` | Enable long-living masternode quorum (LLMQ) distributed key generation (DKG). When enabled, simple PoSe scoring and banning is active as well. @@ -1718,8 +1716,10 @@ Sporks (per [`src/spork.h`][spork.h]) | 10019 | 20 | `SPORK_20_INSTANTSEND_LLMQ_BASED` | Enable LLMQ-based InstantSend. | | | | | | | **Removed Sporks** | +| _10004_ | _5_ | _`INSTANTSEND_MAX_VALUE`_ | _Removed in Dash Core 0.14.1.
    Controls the max value for an InstantSend transaction (currently 2000 dash)_ | _10007_ | _8_ | _`MASTERNODE_PAYMENT_ENFORCEMENT`_ | _Removed in Dash Core 0.14.0.
    Requires masternodes to be paid by miners when blocks are processed_ | _10009_ | _10_ | _`MASTERNODE_PAY_UPDATED_NODES`_ | _Removed in Dash Core 0.14.0.
    Only current protocol version masternode's will be paid (not older nodes)_ +| _10011_ | _12_ | _`RECONSIDER_BLOCKS`_ | _Removed in Dash Core 0.14.1.
    Forces reindex of a specified number of blocks to recover from unintentional network forks_ | _10012_ | _13_ | _`OLD_SUPERBLOCK_FLAG`_ | _Removed in Dash Core 0.12.3.
    No network function since block 614820_ | _10013_ | _14_ | _`REQUIRE_SENTINEL_FLAG`_ | _Removed in Dash Core 0.14.0.
    Only masternode's running sentinel will be paid_ | _10017_ | _18_ | _`QUORUM_DEBUG_ENABLED`_ | _Removed in Dash Core 0.14.0.

    Temporarily used on Testnet only quorum debugging._ From 9e953be7b5358dd43611ebcf77c324ada643b52d Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 14 Aug 2019 13:44:40 -0400 Subject: [PATCH 096/117] P2P - Deprecate inclusion of entry count in dssu message (#145) --- _includes/devdoc/ref_p2p_networking.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index e6897063..d7886c03 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -2465,7 +2465,7 @@ The `dssu` message provides a mixing pool status update. | ---------- | ----------- | --------- | -------- | -------- | | 4 | nMsgSessionID | int | Required | Session ID | 4 | nMsgState | int | Required | Current state of mixing process -| 4 | nMsgEntriesCount | int | Required | Number of entries in the mixing pool +| 4 | nMsgEntriesCount | int | Required | _Deprecated in Dash Core 0.14.1_

    Number of entries in the mixing pool | 4 | nMsgStatusUpdate | int | Required | Update state and/or signal if entry was accepted or not | 4 | nMsgMessageID | int | Required | ID of the typical masternode reply message @@ -2520,7 +2520,6 @@ message header has been omitted.) {% highlight text %} 86140c00 ............................. Session ID: 791686 02000000 ............................. State: POOL_STATE_ACCEPTING_ENTRIES (2) -03000000 ............................. Entries: 3 01000000 ............................. Status Update: STATUS_ACCEPTED (1) 13000000 ............................. Message ID: MSG_NOERR (0x13) {% endhighlight %} From 47783eb41fa6046ee3eabb06f4fb3ac2a1f4067a Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 15 Aug 2019 13:07:22 -0400 Subject: [PATCH 097/117] RPC - Add getmerkleblocks (#146) * RPC - Add getmerkleblocks * Fix xref issue * Add missing link --- _autocrossref.yaml | 2 + _config.yml | 1 + .../devdoc/dash-core/rpcs/quick-reference.md | 1 + .../dash-core/rpcs/rpcs/getmerkleblocks.md | 82 +++++++++++++++++++ _includes/helpers/summaries.md | 1 + _includes/layout/base/rpc-table.html | 6 ++ _includes/references.md | 1 + en/developer-reference.md | 2 + 8 files changed, 96 insertions(+) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/getmerkleblocks.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 5d9e6f50..7294e6ca 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -399,6 +399,8 @@ DIP8: '`getmempoolentry` RPC': rpc getmempoolentry '`getmempoolinfo`': rpc getmempoolinfo '`getmempoolinfo` RPC': rpc getmempoolinfo +'`getmerkleblocks`': rpc getmerkleblocks +'`getmerkleblocks` RPC': rpc getmerkleblocks '`getmininginfo`': rpc getmininginfo '`getmininginfo` RPC': rpc getmininginfo '`getnettotals`': rpc getnettotals diff --git a/_config.yml b/_config.yml index 872f1e83..c83aebc4 100644 --- a/_config.yml +++ b/_config.yml @@ -221,6 +221,7 @@ devsearches: - 'GetMempoolDescendants': "/en/developer-reference#getmempooldescendants" - 'GetMempoolEntry': "/en/developer-reference#getmempoolentry" - 'GetMempoolInfo': "/en/developer-reference#getmempoolinfo" + - 'GetMerkleBlocks': "/en/developer-reference#getmerkleblocks" - 'GetMiningInfo': "/en/developer-reference#getmininginfo" - 'GetNetTotals': "/en/developer-reference#getnettotals" - 'GetNetworkHashPS': "/en/developer-reference#getnetworkhashps" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 6bcee4c2..0623f20c 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -127,6 +127,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetMemPoolEntry][rpc getmempoolentry]: {{summary_getMemPoolEntry}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [GetMemPoolInfo][rpc getmempoolinfo]: {{summary_getMemPoolInfo}} {{UPDATED0_12_0}} * [GetRawMemPool][rpc getrawmempool]: {{summary_getRawMemPool}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} +* [GetMerkleBlocks][rpc getmerkleblocks]: {{summary_getMerkleBlocks}} {{DASH_NEW0_14_1}} * [GetSpecialTxes][rpc getspecialtxes]: {{summary_getSpecialTxes}} {{DASH_NEW0_13_1}} * [GetSpentInfo][rpc getspentinfo]: {{summary_getSpentInfo}} {{DASH_NEW0_12_1}} * [GetTxOut][rpc gettxout]: {{summary_getTxOut}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmerkleblocks.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmerkleblocks.md new file mode 100644 index 00000000..5a3904b7 --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmerkleblocks.md @@ -0,0 +1,82 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/getmerkleblocks.md" %} + + +##### GetMerkleBlocks +{% include helpers/subhead-links.md %} + +{% assign summary_getMerkleBlocks="returns an array of hex-encoded merkleblocks for blocks starting from which match ." %} + +{% autocrossref %} + +*Added in Dash Core 0.14.1* + +The `getmerkleblocks` RPC {{summary_getMerkleBlocks}} + +*Parameter #1---filter* + +{% itemplate ntpd1 %} +- n: "filter" + t: "string" + p: "Required
    (exactly 1)" + d: "The hex encoded bloom filter" + +{% enditemplate %} + +*Parameter #2---hash* + +{% itemplate ntpd1 %} +- n: "hash" + t: "string" + p: "Required
    (exactly 1)" + d: "The block hash" + +{% enditemplate %} + +*Parameter #3---count* + +{% itemplate ntpd1 %} +- n: "count" + t: "number (int)" + p: "Optional
    Default/max=2000" + d: "" + +{% enditemplate %} + +*Result---the list of merkleblocks* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "array" + p: "Required
    (exactly 1)" + d: "An array of merkleblocks" + +- n: "→
    Merkle Block" + t: "string (hex)" + p: "Optional
    (1 or more)" + d: "A serialized, hex-encoded merkleblock" +{% enditemplate %} + +*Example from Dash Core 0.14.1* + +{% highlight bash %} +dash-cli getmerkleblocks \ + "2303028005802040100040000008008400048141010000f8400420800080025004000004130000000000000001" \ + "00000000007e1432d2af52e8463278bf556b55cf5049262f25634557e2e91202" + 2000 +{% endhighlight %} + +Result (truncated): +{% highlight json %} +[ + "000000202c...aefc440107", + "0000002058...9a17830103" +] +{% endhighlight %} + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index f09fbb1a..38acc124 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -57,6 +57,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_getMemPoolEntry="returns mempool data for given transaction (must be in mempool)." %} {% assign summary_getMemPoolInfo="returns information about the node's current transaction memory pool." %} {% assign summary_getMemoryInfo="returns information about memory usage." %} +{% assign summary_getMerkleBlocks="returns an array of hex-encoded merkleblocks for blocks starting from which match ." %} {% assign summary_getMiningInfo="returns various mining-related information." %} {% assign summary_getNetTotals="returns information about network traffic, including bytes in, bytes out, and the current time." %} {% assign summary_getNetworkHashPS="returns the estimated network hashes per second based on the last n blocks." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 9625857f..53e04b3e 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -145,6 +145,12 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y + + Blockchain + GetMerkleBlocks + Y + Add in 0.14.1.0 + Blockchain GetRawMemPool diff --git a/_includes/references.md b/_includes/references.md index 73739d4f..9d685bfc 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -124,6 +124,7 @@ http://opensource.org/licenses/MIT. [rpc getmempooldescendants]: /en/developer-reference#getmempooldescendants [rpc getmempoolentry]: /en/developer-reference#getmempoolentry [rpc getmempoolinfo]: /en/developer-reference#getmempoolinfo +[rpc getmerkleblocks]: /en/developer-reference#getmerkleblocks [rpc getmininginfo]: /en/developer-reference#getmininginfo [rpc getnettotals]: /en/developer-reference#getnettotals [rpc getnetworkhashps]: /en/developer-reference#getnetworkhashps diff --git a/en/developer-reference.md b/en/developer-reference.md index 3fb85fb0..79035489 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -182,6 +182,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/getmempoolinfo.md %} +{% include devdoc/dash-core/rpcs/rpcs/getmerkleblocks.md %} + {% include devdoc/dash-core/rpcs/rpcs/getmininginfo.md %} {% include devdoc/dash-core/rpcs/rpcs/getnettotals.md %} From f527344b133392fa253cc99965e7136f00b5524c Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 19 Aug 2019 09:34:44 -0400 Subject: [PATCH 098/117] RPC add quorum memberof (#147) * RPC - Add quorum memberof sub-command * RPC - improve formatting of some quorum examples * Typo fix * Formatting and result description --- .../devdoc/dash-core/rpcs/rpcs/quorum.md | 108 +++++++++++++++++- 1 file changed, 103 insertions(+), 5 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md index 0d6173a6..6e1284ee 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md @@ -570,7 +570,6 @@ Result: } } } -p {% endhighlight %} {% endautocrossref %} @@ -1467,7 +1466,8 @@ The `quorum sign` RPC requests threshold-signing for a message. {% highlight bash %} dash-cli -testnet quorum sign 1 \ - "abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234" "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + "abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234" \ + "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" {% endhighlight %} Result: @@ -1554,7 +1554,8 @@ The `quorum getrecsig` RPC checks gets the recovered signature for a {% highlight bash %} dash-cli -testnet quorum getrecsig 1 \ - "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4" + "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" \ + "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4" {% endhighlight %} Result: @@ -1621,7 +1622,8 @@ The `quorum hasrecsig` RPC checks for a recovered signature for a pr {% highlight bash %} dash-cli -testnet quorum hasrecsig 1 \ - "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4" + "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" \ + "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4" {% endhighlight %} Result: @@ -1681,7 +1683,8 @@ The `quorum isconflicting` RPC checks if there is a conflict for a t {% highlight bash %} dash-cli -testnet quorum isconflicting 1 \ - "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4" + "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" \ + "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4" {% endhighlight %} Result: @@ -1691,8 +1694,103 @@ false {% endautocrossref %} + +###### Quorum MemberOf + + {% autocrossref %} +The `quorum` RPC checks which quorums the given masternode is a member of. + +*Parameter #1---proTxHash* + +{% itemplate ntpd1 %} +- n: "proTxHash" + t: "string" + p: "Required
    (exactly 1)" + d: "ProTxHash of the masternode." +{% enditemplate %} + +*Parameter #2---scanQuorumsCount* + +{% itemplate ntpd1 %} +- n: "scanQuorumsCount" + t: "number" + p: "Optional" + d: "Number of quorums to scan for. If not specified, the active quorum count for each specific quorum type is used." +{% enditemplate %} + +*Result---list of quorums the masternode is a member of* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "Array of objects" + p: "Required
    (exactly 1)" + d: "Array containing info for quorum's the masternode belongs to" + +- n: "→
    Quorum" + t: "object" + p: "Required
    (0 or more)" + d: "An object describing quorum details" + +- n: "→ →
    `height`" + t: "number" + p: "Required
    (exactly 1)" + d: "Block height of the quorum" + +- n: "→ →
    `type`" + t: "string" + p: "Required
    (exactly 1)" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types)" + +- n: "→ →
    `quorumHash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the quorum" + +- n: "→ →
    `minedBlock`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the block that established the quorum" + +- n: "→ →
    `quorumPublicKey`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "Quorum public key" + +- n: "→ →
    `isValidMember`" + t: "bool" + p: "Required
    (exactly 1)" + d: "Indicates if the member is valid" + +- n: "→ →
    `memberIndex`" + t: "number" + p: "Required
    (exactly 1)" + d: "Index of the member within the quorum" +{% enditemplate %} + +*Example from Dash Core 0.14.1* + +{% highlight bash %} +dash-cli -testnet quorum memberof 1 \ + 39c07d2c9c6d0ead56f52726b63c15e295cb5c3ecf7fe1fefcfb23b2e3cfed1f 1 +{% endhighlight %} + +Result: +{% highlight json %} +[ + { + "height": 72000, + "type": "llmq_400_60", + "quorumHash": "0000000007697fd69a799bfa26576a177e817bc0e45b9fcfbf48b362b05aeff2", + "minedBlock": "00000000014d910dca80944b52aa3f522d5604254043b8354d641912aace4343", + "quorumPublicKey": "03a3fbbe99d80a9be8fc59fd4fe43dfbeba9119b688e97493664716cdf15ae47fad70fea7cb93f20fba10d689f9e3c02", + "isValidMember": true, + "memberIndex": 80 + } +] +{% endhighlight %} + *See also: none* {% endautocrossref %} From 806f29dce15f88d8dbba0492a6958f2beb3e25c1 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 22 Aug 2019 16:42:38 -0400 Subject: [PATCH 099/117] V0.14.1 RPC updates (#148) * RPC - Add getmemoryinfo mode parameter * RPC - Update RPC Table and quick-ref for getmemoryinfo * RPC - Add disconnectnode nodeid parameter * RPC - Update formatting of previous versions * RPC - Add getmempoolinfo instantsendlocks param * Correct RPC table getmemoryinfo entry * Formatting - fix getmempoolinfo indentation * RPC - getinfo add deprecations-warning * RPC - estimatesmartfee add conservative param * RPC - remove instantsendtoaddress references * RPC - IS changes - Remove instantsend field from result of getmempoolentry and getrawmempool - Deprecated IS send params for multiple RPCs * RPC - Remove deprecated starting/current priority fields Related to dashpay/dash#2768 * Add missing change to fix build error * RPC Table and quick ref updates * RPC - Add addrbind to getpeerinfo * RPC - Add bogosize and disk_size to gettxoutsetinfo * RPC - Add query_options to listunspent * Typo fix in generate RPC * RPC - Add abortrescan * Formatting fix * RPC - Add param to listsinceblock Also fix depth issue with full tx template and add abandoned field * RPC - update 2nd param name in submitblock * RPC - Add conf_target and estimate_mode to sendmany and sendtoaddress * RPC - Add new uptime RPC * RPC - Add new listwallets RPC * RPC - Add new getchaintxstats RPC * RPC - Update category list for debug * RPC - Update getblockchaininfo statistics format * RPC - Add uptime to table * RPC - Add new logging RPC * RPC - Add hex field to getblock * Update rpc table --- _autocrossref.yaml | 12 +- _config.yml | 6 +- .../devdoc/dash-core/rpcs/quick-reference.md | 64 ++++---- .../devdoc/dash-core/rpcs/rpcs/abortrescan.md | 45 ++++++ _includes/devdoc/dash-core/rpcs/rpcs/debug.md | 6 +- .../dash-core/rpcs/rpcs/disconnectnode.md | 20 ++- .../dash-core/rpcs/rpcs/estimatesmartfee.md | 10 ++ .../devdoc/dash-core/rpcs/rpcs/generate.md | 2 +- .../devdoc/dash-core/rpcs/rpcs/getblock.md | 25 ++- .../dash-core/rpcs/rpcs/getblockchaininfo.md | 105 ++++++------ .../dash-core/rpcs/rpcs/getchaintxstats.md | 79 ++++++++++ .../devdoc/dash-core/rpcs/rpcs/getinfo.md | 12 +- .../dash-core/rpcs/rpcs/getmemoryinfo.md | 24 ++- .../rpcs/rpcs/getmempoolancestors.md | 12 -- .../rpcs/rpcs/getmempooldescendants.md | 14 +- .../dash-core/rpcs/rpcs/getmempoolentry.md | 40 ++--- .../dash-core/rpcs/rpcs/getmempoolinfo.md | 14 +- .../devdoc/dash-core/rpcs/rpcs/getpeerinfo.md | 96 ++++++----- .../dash-core/rpcs/rpcs/getrawmempool.md | 71 +++------ .../dash-core/rpcs/rpcs/gettxoutsetinfo.md | 29 ++-- .../devdoc/dash-core/rpcs/rpcs/gobject.md | 2 +- .../rpcs/rpcs/instantsendtoaddress.md | 101 ------------ .../dash-core/rpcs/rpcs/listsinceblock.md | 73 ++++++--- .../devdoc/dash-core/rpcs/rpcs/listunspent.md | 47 +++++- .../devdoc/dash-core/rpcs/rpcs/listwallets.md | 51 ++++++ .../devdoc/dash-core/rpcs/rpcs/logging.md | 149 ++++++++++++++++++ .../devdoc/dash-core/rpcs/rpcs/sendmany.md | 22 ++- .../dash-core/rpcs/rpcs/sendrawtransaction.md | 2 +- .../dash-core/rpcs/rpcs/sendtoaddress.md | 23 ++- .../devdoc/dash-core/rpcs/rpcs/submitblock.md | 13 +- .../devdoc/dash-core/rpcs/rpcs/uptime.md | 42 +++++ _includes/helpers/summaries.md | 6 +- _includes/helpers/vars.md | 11 +- _includes/layout/base/rpc-table.html | 74 ++++++--- _includes/references.md | 6 +- en/developer-reference.md | 12 +- 36 files changed, 895 insertions(+), 425 deletions(-) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/abortrescan.md create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/getchaintxstats.md delete mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/instantsendtoaddress.md create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/listwallets.md create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/logging.md create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/uptime.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 7294e6ca..4e58f4d5 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -289,6 +289,8 @@ DIP8: ## RPCs '`abandontransaction`': rpc abandontransaction '`abandontransaction` RPC': rpc abandontransaction +'`abortrescan`': rpc abortrescan +'`abortrescan` RPC': rpc abortrescan '`addmultisigaddress`': rpc addmultisigaddress '`addmultisigaddress` RPC': rpc addmultisigaddress '`addnode`': rpc addnode @@ -377,6 +379,8 @@ DIP8: '`getblocktemplate` RPC': rpc getblocktemplate '`getchaintips`': rpc getchaintips '`getchaintips` RPC': rpc getchaintips +'`getchaintxstats`': rpc getchaintxstats +'`getchaintxstats` RPC': rpc getchaintxstats '`getconnectioncount`': rpc getconnectioncount '`getconnectioncount` RPC': rpc getconnectioncount '`getdifficulty`': rpc getdifficulty @@ -463,8 +467,6 @@ DIP8: '`importpubkey` RPC': rpc importpubkey '`importwallet`': rpc importwallet '`importwallet` RPC': rpc importwallet -'`instantsendtoaddress`': rpc instantsendtoaddress -'`instantsendtoaddress` RPC': rpc instantsendtoaddress '`keepass`': rpc keepass '`keepass` RPC': rpc keepass '`keypoolrefill`': rpc keypoolrefill @@ -489,8 +491,12 @@ DIP8: '`listtransactions` RPC': rpc listtransactions '`listunspent`': rpc listunspent '`listunspent` RPC': rpc listunspent +'`listwallets`': rpc listwallets +'`listwallets` RPC': rpc listwallets '`lockunspent`': rpc lockunspent '`lockunspent` RPC': rpc lockunspent +'`logging`': rpc logging +'`logging` RPC': rpc logging '`masternode`': rpc masternode '`masternode` RPC': rpc masternode '`masternodebroadcast`': rpc masternodebroadcast @@ -560,6 +566,8 @@ DIP8: '`submitblock` RPC': rpc submitblock '`validateaddress`': rpc validateaddress '`validateaddress` RPC': rpc validateaddress +'`uptime`': rpc uptime +'`uptime` RPC': rpc uptime '`verifychain`': rpc verifychain '`verifychain` RPC': rpc verifychain '`verifymessage`': rpc verifymessage diff --git a/_config.yml b/_config.yml index c83aebc4..f1acdc0b 100644 --- a/_config.yml +++ b/_config.yml @@ -166,6 +166,7 @@ devsearches: ## leading capital) for easier quick scanning "RPCs": - 'AbandonTransaction': "/en/developer-reference#abandontransaction" + - 'AbortRescan': "/en/developer-reference#abortrescan" - 'AddMultiSigAddress': "/en/developer-reference#addmultisigaddress" - 'AddNode': "/en/developer-reference#addnode" - 'AddWitnessAddress': "/en/developer-reference#addwitnessaddress" @@ -210,6 +211,7 @@ devsearches: - 'GetBlockHeaders': "/en/developer-reference#getblockheaders" - 'GetBlockTemplate': "/en/developer-reference#getblocktemplate" - 'GetChainTips': "/en/developer-reference#getchaintips" + - 'GetChainTxStats': "/en/developer-reference#getchaintxstats" - 'GetConnectionCount': "/en/developer-reference#getconnectioncount" - 'GetDifficulty': "/en/developer-reference#getdifficulty" - 'GetGenerate': "/en/developer-reference#getgenerate" @@ -253,7 +255,6 @@ devsearches: - 'ImportPrunedFunds': "/en/developer-reference#importprunedfunds" - 'ImportPubkey': "/en/developer-reference#importpubkey" - 'ImportWallet': "/en/developer-reference#importwallet" - - 'InstantSendToAddress': "/en/developer-reference#instantsendtoaddress" - 'KeePass': "/en/developer-reference#keepass" - 'KeypoolRefill': "/en/developer-reference#keypoolrefill" - 'ListAccounts': "/en/developer-reference#listaccounts" @@ -266,7 +267,9 @@ devsearches: - 'ListSinceBlock': "/en/developer-reference#listsinceblock" - 'ListTransactions': "/en/developer-reference#listtransactions" - 'ListUnspent': "/en/developer-reference#listunspent" + - 'ListWallets': "/en/developer-reference#listwallets" - 'LockUnspent': "/en/developer-reference#lockunspent" + - 'Logging': "/en/developer-reference#logging" - 'Masternode': "/en/developer-reference#masternode" - 'MasternodeBroadcast': "/en/developer-reference#masternodebroadcast" - 'MasternodeList': "/en/developer-reference#masternodelist" @@ -299,6 +302,7 @@ devsearches: - 'Spork': "/en/developer-reference#spork-rpc" - 'Stop': "/en/developer-reference#stop" - 'SubmitBlock': "/en/developer-reference#submitblock" + - 'Uptime': "/en/developer-reference#uptime" - 'ValidateAddress': "/en/developer-reference#validateaddress" - 'VerifyChain': "/en/developer-reference#verifychain" - 'VerifyMessage': "/en/developer-reference#verifymessage" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 0623f20c..b1bc54b2 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -19,7 +19,11 @@ Use v0.n.n in abbreviation title to prevent autocrossrefing. {% assign DASH_NOT_IMPLEMENTED='**Not Implemented**' %} - + +{% assign DASH_NEW0_14_1='**New in Dash Core 0.14.1**' %} +{% assign DASH_UPDATED0_14_1='**Updated in Dash Core 0.14.1**' %} + + {% assign DASH_NEW0_14_0='**New in Dash Core 0.14.0**' %} {% assign DASH_UPDATED0_14_0='**Updated in Dash Core 0.14.0**' %} @@ -36,12 +40,12 @@ Use v0.n.n in abbreviation title to prevent autocrossrefing. {% assign DASH_UPDATED0_13_0='**Updated in Dash Core 0.13.0**' %} -{% assign DASH_NEW0_12_3='**New in Dash Core 0.12.3**' %} -{% assign DASH_UPDATED0_12_3='**Updated in Dash Core 0.12.3**' %} +{% assign DASH_NEW0_12_3='*New in Dash Core 0.12.3*' %} +{% assign DASH_UPDATED0_12_3='*Updated in Dash Core 0.12.3*' %} -{% assign DASH_NEW0_12_2='**New in Dash Core 0.12.2**' %} -{% assign DASH_UPDATED0_12_2='**Updated in Dash Core 0.12.2**' %} +{% assign DASH_NEW0_12_2='*New in Dash Core 0.12.2*' %} +{% assign DASH_UPDATED0_12_2='*Updated in Dash Core 0.12.2*' %} {% assign DASH_NEW0_12_1='*New in Dash Core 0.12.1*' %} @@ -55,11 +59,11 @@ Use v0.n.n in abbreviation title to prevent autocrossrefing. {% assign DEPRECATED='**Deprecated**' %} -{% assign UPDATED0_14_0='**Updated in Bitcoin Core 0.14.1**' %} +{% assign UPDATED0_14_0='*Updated in Bitcoin Core 0.14.1*' %} -{% assign NEW0_14_0='**New in Bitcoin Core 0.14.0**' %} -{% assign UPDATED0_14_0='**Updated in Bitcoin Core 0.14.0**' %} +{% assign NEW0_14_0='*New in Bitcoin Core 0.14.0*' %} +{% assign UPDATED0_14_0='*Updated in Bitcoin Core 0.14.0*' %} {% assign UPDATED0_13_1='*Updated in Bitcoin Core 0.13.1*' %} @@ -113,26 +117,27 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} * [GetBestBlockHash][rpc getbestblockhash]: {{summary_getBestBlockHash}} -* [GetBlock][rpc getblock]: {{summary_getBlock}} {{DASH_UPDATED0_14_0}} -* [GetBlockChainInfo][rpc getblockchaininfo]: {{summary_getBlockChainInfo}} {{DASH_UPDATED0_13_0}} {{UPDATED0_12_1}} +* [GetBlock][rpc getblock]: {{summary_getBlock}} {{DASH_UPDATED0_14_1}} +* [GetBlockChainInfo][rpc getblockchaininfo]: {{summary_getBlockChainInfo}} {{DASH_UPDATED0_14_1}} * [GetBlockCount][rpc getblockcount]: {{summary_getBlockCount}} * [GetBlockHash][rpc getblockhash]: {{summary_getBlockHash}} * [GetBlockHashes][rpc getblockhashes]: {{summary_getBlockHashes}} {{DASH_NEW0_12_1}} * [GetBlockHeader][rpc getblockheader]: {{summary_getBlockHeader}} {{NEW0_12_0}} * [GetBlockHeaders][rpc getblockheaders]: {{summary_getBlockHeaders}} {{DASH_NEW0_12_1}} * [GetChainTips][rpc getchaintips]: {{summary_getChainTips}} {{DASH_UPDATED0_12_3}} +* [GetChainTxStats][rpc getchaintxstats]: {{summary_getChainTxStats}} {{DASH_NEW0_14_1}} * [GetDifficulty][rpc getdifficulty]: {{summary_getDifficulty}} -* [GetMemPoolAncestors][rpc getmempoolancestors]: {{summary_getMemPoolAncestors}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} -* [GetMemPoolDescendants][rpc getmempooldescendants]: {{summary_getMemPoolDescendants}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} -* [GetMemPoolEntry][rpc getmempoolentry]: {{summary_getMemPoolEntry}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} -* [GetMemPoolInfo][rpc getmempoolinfo]: {{summary_getMemPoolInfo}} {{UPDATED0_12_0}} -* [GetRawMemPool][rpc getrawmempool]: {{summary_getRawMemPool}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} +* [GetMemPoolAncestors][rpc getmempoolancestors]: {{summary_getMemPoolAncestors}} {{DASH_UPDATED0_14_0}} {{NEW0_13_0}} +* [GetMemPoolDescendants][rpc getmempooldescendants]: {{summary_getMemPoolDescendants}} {{DASH_UPDATED0_14_0}} {{NEW0_13_0}} +* [GetMemPoolEntry][rpc getmempoolentry]: {{summary_getMemPoolEntry}} {{DASH_UPDATED0_14_0}} {{NEW0_13_0}} +* [GetMemPoolInfo][rpc getmempoolinfo]: {{summary_getMemPoolInfo}} {{DASH_UPDATED0_14_1}} +* [GetRawMemPool][rpc getrawmempool]: {{summary_getRawMemPool}} {{DASH_UPDATED0_14_1}} * [GetMerkleBlocks][rpc getmerkleblocks]: {{summary_getMerkleBlocks}} {{DASH_NEW0_14_1}} * [GetSpecialTxes][rpc getspecialtxes]: {{summary_getSpecialTxes}} {{DASH_NEW0_13_1}} * [GetSpentInfo][rpc getspentinfo]: {{summary_getSpentInfo}} {{DASH_NEW0_12_1}} * [GetTxOut][rpc gettxout]: {{summary_getTxOut}} * [GetTxOutProof][rpc gettxoutproof]: {{summary_getTxOutProof}} {{NEW0_11_0}} -* [GetTxOutSetInfo][rpc gettxoutsetinfo]: {{summary_getTxOutSetInfo}} +* [GetTxOutSetInfo][rpc gettxoutsetinfo]: {{summary_getTxOutSetInfo}} {{DASH_UPDATED0_14_1}} * [PreciousBlock][rpc preciousblock]: {{summary_preciousBlock}} {{DASH_NEW0_12_3}} {{NEW0_14_0}} * [PruneBlockChain][rpc pruneblockchain]: {{summary_pruneBlockChain}} {{DASH_NEW0_12_3}} {{NEW0_14_0}} * [VerifyChain][rpc verifychain]: {{summary_verifyChain}} @@ -147,10 +152,12 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} * [Debug][rpc debug]: {{summary_debug}} {{DASH_UPDATED0_14_0}} -* [GetInfo][rpc getinfo]: {{summary_getInfo}} {{DASH_UPDATED0_14_0}} {{DEPRECATED}} -* [GetMemoryInfo][rpc getmemoryinfo]: {{summary_getMemoryInfo}} {{DASH_NEW0_12_3}} {{NEW_14_0}} +* [GetInfo][rpc getinfo]: {{summary_getInfo}} {{DASH_UPDATED0_14_1}} {{DEPRECATED}} +* [GetMemoryInfo][rpc getmemoryinfo]: {{summary_getMemoryInfo}} {{DASH_UPDATED0_14_1}} {{NEW_14_0}} * [Help][rpc help]: {{summary_help}} +* [Logging][rpc logging]: {{summary_logging}} {{DASH_NEW0_14_1}} * [Stop][rpc stop]: {{summary_stop}} +* [Uptime][rpc uptime]: {{summary_uptime}} {{DASH_NEW0_14_1}} {% endautocrossref %} @@ -163,7 +170,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_14_0}} * [GetPoolInfo][rpc getpoolinfo]: {{summary_getPoolInfo}} * [GetSuperblockBudget][rpc getsuperblockbudget]: {{summary_getSuperblockBudget}} -* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_14_0}} +* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_14_1}} * [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_14_0}} * [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_14_0}} * [MnSync][rpc mnsync]: {{summary_mnSync}} {{DASH_UPDATED0_14_0}} @@ -218,12 +225,12 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [AddNode][rpc addnode]: {{summary_addNode}} {{UPDATED0_14_0}} * [ClearBanned][rpc clearbanned]: {{summary_clearBanned}} {{NEW0_12_0}} -* [DisconnectNode][rpc disconnectnode]: {{summary_disconnectNode}} {{NEW0_12_0}} {{UPDATED0_14_1}} +* [DisconnectNode][rpc disconnectnode]: {{summary_disconnectNode}} {{DASH_UPDATED0_14_1}} {{UPDATED0_14_1}} * [GetAddedNodeInfo][rpc getaddednodeinfo]: {{summary_getAddedNodeInfo}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}} * [GetConnectionCount][rpc getconnectioncount]: {{summary_getConnectionCount}} * [GetNetTotals][rpc getnettotals]: {{summary_getNetTotals}} {{UPDATED0_12_0}} * [GetNetworkInfo][rpc getnetworkinfo]: {{summary_getNetworkInfo}} {{DASH_UPDATED0_14_0}} -* [GetPeerInfo][rpc getpeerinfo]: {{summary_getPeerInfo}} {{UPDATED0_13_0}} +* [GetPeerInfo][rpc getpeerinfo]: {{summary_getPeerInfo}} {{DASH_UPDATED0_14_1}} * [ListBanned][rpc listbanned]: {{summary_listBanned}} {{NEW0_12_0}} * [Ping][rpc ping]: {{summary_ping-rpc}} * [SetBan][rpc setban]: {{summary_setBan}} {{NEW0_12_0}} @@ -242,7 +249,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [DecodeScript][rpc decodescript]: {{summary_decodeScript}} * [FundRawTransaction][rpc fundrawtransaction]: {{summary_fundRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}} * [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{DASH_UPDATED0_14_0}} -* [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} +* [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} {{DASH_UPDATED0_14_1}} * [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}} {% endautocrossref %} @@ -255,7 +262,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [CreateMultiSig][rpc createmultisig]: {{summary_createMultiSig}} * [EstimateFee][rpc estimatefee]: {{summary_estimateFee}} -* [EstimateSmartFee][rpc estimatesmartfee]: {{summary_estimateSmartFee}} {{DEPRECATED}} +* [EstimateSmartFee][rpc estimatesmartfee]: {{summary_estimateSmartFee}} {{DASH_UPDATED0_14_1}} * [SetBIP69Enabled][rpc setbip69enabled]: {{summary_setBIP69Enabled}} {{DASH_NEW0_12_3}} * [SignMessageWithPrivKey][rpc signmessagewithprivkey]: {{summary_signMessageWithPrivKey}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [ValidateAddress][rpc validateaddress]: {{summary_validateAddress}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} @@ -274,6 +281,7 @@ with [wallet support][]{:#term-wallet-support}{:.term}, which is the default. * [AbandonTransaction][rpc abandontransaction]: {{summary_abandonTransaction}} {{NEW0_12_0}} +* [AbortRescan][rpc abortrescan]: {{summary_abortrescan}} {{DASH_NEW0_14_1}} * [AddMultiSigAddress][rpc addmultisigaddress]: {{summary_addMultiSigAddress}} * [BackupWallet][rpc backupwallet]: {{summary_backupWallet}} * [DumpHDInfo][rpc dumphdinfo]: {{summary_dumpHDInfo}} {{DASH_NEW0_12_2}} @@ -298,7 +306,6 @@ default. * [ImportPrunedFunds][rpc importprunedfunds]: {{summary_importPrunedFunds}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [ImportPubKey][rpc importpubkey]: {{summary_importPubKey}} * [ImportWallet][rpc importwallet]: {{summary_importWallet}} -* [InstantSendToAddress][rpc instantsendtoaddress]: {{summary_instantSendToAddress}} * [KeePass][rpc keepass]: {{summary_keepass}} {{DARKCOIN_NEW0_11_0}} * [KeyPoolRefill][rpc keypoolrefill]: {{summary_keyPoolRefill}} * [ListAccounts][rpc listaccounts]: {{summary_listAccounts}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}} @@ -307,15 +314,16 @@ default. * [ListLockUnspent][rpc listlockunspent]: {{summary_listLockUnspent}} * [ListReceivedByAccount][rpc listreceivedbyaccount]: {{summary_listReceivedByAccount}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}} * [ListReceivedByAddress][rpc listreceivedbyaddress]: {{summary_listReceivedByAddress}} {{DASH_UPDATED0_13_0}} -* [ListSinceBlock][rpc listsinceblock]: {{summary_listSinceBlock}} {{DASH_UPDATED0_14_0}} +* [ListSinceBlock][rpc listsinceblock]: {{summary_listSinceBlock}} {{DASH_UPDATED0_14_1}} * [ListTransactions][rpc listtransactions]: {{summary_listTransactions}} {{DASH_UPDATED0_14_0}} -* [ListUnspent][rpc listunspent]: {{summary_listUnspent}} {{DASH_UPDATED0_14_0}} +* [ListUnspent][rpc listunspent]: {{summary_listUnspent}} {{DASH_UPDATED0_14_1}} +* [ListWallets][rpc listwallets]: {{summary_listWallets}} {{DASH_NEW0_14_1}} * [LockUnspent][rpc lockunspent]: {{summary_lockUnspent}} * [Move][rpc move]: {{summary_move}} {{DEPRECATED}} * [RemovePrunedFunds][rpc removeprunedfunds]: {{summary_removePrunedFunds}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [SendFrom][rpc sendfrom]: {{summary_sendFrom}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}} -* [SendMany][rpc sendmany]: {{summary_sendMany}} {{DASH_UPDATED0_13_0}} -* [SendToAddress][rpc sendtoaddress]: {{summary_sendToAddress}} +* [SendMany][rpc sendmany]: {{summary_sendMany}} {{DASH_UPDATED0_14_1}} +* [SendToAddress][rpc sendtoaddress]: {{summary_sendToAddress}} {{DASH_UPDATED0_14_1}} * [SetAccount][rpc setaccount]: {{summary_setAccount}} {{DEPRECATED}} * [SetPrivateSendAmount][rpc setprivatesendamount]: {{summary_setPrivateSendAmount}} * [SetPrivateSendRounds][rpc setprivatesendrounds]: {{summary_setPrivateSendRounds}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/abortrescan.md b/_includes/devdoc/dash-core/rpcs/rpcs/abortrescan.md new file mode 100644 index 00000000..409798ca --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/abortrescan.md @@ -0,0 +1,45 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/abortrescan.md" %} + + +##### AbortRescan +{% include helpers/subhead-links.md %} + +{% assign summary_abortRescan="Stops current wallet rescan" %} + +{% autocrossref %} + +The `abortrescan` RPC {{summary_abortRescan}} + +Stops current wallet rescan triggered e.g. by an `importprivkey` RPC call. + +*Parameters: none* + +*Result---`true` on success* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "null" + p: "Required
    (exactly 1)" + d: "`true` when the command was successful or `false` if not successful." +{% enditemplate %} + +*Example from Dash Core 0.14.1* + +Abort the running wallet rescan + +{% highlight bash %} +dash-cli -testnet abortrescan +{% endhighlight %} + +Result: +{% highlight text %} +true +{% endhighlight %} + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/debug.md b/_includes/devdoc/dash-core/rpcs/rpcs/debug.md index df8de10b..a8424105 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/debug.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/debug.md @@ -20,7 +20,7 @@ The `debug` RPC {{summary_debug}} - n: "Debug category" t: "string" p: "Required
    (1 or more)" - d: "The debug category to activate. Use a `+` to specify multiple categories. Categories will be one of the following:
    • `0` - Disables all categories
    • `1` - Enables all categories
    • `addrman`
    • `bench`
    • `cmpctblock`
    • `coindb`
    • `db`
    • `http`
    • `leveldb`
    • `libevent`
    • `lock`
    • `mempool`
    • `mempoolrej`
    • `net`
    • `proxy`
    • `prune`
    • `qt`
    • `rand`
    • `reindex`
    • `rpc`
    • `selectcoins`
    • `tor`
    • `zmq`
    • `dash` (all subcategories)

    The `dash` sub-categories can be enabled individually:
    • `chainlocks`
    • `gobject`
    • `instantsend`
    • `keepass`
    • `llmq`
    • `llmq-dkg`
    • `llmq-sigs`
    • `mnpayments`
    • `mnsync`
    • `privatesend`
    • `spork`


    Note: No error will be thrown even if the specified category doesn't match any of the above" + d: "The debug category to activate. Use a `+` to specify multiple categories. Categories will be one of the following:
    • `0` - Disables all categories
    • `1` or `all` - Enables all categories
    • `addrman`
    • `bench`
    • `cmpctblock`
    • `coindb`
    • `db`
    • `estimatefee`
    • `http`
    • `leveldb`
    • `libevent`
    • `mempool`
    • `mempoolrej`
    • `net`
    • `proxy`
    • `prune`
    • `qt`
    • `rand`
    • `reindex`
    • `rpc`
    • `selectcoins`
    • `tor`
    • `zmq`
    • `dash` (all subcategories)

    The `dash` sub-categories can be enabled individually:
    • `chainlocks`
    • `gobject`
    • `instantsend`
    • `keepass`
    • `llmq`
    • `llmq-dkg`
    • `llmq-sigs`
    • `mnpayments`
    • `mnsync`
    • `privatesend`
    • `spork`


    Note: No error will be thrown even if the specified category doesn't match any of the above" {% enditemplate %} *Example from Dash Core 0.14.1* @@ -35,6 +35,8 @@ Result: Debug mode: net+mempool {% endhighlight %} -*See also: none* +*See also* + +* [Logging][rpc logging]: {{summary_logging}} {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/disconnectnode.md b/_includes/devdoc/dash-core/rpcs/rpcs/disconnectnode.md index 175e32f7..cdf818f5 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/disconnectnode.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/disconnectnode.md @@ -22,7 +22,15 @@ The `disconnectnode` RPC {{summary_disconnectNode}} t: "string" p: "Required
    (exactly 1)" d: "The node you want to disconnect from as a string in the form of `:`.

    *Updated in Bitcoin Core 0.14.1*" +{% enditemplate %} +*Parameter #2---nodeid* + +{% itemplate ntpd1 %} +- n: "nodeid" + t: "number" + p: "Optional" + d: "The node ID (see `getpeerinfo` for node IDs)" {% enditemplate %} *Result---`null` on success or error on failed disconnect* @@ -35,9 +43,9 @@ The `disconnectnode` RPC {{summary_disconnectNode}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.1* -Disconnects following node from your node. +Disconnects following node by address. {% highlight bash %} dash-cli -testnet disconnectnode 192.0.2.113:19999 @@ -45,6 +53,14 @@ dash-cli -testnet disconnectnode 192.0.2.113:19999 Result (no output from `dash-cli` because result is set to `null`). +Disconnects following node by id. + +{% highlight bash %} +dash-cli -testnet disconnectnode "" 3 +{% endhighlight %} + +Result (no output from `dash-cli` because result is set to `null`). + *See also* * [AddNode][rpc addnode]: {{summary_addNode}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartfee.md b/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartfee.md index bf4baafd..f7dd3746 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartfee.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartfee.md @@ -23,6 +23,16 @@ The `estimatesmartfee` RPC {{summary_estimateSmartFee}} {% enditemplate %} +*Parameter #2---conservative* + +{% itemplate ntpd1 %} +- n: "conservative" + t: "bool" + p: "Optional
    Default=`true`" + d: "Whether to return a more conservative estimate which also satisfies a longer history. A conservative estimate potentially returns a higher feerate and is more likely to be sufficient for the desired target, but is not as responsive to short term drops in the prevailing fee market" + +{% enditemplate %} + *Result---the fee the transaction needs to pay per kilobyte* {% itemplate ntpd1 %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/generate.md b/_includes/devdoc/dash-core/rpcs/rpcs/generate.md index 39aac636..a263e256 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/generate.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/generate.md @@ -30,7 +30,7 @@ The `generate` RPC {{summary_generate}} *Parameter #2---the number of iterations* {% itemplate ntpd1 %} -- n: "`numblocks`" +- n: "`maxtries`" t: "number (int)" p: "Required
    (exactly 1)" d: "The number of iterations to try (default = 1000000)." diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md index dcaa272c..dc07cc85 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md @@ -117,6 +117,11 @@ The `getblock` RPC {{summary_getBlock}} p: "Required
    (exactly 1)" d: "The merkle root for the masternode list" +- n: "→ →
    `merkleRootQuorums`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The merkle root for the quorum list" + - n: "→
    `time`" t: "number (int)" p: "Required
    (exactly 1)" @@ -232,6 +237,11 @@ The `getblock` RPC {{summary_getBlock}} p: "Required
    (exactly 1)" d: "The merkle root for the masternode list" +- n: "→ →
    `merkleRootQuorums`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The merkle root for the quorum list" + - n: "→
    `time`" t: "number (int)" p: "Required
    (exactly 1)" @@ -279,7 +289,7 @@ The `getblock` RPC {{summary_getBlock}} {% enditemplate %} -*Example from Dash Core 0.14.0* +*Example from Dash Core 0.14.1* Get a block in raw hex: @@ -316,7 +326,7 @@ Result: {% highlight json %} { "hash": "00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b", - "confirmations": 1, + "confirmations": 73083, "size": 310, "height": 86190, "version": 536870912, @@ -338,7 +348,8 @@ Result: "difficulty": 440.8261075201009, "chainwork": "0000000000000000000000000000000000000000000000000045ab6f9403a8e7", "previousblockhash": "000000000073a041bac70a7c3e49c29e8bc954071aeee6e00c7ac8064a372e27", - "chainlock": false + "nextblockhash": "00000000001c6c962639a1aad4cd069f315560a824d489418dc1f26b50a58aed", + "chainlock": true } {% endhighlight %} @@ -354,7 +365,7 @@ Result: {% highlight json %} { "hash": "00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b", - "confirmations": 1, + "confirmations": 73084, "size": 310, "height": 86190, "version": 536870912, @@ -363,9 +374,9 @@ Result: "tx": [ { "txid": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56", - "size": 229, "version": 3, "type": 5, + "size": 229, "locktime": 0, "vin": [ { @@ -413,6 +424,7 @@ Result: }, "instantlock": false, "chainlock": false + "hex": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff2703ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000ffffffff02809e4730000000001976a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac809e4730000000001976a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac00000000460200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3" } ], "cbTx": { @@ -428,7 +440,8 @@ Result: "difficulty": 440.8261075201009, "chainwork": "0000000000000000000000000000000000000000000000000045ab6f9403a8e7", "previousblockhash": "000000000073a041bac70a7c3e49c29e8bc954071aeee6e00c7ac8064a372e27", - "chainlock": false + "nextblockhash": "00000000001c6c962639a1aad4cd069f315560a824d489418dc1f26b50a58aed", + "chainlock": true } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md index 1d4e1f12..78d2622f 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md @@ -82,7 +82,7 @@ The `getblockchaininfo` RPC {{summary_getBlockChainInfo}} - n: "→ →
    Softfork" t: "object" - p: "Required
    (3 or more)" + p: "Required
    (0 or more)" d: "A specific softfork" - n: "→ → →
    `id`" @@ -152,7 +152,7 @@ The `getblockchaininfo` RPC {{summary_getBlockChainInfo}} - n: "→ →
    Name" t: "string : object" - p: "Required
    (2 or more)" + p: "Required
    (0 or more)" d: "A specific BIP9 softfork" - n: "→ → →
    `status`" @@ -165,31 +165,6 @@ The `getblockchaininfo` RPC {{summary_getBlockChainInfo}} p: "Optional
    (0 or 1)" d: "The bit (0-28) in the block version field used to signal this softfork. Field is only shown when status is `started`" -- n: "→ → →
    `period`" - t: "numeric
    (int)" - p: "Optional
    (0 or 1)" - d: "*Added in Dash Core 0.13.0*

    The window size/period for this softfork. Field is only shown when status is `started`" - -- n: "→ → →
    `threshold`" - t: "numeric
    (int)" - p: "Optional
    (0 or 1)" - d: "*Added in Dash Core 0.13.0*

    The threshold for this softfork. Field is only shown when status is `started`" - -- n: "→ → →
    `windowStart`" - t: "numeric
    (int)" - p: "Optional
    (0 or 1)" - d: "*Added in Dash Core 0.13.0*

    The starting block height of the current window. Field is only shown when status is `started`" - -- n: "→ → →
    `windowBlocks`" - t: "numeric
    (int)" - p: "Optional
    (0 or 1)" - d: "*Added in Dash Core 0.13.0*

    The number of blocks in the current window that had the version bit set for this softfork. Field is only shown when status is `started`" - -- n: "→ → →
    `windowProgress`" - t: "numeric
    (int)" - p: "Optional
    (0 or 1)" - d: "*Added in Dash Core 0.13.0*

    The progress (between 0 and 1) for activation of this softfork. Field is only shown when status is `started`" - - n: "→ → →
    `startTime`" t: "numeric
    (int)" p: "Required
    (exactly 1)" @@ -204,9 +179,40 @@ The `getblockchaininfo` RPC {{summary_getBlockChainInfo}} t: "numeric
    (int)" p: "Required
    (exactly 1)" d: "*Added in Bitcoin Core 0.14.0*

    The height of the first block to which the status applies" + +- n: "→ → →
    `statistics`" + t: "string : object" + p: "Required
    (exactly 1)" + d: "*Added in Dash Core 0.14.1*

    Numeric statistics about BIP9 signaling for a softfork (only for \"started\" status)" + +- n: "→ → → →
    `period`" + t: "numeric
    (int)" + p: "Optional
    (0 or 1)" + d: "*Added in Dash Core 0.14.1*

    The length in blocks of the BIP9 signaling period. Field is only shown when status is `started`" + +- n: "→ → → →
    `threshold`" + t: "numeric
    (int)" + p: "Optional
    (0 or 1)" + d: "*Added in Dash Core 0.14.1*

    The number of blocks with the version bit set required to activate the feature. Field is only shown when status is `started`" + +- n: "→ → → →
    `elapsed`" + t: "numeric
    (int)" + p: "Optional
    (0 or 1)" + d: "*Added in Dash Core 0.14.1*

    The number of blocks elapsed since the beginning of the current period. Field is only shown when status is `started`" + +- n: "→ → → →
    `count`" + t: "numeric
    (int)" + p: "Optional
    (0 or 1)" + d: "*Added in Dash Core 0.14.1*

    The number of blocks with the version bit set in the current period. Field is only shown when status is `started`" + +- n: "→
    `possible`" + t: "bool" + p: "Optional
    (0 or 1)" + d: "*Added in Bitcoin Core 0.11.0*

    Returns false if there are not enough blocks left in this period to pass activation threshold. Field is only shown when status is `started`" + {% enditemplate %} -*Example from Dash Core 0.12.3* +*Example from Dash Core 0.14.1* {% highlight bash %} dash-cli -testnet getblockchaininfo @@ -217,13 +223,13 @@ Result: {% highlight json %} { "chain": "test", - "blocks": 82244, - "headers": 82244, - "bestblockhash": "0000000004efcadbdb9d8b524e5ab982af3db039fdb585c2f1c1df56d42d4492", - "difficulty": 47.4955836390814, - "mediantime": 1519662782, - "verificationprogress": 0.9999999483744162, - "chainwork": "0000000000000000000000000000000000000000000000000021adf3af961831", + "blocks": 160508, + "headers": 160508, + "bestblockhash": "0000000008ae87c2999faa79c74727ab2a15783fcab515cc940a6c14dfa921a8", + "difficulty": 24.71182965485547, + "mediantime": 1566479773, + "verificationprogress": 0.9999986039171913, + "chainwork": "0000000000000000000000000000000000000000000000000077db2024e1810b", "pruned": false, "softforks": [ { @@ -251,25 +257,36 @@ Result: "bip9_softforks": { "csv": { "status": "active", - "startTime": 1506556800, - "timeout": 1538092800, + "startTime": 1544655600, + "timeout": 1576191600, "since": 8064 }, "dip0001": { "status": "active", - "startTime": 1505692800, - "timeout": 1537228800, - "since": 5600 + "startTime": 1544655600, + "timeout": 1576191600, + "since": 4400 + }, + "dip0003": { + "status": "active", + "startTime": 1544655600, + "timeout": 1576191600, + "since": 7000 + }, + "dip0008": { + "status": "active", + "startTime": 1553126400, + "timeout": 1584748800, + "since": 78800 }, "bip147": { "status": "active", - "startTime": 1517792400, - "timeout": 1549328400, - "since": 78800 + "startTime": 1544655600, + "timeout": 1576191600, + "since": 4300 } } } - {% endhighlight %} *See also* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getchaintxstats.md b/_includes/devdoc/dash-core/rpcs/rpcs/getchaintxstats.md new file mode 100644 index 00000000..01e80365 --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getchaintxstats.md @@ -0,0 +1,79 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/getchaintxstats.md" %} + + +##### GetChainTxStats +{% include helpers/subhead-links.md %} + +{% assign summary_getChainTxStats="compute statistics about the total number and rate of transactions in the chain." %} + +{% autocrossref %} + +The `getchaintxstats` RPC {{summary_getChainTxStats}} + +*Parameter #1---nblocks* + +{% itemplate ntpd1 %} +- n: "nblocks" + t: "number (int)" + p: "Optional" + d: "Size of the window in number of blocks (default: one month)." + +{% enditemplate %} + +*Parameter #2---blockhash* + +{% itemplate ntpd1 %} +- n: "blockhash" + t: "string" + p: "Optional" + d: "The hash of the block that ends the window." + +{% enditemplate %} + +*Result--statistics about transactions* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object" + p: "Required
    (exactly 1)" + d: "Object containing transaction statistics" + +- n: "→
    `time`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "The timestamp for the statistics in UNIX format" + +- n: "→
    `txcount`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "The total number of transactions in the chain up to that point" + +- n: "→
    `txrate`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "The average rate of transactions per second in the window" + +{% enditemplate %} + +*Example from Dash Core 0.14.1* + +{% highlight bash %} +dash-cli -testnet getchaintxstats +{% endhighlight %} + +Result: +{% highlight json %} +{ + "time": 1566416832, + "txcount": 1353139, + "txrate": 0.04107376448354556 +} +{% endhighlight %} + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getinfo.md index a7fafd5c..444a8700 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getinfo.md @@ -27,6 +27,11 @@ Core. Use the RPCs listed in the See Also subsection below instead. p: "Required
    (exactly 1)" d: "Information about this node and the network" +- n: "→
    `deprecation-warning`" + t: "string" + p: "Required
    (exactly 1)" + d: "Warning that the getinfo command is deprecated and will be removed in a future version" + - n: "→
    `version`" t: "number (int)" p: "Required
    (exactly 1)" @@ -114,7 +119,7 @@ Core. Use the RPCs listed in the See Also subsection below instead. {% enditemplate %} -*Example from Dash Core 0.12.2 with wallet support enabled* +*Example from Dash Core 0.14.1 with wallet support enabled* {% highlight bash %} dash-cli -testnet getinfo @@ -124,8 +129,9 @@ Result: {% highlight json %} { - "version": 120200, - "protocolversion": 70208, + "deprecation-warning": "WARNING: getinfo is deprecated and will be fully removed in a future version. Projects should transition to using getblockchaininfo, getnetworkinfo, and getwalletinfo.", + "version": 140100, + "protocolversion": 70215, "walletversion": 61000, "balance": 0.00000000, "privatesend_balance": 0.00000000, diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmemoryinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmemoryinfo.md index 2321a4d1..772c1082 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getmemoryinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmemoryinfo.md @@ -17,7 +17,16 @@ http://opensource.org/licenses/MIT. The `getmemoryinfo` RPC {{summary_getMemoryInfo}} -*Parameters: none* +*Parameter #1---mode* + +{% itemplate ntpd1 %} +- n: "mode" + t: "string" + p: "Optional
    Default: `stats`" + d: "*Added in Dash Core 0.14.1*

    Determines what kind of information is returned.
    + - `stats` returns general statistics about memory usage in the daemon.
    + - `mallocinfo` returns an XML string describing low-level heap state (only available if compiled with glibc 2.10+)." +{% enditemplate %} *Result---information about memory usage* @@ -75,15 +84,14 @@ Result: {% highlight json %} { "locked": { - "used": 32, - "free": 65504, - "total": 65536, - "locked": 65536, - "chunks_used": 1, - "chunks_free": 1 + "used": 1146240, + "free": 426624, + "total": 1572864, + "locked": 1572864, + "chunks_used": 16368, + "chunks_free": 7 } } - {% endhighlight %} *See also* diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolancestors.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolancestors.md index 84099efd..c5280824 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolancestors.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolancestors.md @@ -90,16 +90,6 @@ The `getmempoolancestors` RPC {{summary_getMemPoolAncestors}} p: "Required
    (exactly 1)" d: "The block height when the transaction entered the memory pool" -- n: "→ →
    `startingpriority`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The priority of the transaction when it first entered the memory pool" - -- n: "→ →
    `currentpriority`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The current priority of the transaction" - - n: "→ →
    `descendantcount`" t: "number (int)" p: "Required
    (exactly 1)" @@ -176,8 +166,6 @@ Result: "modifiedfee": 0.00000966, "time": 1519160516, "height": 79045, - "startingpriority": 4514051697.115385, - "currentpriority": 4520474899.74359, "descendantcount": 2, "descendantsize": 1189, "descendantfees": 1192, diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmempooldescendants.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmempooldescendants.md index c2d8c671..a51da6f7 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getmempooldescendants.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmempooldescendants.md @@ -90,16 +90,6 @@ The `getmempooldescendants` RPC {{summary_getMemPoolDescendants}} p: "Required
    (exactly 1)" d: "The block height when the transaction entered the memory pool" -- n: "→ →
    `startingpriority`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The priority of the transaction when it first entered the memory pool" - -- n: "→ →
    `currentpriority`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The current priority of the transaction" - - n: "→ →
    `descendantcount`" t: "number (int)" p: "Required
    (exactly 1)" @@ -142,7 +132,7 @@ The `getmempooldescendants` RPC {{summary_getMemPoolDescendants}} {% enditemplate %} -*Examples from Dash Core 0.12.3* +*Examples from Dash Core 0.14.0* The default (`false`): @@ -176,8 +166,6 @@ Result: "modifiedfee": 0.00000226, "time": 1519160551, "height": 79046, - "startingpriority": 0, - "currentpriority": 0, "descendantcount": 1, "descendantsize": 226, "descendantfees": 226, diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md index 62154513..2fe12c89 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md @@ -60,16 +60,6 @@ The `getmempoolentry` RPC {{summary_getMemPoolEntry}} p: "Required
    (exactly 1)" d: "The block height when the transaction entered the memory pool" -- n: "→
    `startingpriority`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The priority of the transaction when it first entered the memory pool" - -- n: "→
    `currentpriority`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The current priority of the transaction" - - n: "→
    `descendantcount`" t: "number (int)" p: "Required
    (exactly 1)" @@ -110,11 +100,6 @@ The `getmempoolentry` RPC {{summary_getMemPoolEntry}} p: "Optional (0 or more)" d: "The TXIDs of any unconfirmed transactions this transaction depends upon, encoded as hex in RPC byte order" -- n: "→
    `instantsend`" - t: "bool" - p: "Required
    (exactly 1)" - d: "True if this transaction was sent as an InstantSend one" - - n: "→
    `instantlock`" t: "bool" p: "Required
    (exactly 1)" @@ -133,23 +118,20 @@ Result: {% highlight json %} { - "size": 226, - "fee": 0.00000226, - "modifiedfee": 0.00000226, - "time": 1519159538, - "height": 79036, - "startingpriority": 0, - "currentpriority": 0, - "descendantcount": 2, - "descendantsize": 452, - "descendantfees": 452, + "size": 372, + "fee": 0.00000375, + "modifiedfee": 0.00000375, + "time": 1566315602, + "height": 159320, + "descendantcount": 1, + "descendantsize": 372, + "descendantfees": 375, "ancestorcount": 1, - "ancestorsize": 226, - "ancestorfees": 226, + "ancestorsize": 372, + "ancestorfees": 375, "depends": [ ], - "instantsend": false, - "instantlock": false + "instantlock": true } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolinfo.md index 85d3e997..f41244a8 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolinfo.md @@ -48,9 +48,14 @@ The `getmempoolinfo` RPC {{summary_getMemPoolInfo}} p: "Required
    (exactly 1)" d: "*Added in Bitcoin Core 0.12.0*

    The lowest fee per kilobyte paid by any transaction in the memory pool" +- n: "→
    `instantsendlocks`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "*Added in Dash Core 0.14.1*

    Number of unconfirmed InstantSend locks" + {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.1* {% highlight bash %} dash-cli -testnet getmempoolinfo @@ -61,10 +66,11 @@ Result: {% highlight json %} { "size": 1, - "bytes": 3471, - "usage": 8544, + "bytes": 666, + "usage": 1936, "maxmempool": 300000000, - "mempoolminfee": 0.00000000 + "mempoolminfee": 0.00000000, + "instantsendlocks": 1 } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getpeerinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/getpeerinfo.md index 0f4b5e59..c4f7f9b1 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getpeerinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getpeerinfo.md @@ -3,6 +3,7 @@ This file is licensed under the MIT License (MIT) available on http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/getpeerinfo.md" %} + ##### GetPeerInfo {% include helpers/subhead-links.md %} @@ -43,6 +44,11 @@ The `getpeerinfo` RPC {{summary_getPeerInfo}} p: "Optional
    (0 or 1)" d: "Our IP address and port number according to the remote node. May be incorrect due to error or lying. Most SPV nodes set this to `127.0.0.1:9999`" +- n: "→ →
    `addrbind`" + t: "string" + p: "Optional
    (0 or 1)" + d: "Bind address of the connection to the peer" + - n: "→ →
    `services`" t: "string (hex)" p: "Required
    (exactly 1)" @@ -108,6 +114,11 @@ The `getpeerinfo` RPC {{summary_getPeerInfo}} p: "Required
    (exactly 1)" d: "Set to `true` if this node connected to us (inbound); set to `false` if we connected to this node (outbound)" +- n: "→ →
    `addnode`" + t: "bool" + p: "Required
    (exactly 1)" + d: "Set to `true` if this node was added via the `addnode` RPC." + - n: "→ →
    `startingheight`" t: "number (int)" p: "Required
    (exactly 1)" @@ -180,6 +191,7 @@ Result (edited to show only a single entry, with IP addresses changed to "id": 3, "addr": "192.0.2.113:19999", "addrlocal": "127.0.0.1:56332", + "addrbind": "192.168.10.111:56332", "services": "0000000000000005", "relaytxes": true, "lastsend": 1507818327, @@ -188,62 +200,62 @@ Result (edited to show only a single entry, with IP addresses changed to "bytesrecv": 887651, "conntime": 1507808575, "timeoffset": 0, - "pingtime": 0.189852, - "minping": 0.187152, - "version": 70208, - "subver": "/Dash Core:0.12.2/", + "pingtime": 0.113646, + "minping": 0.106826, + "version": 70215, + "subver": "/Dash Core:0.14.0.3/", "inbound": false, - "startingheight": 8416, + "addnode": false, + "startingheight": 159292, "banscore": 0, - "synced_headers": 8474, - "synced_blocks": 8474, + "synced_headers": 159350, + "synced_blocks": 159350, "inflight": [ ], "whitelisted": false, "bytessent_per_msg": { - "addr": 165, - "dseg": 65, - "dsq": 33984, + "addr": 55, + "dsq": 69530, "getaddr": 24, - "getdata": 73261, - "getheaders": 861, - "getsporks": 48, - "govobj": 20244, - "govobjvote": 22196, - "govsync": 545682, - "headers": 106, - "inv": 139035, - "mnget": 28, - "notfound": 1220, - "ping": 2624, - "pong": 2624, + "getdata": 9224, + "getheaders": 989, + "getsporks": 24, + "govsync": 66, + "headers": 6148, + "inv": 837, + "ping": 1856, + "pong": 1856, + "qsendrecsigs": 25, + "sendcmpct": 33, + "senddsq": 25, "sendheaders": 24, - "ssc": 1792, + "tx": 5808, "verack": 24, - "version": 128 + "version": 160 }, "bytesrecv_per_msg": { - "addr": 4365, - "block": 22307, - "dsq": 33984, - "getdata": 10417, - "getheaders": 861, - "govobjvote": 179, - "govsync": 4620, - "headers": 6254, - "inv": 130964, - "mnp": 352, - "mnw": 600208, - "notfound": 31192, - "ping": 2624, - "pong": 2624, + "*other*": 25, + "addr": 17362, + "clsig": 3276, + "getdata": 122, + "getheaders": 989, + "headers": 5300, + "inv": 24611, + "islock": 3249, + "mnauth": 152, + "ping": 1856, + "pong": 1856, + "qsigrec": 16492, + "sendcmpct": 33, + "senddsq": 25, "sendheaders": 24, - "spork": 2860, - "ssc": 33664, + "spork": 2090, + "ssc": 32, + "tx": 11523, "verack": 24, - "version": 128 + "version": 162 } - }, + } ] {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawmempool.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawmempool.md index e5224288..17de4a62 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawmempool.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawmempool.md @@ -78,16 +78,6 @@ The `getrawmempool` RPC {{summary_getRawMemPool}} p: "Required
    (exactly 1)" d: "The block height when the transaction entered the memory pool" -- n: "→ →
    `startingpriority`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The priority of the transaction when it first entered the memory pool" - -- n: "→ →
    `currentpriority`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The current priority of the transaction" - - n: "→ →
    `descendantcount`" t: "number (int)" p: "Required
    (exactly 1)" @@ -128,11 +118,6 @@ The `getrawmempool` RPC {{summary_getRawMemPool}} p: "Optional (0 or more)" d: "The TXIDs of any unconfirmed transactions this transaction depends upon, encoded as hex in RPC byte order" -- n: "→ →
    `instantsend`" - t: "bool" - p: "Required
    (exactly 1)" - d: "*Added in Dash Core 0.12.3*

    Set to `true` for transactions broadcast via the `ix` message (InstantSend lock requested). Set to `false` for standard (non-InstantSend) transactions" - - n: "→ →
    `instantlock`" t: "bool" p: "Required
    (exactly 1)" @@ -166,44 +151,38 @@ Result: {% highlight json %} { - "8fd1440ed74d3739aa4e1700e9b2fdb32bc5c138fe79dd319f965f67339eb1ce": { - "size": 372, - "fee": 0.00020000, - "modifiedfee": 0.00020000, - "time": 1519928121, - "height": 83907, - "startingpriority": 2224190635.564103, - "currentpriority": 2224190635.564103, - "descendantcount": 2, - "descendantsize": 598, - "descendantfees": 20226, - "ancestorcount": 1, - "ancestorsize": 372, - "ancestorfees": 20000, - "depends": [ - ], - "instantsend": true, - "instantlock": true - }, - "2d914d77305dd968bbd67aeb8604cf7e9d66a7df58bf5216724db69a54000f40": { - "size": 226, + "3bf4985183ddebcb6b1d58fa04dae9728a8f2bf20be298d81e38a8bd2f50ea47": { + "size": 225, "fee": 0.00000226, "modifiedfee": 0.00000226, - "time": 1519928256, - "height": 83907, - "startingpriority": 0, - "currentpriority": 0, + "time": 1566315512, + "height": 159318, "descendantcount": 1, - "descendantsize": 226, + "descendantsize": 225, "descendantfees": 226, "ancestorcount": 2, - "ancestorsize": 598, - "ancestorfees": 20226, + "ancestorsize": 5760, + "ancestorfees": 5780, "depends": [ - "8fd1440ed74d3739aa4e1700e9b2fdb32bc5c138fe79dd319f965f67339eb1ce" + "1b8fdb3ce371c1274ee60df807d631320e7efaf30e7867584eb44b8ec4c19d12" ], - "instantsend": false, - "instantlock": false + "instantlock": true + }, + "1b8fdb3ce371c1274ee60df807d631320e7efaf30e7867584eb44b8ec4c19d12": { + "size": 5535, + "fee": 0.00005554, + "modifiedfee": 0.00005554, + "time": 1566315441, + "height": 159318, + "descendantcount": 2, + "descendantsize": 5760, + "descendantfees": 5780, + "ancestorcount": 1, + "ancestorsize": 5535, + "ancestorfees": 5554, + "depends": [ + ], + "instantlock": true } } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gettxoutsetinfo.md b/_includes/devdoc/dash-core/rpcs/rpcs/gettxoutsetinfo.md index ba8db755..55495ba3 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gettxoutsetinfo.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gettxoutsetinfo.md @@ -3,6 +3,7 @@ This file is licensed under the MIT License (MIT) available on http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/gettxoutsetinfo.md" %} + ##### GetTxOutSetInfo {% include helpers/subhead-links.md %} @@ -43,16 +44,21 @@ The `gettxoutsetinfo` RPC {{summary_getTxOutSetInfo}} p: "Required
    (exactly 1)" d: "The number of unspent transaction outputs" -- n: "→
    `bytes_serialized`" +- n: "→
    `bogosize`" t: "number (int)" p: "Required
    (exactly 1)" - d: "The size of the serialized UTXO set in bytes; not counting overhead, this is the size of the `chainstate` directory in the Bitcoin Core configuration directory" + d: "A meaningless metric for UTXO set size" -- n: "→
    `hash_serialized`" +- n: "→
    `hash_serialized_2`" t: "string (hex)" p: "Required
    (exactly 1)" d: "A SHA256(SHA256()) hash of the serialized UTXO set; useful for comparing two nodes to see if they have the same set (they should, if they always used the same serialization format and currently have the same best block). The hash is encoded as hex in RPC byte order" +- n: "→
    `disk_size`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "The estimated size of the chainstate on disk" + - n: "→
    `total_amount`" t: "number (Dash)" p: "Required
    (exactly 1)" @@ -60,7 +66,7 @@ The `gettxoutsetinfo` RPC {{summary_getTxOutSetInfo}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.1* {% highlight bash %} dash-cli -testnet gettxoutsetinfo @@ -70,13 +76,14 @@ Result: {% highlight json %} { - "height": 4755, - "bestblock": "0000000025da0abc9e9937f1c65b3f544a57bb7e8817422f7ff2a89ff32696f4", - "transactions": 4748, - "txouts": 10602, - "bytes_serialized": 463925, - "hash_serialized": "fce0776d7961b409c4d8a46363c8d049879321861f7f40db97b0432e59532320", - "total_amount": 2243585.70000000 + "height": 159358, + "bestblock": "0000000000a705ef74a1fc134ea1eba49af8eead40b3df1fc4fb40f5940a0d60", + "transactions": 187542, + "txouts": 366996, + "bogosize": 28344374, + "hash_serialized_2": "d7326bdc2d9cb7d91580bfd47d6c2972ab1776c2c33c787873a5fd01986c9377", + "disk_size": 21513509, + "total_amount": 7517185.08574437 } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md index 2dddb774..8428a984 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md @@ -121,7 +121,7 @@ The `gobject prepare` RPC prepares a governance object by signing and creating a - n: "`use-IS`" t: "boolean" p: "Optional
    (0 or 1)" - d: "*Added in Dash Core 0.13.0*

    InstantSend lock the collateral, only requiring one chain confirmation" + d: "*Deprecated and ignored since Dash Core 0.14.1*" {% enditemplate %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/instantsendtoaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/instantsendtoaddress.md deleted file mode 100644 index 2d371622..00000000 --- a/_includes/devdoc/dash-core/rpcs/rpcs/instantsendtoaddress.md +++ /dev/null @@ -1,101 +0,0 @@ -{% comment %} -This file is licensed under the MIT License (MIT) available on -http://opensource.org/licenses/MIT. -{% endcomment %} -{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/instantsendtoaddress.md" %} - -##### InstantSendToAddress -{% include helpers/subhead-links.md %} - -{% assign summary_instantSendToAddress="InstantSend an amount to a given address." %} - - - -{% autocrossref %} - -The `instantsendtoaddress` RPC {{summary_instantSendToAddress}} - -*Parameter #1---to address* - -{% itemplate ntpd1 %} -- n: "To Address" - t: "string" - p: "Required
    (exactly 1)" - d: "A P2PKH or P2SH address to which the dash should be sent" - -{% enditemplate %} - -*Parameter #2---amount to spend* - -{% itemplate ntpd1 %} -- n: "Amount" - t: "number (dash)" - p: "Required
    (exactly 1)" - d: "The amount to spent in dash" - -{% enditemplate %} - -*Parameter #3---a comment* - -{% itemplate ntpd1 %} -- n: "Comment" - t: "string" - p: "Optional
    (0 or 1)" - d: "A locally-stored (not broadcast) comment assigned to this transaction. Default is no comment" - -{% enditemplate %} - -*Parameter #4---a comment about who the payment was sent to* - -{% itemplate ntpd1 %} -- n: "Comment To" - t: "string" - p: "Optional
    (0 or 1)" - d: "A locally-stored (not broadcast) comment assigned to this transaction. Meant to be used for describing who the payment was sent to. Default is no comment" - -{% enditemplate %} - -*Parameter #5---automatic fee subtraction* - -{% itemplate ntpd1 %} -- n: "Subtract Fee From Amount" - t: "boolean" - p: "Optional
    (0 or 1)" - d: "The fee will be deducted from the amount being sent. The recipient will receive less dash than you enter in the amount field. Default is `false`" - -{% enditemplate %} - -*Result---a TXID of the sent transaction* - -{% itemplate ntpd1 %} -- n: "`result`" - t: "string" - p: "Required
    (exactly 1)" - d: "The TXID of the sent transaction, encoded as hex in RPC byte order" - -{% enditemplate %} - -*Example from Dash Core 0.12.2* - -InstantSend 0.1 dash to the address below with the comment "instantsendtoaddress -example" and the comment-to "Nemo From Example.com": - -{% highlight bash %} -dash-cli -testnet instantsendtoaddress ySutkc49Khpz1HQN8AfWNitVBLwqtyaxvv \ - 1.0 "instantsendtoaddress example" "Nemo From Example.com" -{% endhighlight %} - -Result: - -{% highlight text %} -70e2029d363f0110fe8a0aa2ba7bd771a579453135568b2aa559b2cb30f875aa -{% endhighlight %} - -*See also:* - -* [SendFrom][rpc sendfrom]: {{summary_sendFrom}} -* [SendMany][rpc sendmany]: {{summary_sendMany}} -* [SendToAddress][rpc sendtoaddress]: {{summary_sendToAddress}} -* [Move][rpc move]: {{summary_move}} - -{% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md b/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md index 84049e19..242cd841 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md @@ -41,6 +41,16 @@ The `listsinceblock` RPC {{summary_listSinceBlock}} {{INCLUDE_INCLUDE_WATCH_ONLY_PARAMETER}} +*Parameter #4---include_removed* + +{% itemplate ntpd1 %} +- n: "include_removed" + t: "bool" + p: "Optional
    Default=`true`" + d: "Show transactions that were removed due to a reorg in the \"removed\" array (not guaranteed to work on pruned nodes)" + +{% enditemplate %} + **Result** {% assign DEPTH="→ → → " %} @@ -64,6 +74,11 @@ The `listsinceblock` RPC {{summary_listSinceBlock}} {{INCLUDE_F_LIST_TRANSACTIONS}} {{INCLUDE_F_LIST_TRANSACTIONS_F_FULL}} +- n: "→
    `removed`" + t: "array" + p: "Optional
    (0 or 1)" + d: "Structure is the same as `transactions`. Only present if `include_removed` is `true`.
    _Note_: transactions that were re-added in the active chain will appear as-is in this array, and may thus have a positive confirmation count." + - n: "→
    `lastblock`" t: "string (hex)" p: "Required
    (exactly 1)" @@ -71,15 +86,15 @@ The `listsinceblock` RPC {{summary_listSinceBlock}} {% enditemplate %} -*Example from Dash Core 0.14.0* +*Example from Dash Core 0.14.1* Get all transactions since a particular block (including watch-only transactions) and the header hash of the sixth most recent block. {% highlight bash %} dash-cli -testnet listsinceblock \ - 00000000688633a503f69818a70eac281302e9189b1bb57a76a05c329fcda718 \ - 6 true + 0000000001fc119ea77e0c67783227fb9d55386125179ea5597109d311af2337 \ + 6 true true {% endhighlight %} Result (edited to show only two payments): @@ -89,44 +104,50 @@ Result (edited to show only two payments): "transactions": [ { "account": "", - "address": "yLXe1NwXmhZbtM6drTXbWFvtEqpsJZkKd2", + "address": "yMaodAgCofB2gmHEtATAiV3w5NkzTpmkgS", "category": "send", - "amount": -1.00000000, - "label": "Receiving", + "amount": -2365.65209808, + "label": "Mining Consolidation", "vout": 0, - "fee": -0.00000226, - "confirmations": 0, + "fee": -0.00031420, + "confirmations": 5, "instantlock": true, - "instantlock_internal": true, - "chainlock": false, - "trusted": true, - "txid": "cc2e6c49faae395d79cfc91d188881e479f544c220e4dfee016889cd53b32645", + "instantlock_internal": false, + "chainlock": true, + "blockhash": "00000000001c4e142c6deaa273206706d37a7aa792887d9bd81ae787d4259137", + "blockindex": 1, + "blocktime": 1566399553, + "txid": "bb8a2789c3166181cc190e0fd7675770217b69c9aeafe0d8207baf1ebeb05845", "walletconflicts": [ ], - "time": 1554734925, - "timereceived": 1554734925, + "time": 1566399271, + "timereceived": 1566399271, "abandoned": false }, { - "account": "", - "address": "yLXe1NwXmhZbtM6drTXbWFvtEqpsJZkKd2", + "account": "Mining Consolidation", + "address": "yMaodAgCofB2gmHEtATAiV3w5NkzTpmkgS", "category": "receive", - "amount": 1.00000000, - "label": "Receiving", + "amount": 2365.65209808, + "label": "Mining Consolidation", "vout": 0, - "confirmations": 0, + "confirmations": 5, "instantlock": true, - "instantlock_internal": true, - "chainlock": false, - "trusted": true, - "txid": "cc2e6c49faae395d79cfc91d188881e479f544c220e4dfee016889cd53b32645", + "instantlock_internal": false, + "chainlock": true, + "blockhash": "00000000001c4e142c6deaa273206706d37a7aa792887d9bd81ae787d4259137", + "blockindex": 1, + "blocktime": 1566399553, + "txid": "bb8a2789c3166181cc190e0fd7675770217b69c9aeafe0d8207baf1ebeb05845", "walletconflicts": [ ], - "time": 1554734925, - "timereceived": 1554734925 + "time": 1566399271, + "timereceived": 1566399271 } ], - "lastblock": "0000000006be841cd8534b02733d833ad9dd7634ab0897a7e5cd92c574a529a3" + "removed": [ + ], + "lastblock": "000000000158ad1e4eab53044e18aaf76e605a27252862d4f1d78cfd373f1686" } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md b/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md index 73d41300..44ea258a 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md @@ -64,6 +64,15 @@ the *spendable* field in the results described below. {% enditemplate %} +*Parameter #5---query options* + +{% itemplate ntpd1 %} +- n: "Query Options" + t: "json" + p: "Optional" + d: "JSON with query options. Available options:
    - `minimumAmount`: Minimum value of each UTXO in DASH
    - `maximumAmount`: Maximum value of each UTXO in DASH
    - `maximumCount`: Maximum number of UTXOs
    - `minimumSumAmount`: Minimum sum value of all UTXOs in DASH" + +{% enditemplate %} *Result---the list of unspent outputs* @@ -140,7 +149,7 @@ the *spendable* field in the results described below. {% enditemplate %} -*Example from Dash Core 0.14.0* +*Example from Dash Core 0.14.1* Get all outputs confirmed at least 6 times for a particular address: @@ -172,6 +181,42 @@ Result: ] {% endhighlight %} +Get all outputs for a particular address that have at least 1 confirmation and a maximum value of 10: + +{% highlight bash %} +listunspent 1 9999999 "[\"yQqTPAw1Nk8iFDeDXqe5dQ7A9xD6LVUStD\"]" true "{\"maximumAmount\":\"10\"}" + +dash-cli -testnet listunspent 1 9999999 ''' + [ + "yQqTPAw1Nk8iFDeDXqe5dQ7A9xD6LVUStD" + ] + ''' true ''' + { + "maximumAmount": "10" + } + ''' +{% endhighlight %} + +Result: + +{% highlight json %} +[ + { + "txid": "42cd5150fd1179b5a194e034685d524e6d5d38703ac794d236495923a29addc5", + "vout": 1, + "address": "yQqTPAw1Nk8iFDeDXqe5dQ7A9xD6LVUStD", + "account": "", + "scriptPubKey": "76a914318d6d7e26e07a142a425a32ea917a30147d6c9788ac", + "amount": 5.00000000, + "confirmations": 100, + "spendable": true, + "solvable": true, + "safe": true, + "ps_rounds": -2 + } +] +{% endhighlight %} + *See also* * [ListTransactions][rpc listtransactions]: {{summary_listTransactions}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listwallets.md b/_includes/devdoc/dash-core/rpcs/rpcs/listwallets.md new file mode 100644 index 00000000..0518125a --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listwallets.md @@ -0,0 +1,51 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/listwallets.md" %} + + +##### ListWallets +{% include helpers/subhead-links.md %} + +{% assign summary_listWallets="returns a list of currently loaded wallets." %} + +{% autocrossref %} + +The `listwallets` RPC {{summary_listWallets}} + +For full information on the wallet, use the `getwalletinfo` RPC. + +*Parameters: none* + +*Result* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "array" + p: "Required
    (exactly 1)" + d: "An array of strings containing a list of currently loaded wallet files" + +- n: "→
    Wallet" + t: "string" + p: "Required
    (0 or more)" + d: "The name of a wallet file" + +{% enditemplate %} + +*Example from Dash Core 0.14.1* + +{% highlight bash %} +dash-cli -testnet listwallets +{% endhighlight %} + +Result: +{% highlight json %} +[ + "wallet.dat" +] +{% endhighlight %} + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/logging.md b/_includes/devdoc/dash-core/rpcs/rpcs/logging.md new file mode 100644 index 00000000..7c199a45 --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/logging.md @@ -0,0 +1,149 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/logging.md" %} + + +##### Logging +{% include helpers/subhead-links.md %} + +{% assign summary_logging="gets and sets the logging configuration" %} + +{% autocrossref %} + +The `logging` RPC {{summary_logging}} + +*Parameter #1---include categories* + +{% itemplate ntpd1 %} +- n: "`include`" + t: "array of strings" + p: "Optional
    (0 or 1)" + d: "Enable debugging for these categories" + +{% enditemplate %} + +*Parameter #2---exclude categories* + +{% itemplate ntpd1 %} +- n: "`exclude`" + t: "array of strings" + p: "Optional
    (0 or 1)" + d: "Enable debugging for these categories" + +{% enditemplate %} + +The categories are: + +| Type | Category | +| - | - | +| Special | • `0` - Disables all categories
    • `1` or `all` - Enables all categories
    • `dash` - Enables/disables all Dash categories | +| Standard | `addrman`, `bench`
    `cmpctblock`, `coindb`, `db`, `estimatefee`, `http`, `leveldb`, `libevent`, `mempool`, `mempoolrej`, `net`, `proxy`, `prune`, `qt`, `rand`, `reindex`, `rpc`, `selectcoins`, `tor`, `zmq`| +| Dash |
    `chainlocks`, `gobject`, `instantsend`, `keepass`, `llmq`, `llmq-dkg`, `llmq-sigs`, `mnpayments`, `mnsync`, `privatesend`, `spork` | + +*Result---a list of the logging categories that are active* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object" + p: "Required
    (exactly 1)" + d: "A JSON object show a list of the logging categories that are active" + +{% enditemplate %} + +*Example from Dash Core 0.14.1* + +Include a category in logging + +{% highlight bash %} +dash-cli -testnet logging '["llmq", "spork"]' +{% endhighlight %} + +Result: +{% highlight json %} +{ + "net": 0, + "tor": 0, + "mempool": 0, + "http": 0, + "bench": 0, + "zmq": 0, + "db": 0, + "rpc": 0, + "estimatefee": 0, + "addrman": 0, + "selectcoins": 0, + "reindex": 0, + "cmpctblock": 0, + "rand": 0, + "prune": 0, + "proxy": 0, + "mempoolrej": 0, + "libevent": 0, + "coindb": 0, + "qt": 0, + "leveldb": 0, + "chainlocks": 0, + "gobject": 0, + "instantsend": 0, + "keepass": 0, + "llmq": 1, + "llmq-dkg": 0, + "llmq-sigs": 0, + "mnpayments": 0, + "mnsync": 0, + "privatesend": 0, + "spork": 1 +} +{% endhighlight %} + +Excluding a previously included category (without including any new ones): + +{% highlight bash %} +dash-cli -testnet logging '[]' '["spork"]' +{% endhighlight %} + +Result: +{% highlight json %} +{ + "net": 0, + "tor": 0, + "mempool": 0, + "http": 0, + "bench": 0, + "zmq": 0, + "db": 0, + "rpc": 0, + "estimatefee": 0, + "addrman": 0, + "selectcoins": 0, + "reindex": 0, + "cmpctblock": 0, + "rand": 0, + "prune": 0, + "proxy": 0, + "mempoolrej": 0, + "libevent": 0, + "coindb": 0, + "qt": 0, + "leveldb": 0, + "chainlocks": 0, + "gobject": 0, + "instantsend": 0, + "keepass": 0, + "llmq": 1, + "llmq-dkg": 0, + "llmq-sigs": 0, + "mnpayments": 0, + "mnsync": 0, + "privatesend": 0, + "spork": 0 +} +{% endhighlight %} + +*See also* + +* [Debug][rpc debug]: {{summary_debug}} + +{% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/sendmany.md b/_includes/devdoc/dash-core/rpcs/rpcs/sendmany.md index 98b78f15..d89c03df 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/sendmany.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/sendmany.md @@ -80,7 +80,7 @@ The `sendmany` RPC {{summary_sendMany}} - n: "Use InstantSend" t: "bool" p: "Optional
    (0 or 1)" - d: "If set to `true`, send this transaction as InstantSend (default: false)." + d: "*Deprecated and ignored since Dash Core 0.14.1*" {% enditemplate %} @@ -94,6 +94,26 @@ The `sendmany` RPC {{summary_sendMany}} {% enditemplate %} +*Parameter #9---confirmation target* + +{% itemplate ntpd1 %} +- n: "`conf_target`" + t: "number (int)" + p: "Optional
    (0 or 1)" + d: "Confirmation target (in blocks)" + +{% enditemplate %} + +*Parameter #10---fee estimate mode* + +{% itemplate ntpd1 %} +- n: "`estimate_mode`" + t: "string" + p: "Optional
    (0 or 1)" + d: " The fee estimate mode, must be one of:
    `UNSET`
    `ECONOMICAL`
    `CONSERVATIVE`
    Default: `UNSET`" + +{% enditemplate %} + *Result---a TXID of the sent transaction* {% itemplate ntpd1 %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/sendrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/sendrawtransaction.md index 64ac2701..3e12e12a 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/sendrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/sendrawtransaction.md @@ -39,7 +39,7 @@ The `sendrawtransaction` RPC {{summary_sendRawTransaction}} - n: "Use InstantSend" t: "bool" p: "Optional
    (0 or 1)" - d: "Set to `true` to send as an InstantSend transaction. Set to `false` (the default) to send as a normal transaction" + d: "*Depcrecated and ignored since Dash Core 0.14.1*" {% enditemplate %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/sendtoaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/sendtoaddress.md index 80e2aac7..ff696ef6 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/sendtoaddress.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/sendtoaddress.md @@ -74,7 +74,7 @@ The `sendtoaddress` RPC {{summary_sendToAddress}} - n: "Use InstantSend" t: "bool" p: "Optional
    (0 or 1)" - d: "If set to `true`, send this transaction as InstantSend (default: false)." + d: "*Deprecated and ignored since Dash Core 0.14.1*" {% enditemplate %} @@ -88,6 +88,26 @@ The `sendtoaddress` RPC {{summary_sendToAddress}} {% enditemplate %} +*Parameter #8---confirmation target* + +{% itemplate ntpd1 %} +- n: "`conf_target`" + t: "number (int)" + p: "Optional
    (0 or 1)" + d: "Confirmation target (in blocks)" + +{% enditemplate %} + +*Parameter #9---fee estimate mode* + +{% itemplate ntpd1 %} +- n: "`estimate_mode`" + t: "string" + p: "Optional
    (0 or 1)" + d: " The fee estimate mode, must be one of:
    `UNSET`
    `ECONOMICAL`
    `CONSERVATIVE`
    Default: `UNSET`" + +{% enditemplate %} + *Result---a TXID of the sent transaction* {% itemplate ntpd1 %} @@ -164,7 +184,6 @@ ba4bbe29fa06b67d6f3f3a73e381627e66abe22e217ce329aefad41ea72c3922 *See also* -* [InstantSendToAddress][rpc instantsendtoaddress]: {{summary_instantSendToAddress}} * [SendFrom][rpc sendfrom]: {{summary_sendFrom}} * [SendMany][rpc sendmany]: {{summary_sendMany}} * [Move][rpc move]: {{summary_move}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/submitblock.md b/_includes/devdoc/dash-core/rpcs/rpcs/submitblock.md index 66d1f188..9cc98d13 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/submitblock.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/submitblock.md @@ -3,6 +3,7 @@ This file is licensed under the MIT License (MIT) available on http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/submitblock.md" %} + ##### SubmitBlock {% include helpers/subhead-links.md %} @@ -23,13 +24,13 @@ The `submitblock` RPC {{summary_submitBlock}} {% enditemplate %} -*Parameter #2---additional parameters* +*Parameter #2---dummy value* {% itemplate ntpd1 %} -- n: "Parameters" +- n: "`dummy`" t: "object" p: "Optional
    (0 or 1)" - d: "A JSON object containing extra parameters. Not used directly by Dash Core and also not broadcast to the network. This is available for use by mining pools and other software. A common parameter is a `workid` string" + d: "A dummy value for compatibility with BIP22. This value is ignored." {% enditemplate %} @@ -43,9 +44,9 @@ The `submitblock` RPC {{summary_submitBlock}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.1* -Submit the following block with the workid, "test". +Submit the following block with the a dummy value, "test". {% highlight bash %} dash-cli -testnet submitblock 0100002032e3965d5fdd7a883209d516599337eb4cb82f\ @@ -64,7 +65,7 @@ dash-cli -testnet submitblock 0100002032e3965d5fdd7a883209d516599337eb4cb82f\ 96e3a36f3e815222cd1cb9586b3193c4a0de030477f621956d51feffffff02a00bd1000000\ 00001976a914d7b47d4b40a23c389f5a17754d7f60f511c7d0ec88ac316168821300000019\ 76a914c9190e507834b78a624d7578f1ad3819592ca1aa88ac771f0000 \ - '{ "workid": "test" }' + "test" {% endhighlight %} Result (the block above was already on a local block chain): diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/uptime.md b/_includes/devdoc/dash-core/rpcs/rpcs/uptime.md new file mode 100644 index 00000000..645ee209 --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/uptime.md @@ -0,0 +1,42 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/uptime.md" %} + + +##### Uptime +{% include helpers/subhead-links.md %} + +{% assign summary_uptime="returns the total uptime of the server." %} + +{% autocrossref %} + +The `uptime` RPC {{summary_uptime}} + +*Parameters: none* + +*Result* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "The number of seconds that the server has been running" + +{% enditemplate %} + +*Example from Dash Core 0.14.1* + +{% highlight bash %} +dash-cli -testnet uptime +{% endhighlight %} + +Result: +{% highlight text %} +5500 +{% endhighlight %} + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index 38acc124..3e84cb2a 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -1,6 +1,7 @@ {%comment%}AUTOMATICALLY-GENERATED FILE: DO NOT EDIT THIS FILE This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_abandonTransaction="marks an in-wallet transaction and all its in-wallet descendants as abandoned. This allows their inputs to be respent." %} +{% assign summary_abortRescan="Stops current wallet rescan" %} {% assign summary_addMultiSigAddress="adds a P2SH multisig address to the wallet." %} {% assign summary_addNode="attempts to add or remove a node from the addnode list, or to try a connection to a node once." %} {% assign summary_addWitnessAddress="adds a witness address for a script (with pubkey or redeem script known)." %} @@ -46,6 +47,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_getBlockHeaders="returns an array of items with information about the requested number of blockheaders starting from the requested hash." %} {% assign summary_getBlockTemplate="gets a block template or proposal for use with mining software." %} {% assign summary_getChainTips="returns information about the highest-height block (tip) of each local block chain." %} +{% assign summary_getChainTxStats="compute statistics about the total number and rate of transactions in the chain." %} {% assign summary_getConnectionCount="returns the number of connections to other nodes." %} {% assign summary_getDifficulty="returns the proof-of-work difficulty as a multiple of the minimum difficulty." %} {% assign summary_getGenerate="was removed in Dash Core 0.12.3." %} @@ -88,7 +90,6 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_importPrunedFunds="imports funds without the need of a rescan. Meant for use with pruned wallets." %} {% assign summary_importPubKey="imports a public key (in hex) that can be watched as if it were in your wallet but cannot be used to spend" %} {% assign summary_importWallet="imports private keys from a file in wallet dump file format (see the `dumpwallet` RPC). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes." %} -{% assign summary_instantSendToAddress="InstantSend an amount to a given address." %} {% assign summary_keepass="provides commands for configuring and managing KeePass authentication" %} {% assign summary_keyPoolRefill="fills the cache of unused pre-generated keys (the keypool)." %} {% assign summary_listAccounts="lists accounts and their balances." %} @@ -101,7 +102,9 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_listSinceBlock="gets all transactions affecting the wallet which have occurred since a particular block, plus the header hash of a block at a particular depth." %} {% assign summary_listTransactions="returns the most recent transactions that affect the wallet." %} {% assign summary_listUnspent="returns an array of unspent transaction outputs belonging to this wallet." %} +{% assign summary_listWallets="returns a list of currently loaded wallets." %} {% 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_logging="gets and sets the logging configuration" %} {% assign summary_masternode="provides a set of commands for managing masternodes and displaying information about them." %} {% assign summary_masternodeBroadcast="was removed in Dash Core 0.14.0." %} {% assign summary_masternodeList="returns a list of masternodes in different modes." %} @@ -142,6 +145,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_spork-rpc="reads or updates spork settings on the network." %} {% assign summary_stop="safely shuts down the Dash Core server." %} {% assign summary_submitBlock="accepts a block, verifies it is a valid addition to the block chain, and broadcasts it to the network. Extra parameters are ignored by Dash Core but may be used by mining pools or other programs." %} +{% assign summary_uptime="returns the total uptime of the server." %} {% assign summary_validateAddress="returns information about the given Dash address." %} {% assign summary_verifyChain="verifies each entry in the local block chain database." %} {% assign summary_verifyMessage="verifies a signed message." %} diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index 7461f16e..572fa50d 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -48,17 +48,17 @@ http://opensource.org/licenses/MIT. p: "Required
    (exactly 1)" d: "The number of confirmations the transaction has received. Will be `0` for unconfirmed and `-1` for conflicted" -- n: "→
    `instantlock`" +- n: "{{DEPTH}}
    `instantlock`" t: "bool" p: "Required
    (exactly 1)" d: "Current transaction lock state (InstantSend and/or ChainLock)" -- n: "→
    `instantlock_internal`" +- n: "{{DEPTH}}
    `instantlock_internal`" t: "bool" p: "Required
    (exactly 1)" d: "Current InstantSend transaction lock state" -- n: "
    `chainlock`" +- n: "{{DEPTH}}
    `chainlock`" t: "bool" p: "Required
    (exactly 1)" d: "*Added in Dash Core 0.14.0*

    If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org)" @@ -108,6 +108,11 @@ http://opensource.org/licenses/MIT. p: "Required
    (exactly 1)" d: "A Unix epoch time when the transaction was detected by the local node, or the time of the block on the local best block chain that included the transaction" +- n: "{{DEPTH}}
    `abandoned`" + t: "bool" + p: "Optional
    (0 or 1)" + d: "`true` if the transaction has been abandoned (inputs are respendable). Only available for the 'send' category of transactions." + - n: "{{DEPTH}}
    `comment`" t: "string" p: "Optional
    (0 or 1)" diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 53e04b3e..959d30dd 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -71,13 +71,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain GetBlock Y - Updated in 0.14.0.0 + Updated in 0.14.1 Blockchain GetBlockChainInfo Y - Updated in 0.13.0.0 + Updated in 0.14.1 Blockchain @@ -115,6 +115,12 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y Updated in 0.12.3.0 + + Blockchain + GetChainTxStats + Y + Added in 0.14.1 + Blockchain GetDifficulty @@ -125,25 +131,25 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain GetMemPoolAncestors Y - 0.12.3.0+ + Updated in 0.14.0 Blockchain GetMemPoolDescendants Y - 0.12.3.0+ + Updated in 0.14.0 Blockchain GetMemPoolEntry Y - 0.12.3.0+ + Updated in 0.14.0 Blockchain GetMemPoolInfo Y - + Updated in 0.14.1.0 Blockchain @@ -155,7 +161,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain GetRawMemPool Y - Updated in 0.12.3.0 + Updated in 0.14.1 Blockchain @@ -185,7 +191,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain GetTxOutSetInfo Y - + Updated in 0.14.1 Blockchain @@ -221,7 +227,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Control GetInfo Y - Updated in 0.14.0 + Updated in 0.14.1 Control @@ -229,12 +235,24 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y + + Control + Logging + Y + Added in 0.14.1 + Control Stop Y + + Control + Uptime + Y + Added in 0.14.1 + Dash GetGovernanceInfo @@ -257,7 +275,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash GObject Y - Updated in 0.14.0 + Updated in 0.14.1 Dash @@ -395,7 +413,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Network DisconnectNode Y - + Updated in 0.14.1.0 Network @@ -425,7 +443,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Network GetPeerInfo Y - + Updated in 0.14.1 Network @@ -485,7 +503,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Rawtransactions SendRawTransaction Y - + Updated in 0.14.1 Rawtransactions @@ -527,7 +545,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Util EstimateSmartFee Y - + Updated in 0.14.1 Util @@ -539,7 +557,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Util GetMemoryInfo Y - 0.12.3.0+ + Updated in 0.14.1.0+ Util @@ -565,6 +583,12 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y + + Wallet + AbortRescan + Y + Added in 0.14.1 + Wallet AddMultiSigAddress @@ -721,12 +745,6 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y - - Wallet - InstantSendToAddress - Y - - Wallet KeePass @@ -779,7 +797,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ListSinceBlock Y - Updated in 0.14.0 + Updated in 0.14.1 Wallet @@ -791,7 +809,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ListUnspent Y - Updated in 0.14.0 + Updated in 0.14.1 + + + Wallet + ListWallets + Y + Added in 0.14.1 Wallet @@ -821,13 +845,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet SendMany Y - Updated in 0.13.0.0 + Updated in 0.14.1 Wallet SendToAddress Y - + Updated in 0.14.1 Wallet diff --git a/_includes/references.md b/_includes/references.md index 9d685bfc..2dba03cc 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -69,6 +69,7 @@ http://opensource.org/licenses/MIT. {% comment %}{% endcomment %} [rpc abandontransaction]: /en/developer-reference#abandontransaction +[rpc abortrescan]: /en/developer-reference#abortrescan [rpc addmultisigaddress]: /en/developer-reference#addmultisigaddress [rpc addnode]: /en/developer-reference#addnode [rpc addwitnessaddress]: /en/developer-reference#addwitnessaddress @@ -113,6 +114,7 @@ http://opensource.org/licenses/MIT. [rpc getblockheaders]: /en/developer-reference#getblockheaders [rpc getblocktemplate]: /en/developer-reference#getblocktemplate [rpc getchaintips]: /en/developer-reference#getchaintips +[rpc getchaintxstats]: /en/developer-reference#getchaintxstats [rpc getconnectioncount]: /en/developer-reference#getconnectioncount [rpc getdifficulty]: /en/developer-reference#getdifficulty [rpc getgenerate]: /en/developer-reference#getgenerate @@ -156,7 +158,6 @@ http://opensource.org/licenses/MIT. [rpc importprunedfunds]: /en/developer-reference#importprunedfunds [rpc importpubkey]: /en/developer-reference#importpubkey [rpc importwallet]: /en/developer-reference#importwallet -[rpc instantsendtoaddress]: /en/developer-reference#instantsendtoaddress [rpc keepass]: /en/developer-reference#keepass [rpc keypoolrefill]: /en/developer-reference#keypoolrefill [rpc listaccounts]: /en/developer-reference#listaccounts @@ -169,7 +170,9 @@ http://opensource.org/licenses/MIT. [rpc listsinceblock]: /en/developer-reference#listsinceblock [rpc listtransactions]: /en/developer-reference#listtransactions [rpc listunspent]: /en/developer-reference#listunspent +[rpc listwallets]: /en/developer-reference#listwallets [rpc lockunspent]: /en/developer-reference#lockunspent +[rpc logging]: /en/developer-reference#logging [rpc masternode]: /en/developer-reference#masternode [rpc masternodebroadcast]: /en/developer-reference#masternodebroadcast [rpc masternodelist]: /en/developer-reference#masternodelist @@ -202,6 +205,7 @@ http://opensource.org/licenses/MIT. [rpc spork]: /en/developer-reference#spork-rpc [rpc stop]: /en/developer-reference#stop [rpc submitblock]: /en/developer-reference#submitblock +[rpc uptime]: /en/developer-reference#uptime [rpc validateaddress]: /en/developer-reference#validateaddress [rpc verifychain]: /en/developer-reference#verifychain [rpc verifymessage]: /en/developer-reference#verifymessage diff --git a/en/developer-reference.md b/en/developer-reference.md index 79035489..0383a9c1 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -72,6 +72,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/abandontransaction.md %} +{% include devdoc/dash-core/rpcs/rpcs/abortrescan.md %} + {% include devdoc/dash-core/rpcs/rpcs/addmultisigaddress.md %} {% include devdoc/dash-core/rpcs/rpcs/addnode.md %} @@ -160,6 +162,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/getchaintips.md %} +{% include devdoc/dash-core/rpcs/rpcs/getchaintxstats.md %} + {% include devdoc/dash-core/rpcs/rpcs/getconnectioncount.md %} {% include devdoc/dash-core/rpcs/rpcs/getdifficulty.md %} @@ -246,8 +250,6 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/importwallet.md %} -{% include devdoc/dash-core/rpcs/rpcs/instantsendtoaddress.md %} - {% include devdoc/dash-core/rpcs/rpcs/keepass.md %} {% include devdoc/dash-core/rpcs/rpcs/keypoolrefill.md %} @@ -272,8 +274,12 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/listunspent.md %} +{% include devdoc/dash-core/rpcs/rpcs/listwallets.md %} + {% include devdoc/dash-core/rpcs/rpcs/lockunspent.md %} +{% include devdoc/dash-core/rpcs/rpcs/logging.md %} + {% include devdoc/dash-core/rpcs/rpcs/masternode.md %} {% include devdoc/dash-core/rpcs/rpcs/masternodebroadcast.md %} @@ -338,6 +344,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/submitblock.md %} +{% include devdoc/dash-core/rpcs/rpcs/uptime.md %} + {% include devdoc/dash-core/rpcs/rpcs/validateaddress.md %} {% include devdoc/dash-core/rpcs/rpcs/verifychain.md %} From d79945cd879f7fcc06c90056d8b1d5936f1a933b Mon Sep 17 00:00:00 2001 From: thephez Date: Fri, 23 Aug 2019 10:01:01 -0400 Subject: [PATCH 100/117] Config - Update nokogiri version due to CVE-2019-5477 (#150) --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9a9540bd..7d613cdd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -49,10 +49,10 @@ GEM rb-fsevent (>= 0.9.3) rb-inotify (>= 0.9) mercenary (0.3.5) - mini_portile2 (2.3.0) + mini_portile2 (2.4.0) multi_json (1.11.2) - nokogiri (1.8.5) - mini_portile2 (~> 2.3.0) + nokogiri (1.10.4) + mini_portile2 (~> 2.4.0) parallel (1.6.1) rake (10.4.2) rb-fsevent (0.9.7) From 2d740801ae44cfd6435166d3fd931e4d7413cb33 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 5 Sep 2019 16:23:34 -0400 Subject: [PATCH 101/117] RPC - Remove setbip69enabled command (#151) --- _autocrossref.yaml | 2 - _config.yml | 1 - .../devdoc/dash-core/rpcs/quick-reference.md | 1 - .../dash-core/rpcs/rpcs/setbip69enabled.md | 48 ------------------- _includes/helpers/summaries.md | 1 - _includes/layout/base/rpc-table.html | 6 --- _includes/references.md | 1 - en/developer-reference.md | 2 - 8 files changed, 62 deletions(-) delete mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/setbip69enabled.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 4e58f4d5..42aec6d2 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -536,8 +536,6 @@ DIP8: '`sendtoaddress` RPC': rpc sendtoaddress '`setaccount`': rpc setaccount '`setaccount` RPC': rpc setaccount -'`setbip69enabled`': rpc setbip69enabled -'`setbip69enabled` RPC': rpc setbip69enabled '`setban`': rpc setban '`setban` RPC': rpc setban '`setgenerate`': rpc setgenerate diff --git a/_config.yml b/_config.yml index f1acdc0b..3afda231 100644 --- a/_config.yml +++ b/_config.yml @@ -289,7 +289,6 @@ devsearches: - 'SendToAddress': "/en/developer-reference#sendtoaddress" - 'SetAccount': "/en/developer-reference#setaccount" - 'SetBan': "/en/developer-reference#setban" - - 'SetBIP69Enabled': "/en/developer-reference#setbip69enabled" - 'SetGenerate': "/en/developer-reference#setgenerate" - 'SetNetworkActive': "/en/developer-reference#setnetworkactive" - 'SetPrivateSendAmount': "/en/developer-reference#setprivatesendamount" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index b1bc54b2..4497e959 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -263,7 +263,6 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [CreateMultiSig][rpc createmultisig]: {{summary_createMultiSig}} * [EstimateFee][rpc estimatefee]: {{summary_estimateFee}} * [EstimateSmartFee][rpc estimatesmartfee]: {{summary_estimateSmartFee}} {{DASH_UPDATED0_14_1}} -* [SetBIP69Enabled][rpc setbip69enabled]: {{summary_setBIP69Enabled}} {{DASH_NEW0_12_3}} * [SignMessageWithPrivKey][rpc signmessagewithprivkey]: {{summary_signMessageWithPrivKey}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} * [ValidateAddress][rpc validateaddress]: {{summary_validateAddress}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} * [VerifyMessage][rpc verifymessage]: {{summary_verifyMessage}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/setbip69enabled.md b/_includes/devdoc/dash-core/rpcs/rpcs/setbip69enabled.md deleted file mode 100644 index c6dd21c5..00000000 --- a/_includes/devdoc/dash-core/rpcs/rpcs/setbip69enabled.md +++ /dev/null @@ -1,48 +0,0 @@ -{% comment %} -This file is licensed under the MIT License (MIT) available on -http://opensource.org/licenses/MIT. -{% endcomment %} -{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/setbip69enabled.md" %} - -##### SetBIP69Enabled -{% include helpers/subhead-links.md %} - -{% assign summary_setBIP69Enabled="enables or disables BIP69 input/output sorting (regtest network only)" %} - - - -{% autocrossref %} - -The `setbip69enabled` RPC {{summary_setBIP69Enabled}} - -*Parameter #1---enable/disable BIP69 sorting (regtest only)* - -{% itemplate ntpd1 %} -- n: "`enable`" - t: "boolean" - p: "Required
    (exactly 1)" - d: "Set to true to turn on BIP69 sorting, false to turn off." - -{% enditemplate %} - -*Result---`null` or error on failure* - -{% itemplate ntpd1 %} -- n: "`result`" - t: "null" - p: "Required
    (exactly 1)" - d: "JSON `null`. The JSON-RPC error field will be set only if you entered an invalid parameter" - -{% enditemplate %} - -*Example from Dash Core 0.12.3* - -{% highlight bash %} -dash-cli -testnet setbip69enabled true -{% endhighlight %} - -Result (no output from `dash-cli` because result is set to `null`). - -*See also: none* - -{% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index 3e84cb2a..67dd2a17 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -132,7 +132,6 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_sendToAddress="spends an amount to a given address." %} {% assign summary_sentinelPing="was removed in Dash Core 0.14.0." %} {% assign summary_setAccount="puts the specified address in the given account." %} -{% assign summary_setBIP69Enabled="enables or disables BIP69 input/output sorting (regtest network only)" %} {% assign summary_setBan="attempts add or remove a IP/Subnet from the banned list." %} {% assign summary_setGenerate="was removed in Dash Core 0.12.3." %} {% assign summary_setNetworkActive="disables/enables all P2P network activity." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 959d30dd..15133222 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -559,12 +559,6 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y Updated in 0.14.1.0+ - - Util - SetBIP69Enabled - Y - 0.12.3.0+ - Util ValidateAddress diff --git a/_includes/references.md b/_includes/references.md index 2dba03cc..c08fb9bd 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -192,7 +192,6 @@ http://opensource.org/licenses/MIT. [rpc sendtoaddress]: /en/developer-reference#sendtoaddress [rpc setaccount]: /en/developer-reference#setaccount [rpc setban]: /en/developer-reference#setban -[rpc setbip69enabled]: /en/developer-reference#setbip69enabled [rpc setgenerate]: /en/developer-reference#setgenerate [rpc setnetworkactive]: /en/developer-reference#setnetworkactive [rpc setprivatesendamount]: /en/developer-reference#setprivatesendamount diff --git a/en/developer-reference.md b/en/developer-reference.md index 0383a9c1..4a4a7de6 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -318,8 +318,6 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/setban.md %} -{% include devdoc/dash-core/rpcs/rpcs/setbip69enabled.md %} - {% include devdoc/dash-core/rpcs/rpcs/setgenerate.md %} {% include devdoc/dash-core/rpcs/rpcs/setnetworkactive.md %} From 9c2b5e09b3debd327e3a67095449f6bea1e8599a Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 5 Sep 2019 16:29:46 -0400 Subject: [PATCH 102/117] Content - Default regtest port changed 18332->19898 (#152) * Content - Default regtest port changed 18332->19898 Avoids conflict with bitcoin * Content - Update default regtest P2P port to 19899 * Content - Display default devnet port * Formatting --- _includes/devdoc/dash-core/rpcs/intro.md | 2 +- _includes/devdoc/example_intro.md | 2 +- _includes/devdoc/ref_p2p_networking.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/intro.md b/_includes/devdoc/dash-core/rpcs/intro.md index 9f900633..ccc5fe1d 100644 --- a/_includes/devdoc/dash-core/rpcs/intro.md +++ b/_includes/devdoc/dash-core/rpcs/intro.md @@ -37,7 +37,7 @@ languages lacking a suitable native client. The remainder of this section describes the Dash Core RPC protocol in detail. The Dash Core RPC service listens for HTTP `POST` requests on port 9998 in -mainnet mode, 19998 in testnet, or 18332 in regtest mode. The port number can be changed +mainnet mode, 19998 in testnet, or 19898 in regtest mode. The port number can be changed by setting `rpcport` in `dash.conf`. By default the RPC service binds to your server's [localhost][Localhost] loopback network interface so it's not accessible from other servers. diff --git a/_includes/devdoc/example_intro.md b/_includes/devdoc/example_intro.md index 1cbd739b..2ed199d3 100644 --- a/_includes/devdoc/example_intro.md +++ b/_includes/devdoc/example_intro.md @@ -21,7 +21,7 @@ Once installed, you'll have access to three programs: `dashd`, * `dashd` is more useful for programming: it provides a full peer which you can interact with through RPCs to port 9998 (or 19998 - for testnet / 18332 for regtest). + for testnet / 19898 for regtest). * `dash-cli` allows you to send RPC commands to `dashd` from the command line. For example, `dash-cli help` diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index d7886c03..a47a65c1 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -38,8 +38,8 @@ The following constants and defaults are taken from Dash Core's |---------|--------------|-----------------------------------------------|--------------- | Mainnet | 9999 | 0xBD6B0CBF | 0xBF0C6BBD | 0x1e0ffff0 | Testnet | 19999 | 0xFFCAE2CE | 0xCEE2CAFF | 0x1e0ffff0 -| Regtest | 19994 | 0xDCB7C1FC | 0xFCC1B7DC | 0x207fffff -| Devnet | User-defined | 0xCEFFCAE2 | 0xE2CAFFCE | 0x207fffff +| Regtest | 19899 | 0xDCB7C1FC | 0xFCC1B7DC | 0x207fffff +| Devnet | User-defined (default 19799) | 0xCEFFCAE2 | 0xE2CAFFCE | 0x207fffff Note: the testnet start string and nBits above are for testnet3. From 211265790a71d4c984ead275890800fc8ab87d8f Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 9 Sep 2019 10:04:40 -0400 Subject: [PATCH 103/117] RPC - Update getrawtransaction (#153) * RPC - Update getrawtransaction - Move hex field - Update examples * RPC - Add height field to getrawtransaction --- .../dash-core/rpcs/rpcs/getrawtransaction.md | 51 +++++++++++++------ 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md index 550a669c..8758bbcb 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md @@ -70,16 +70,22 @@ deprecated. p: "Required
    (exactly 1)" d: "If the transaction was found, this will be an object describing it" -- n: "{{DEPTH}} →
    `hex`" +{{INCLUDE_DECODE_RAW_TRANSACTION}} +- n: "→
    `hex`" t: "string (hex)" p: "Required
    (exactly 1)" d: "The serialized, hex-encoded data for the provided `txid`" -{{INCLUDE_DECODE_RAW_TRANSACTION}} + - n: "→
    `blockhash`" t: "string (hex)" p: "Optional
    (0 or 1)" d: "If the transaction has been included in a block on the local best block chain, this is the hash of that block encoded as hex in RPC byte order" +- n: "→
    `height`" + t: "number (int)" + p: "Optional
    (0 or 1)" + d: "The block height where the transaction was mined" + - n: "→
    `confirmations`" t: "number (int)" p: "Required
    (exactly 1)" @@ -145,11 +151,10 @@ Result: {% highlight json %} { - "hex": "02000000015d0b26079696875e9fc3cb480420aae3c8b1da628fbb14cc718066df7fe7c5fd010000006a47304402202cfa683981898ad9adb8953423a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee27f706baaed86dabb105979c3e6f6e1cb9012103d14eb001cf0908f3a2333d171f6236497a82318a6a6f649b4d7fd8e5c8922e08feffffff021e3f4b4c000000001976a914b02ae52066542b4aec5cf45c7cae3183d7bd322788ac00f90295000000001976a914252c9de3a0ebd5c95886187b24969d4ccdb5576e88ac943d0000", "txid": "f4de3be04efa18e203c9d0b7ad11bb2517f5889338918ed300a374f5bd736ed7", - "size": 225, "version": 2, "type": 0, + "size": 225, "locktime": 15764, "vin": [ { @@ -159,6 +164,9 @@ Result: "asm": "304402202cfa683981898ad9adb8953423a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee27f706baaed86dabb105979c3e6f6e1cb9[ALL] 03d14eb001cf0908f3a2333d171f6236497a82318a6a6f649b4d7fd8e5c8922e08", "hex": "47304402202cfa683981898ad9adb8953423a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee27f706baaed86dabb105979c3e6f6e1cb9012103d14eb001cf0908f3a2333d171f6236497a82318a6a6f649b4d7fd8e5c8922e08" }, + "value": 37.80000000, + "valueSat": 3780000000, + "address": "yTsGq4wV8WF5GKLaYV2C43zrkr2sfTtysT", "sequence": 4294967294 } ], @@ -175,7 +183,10 @@ Result: "addresses": [ "ycNwAN4DQ7Xnw5XLKg84SR4U1GE22FfLNQ" ] - } + }, + "spentTxId": "85b40136f077cded9587022645fde82389e2f01b0bec697d8cd22ccab930f3d3", + "spentIndex": 19, + "spentHeight": 20631 }, { "value": 25.00000000, @@ -189,17 +200,21 @@ Result: "addresses": [ "yPi1JKw5fn8bMFsCCtnkGagogW6GXwGktZ" ] - } + }, + "spentTxId": "90aa8902dbab71c07a5ac06dfe45c5e5fa1f032788b5f916951d0969c9feef39", + "spentIndex": 1, + "spentHeight": 24630 } ], + "hex": "02000000015d0b26079696875e9fc3cb480420aae3c8b1da628fbb14cc718066df7fe7c5fd010000006a47304402202cfa683981898ad9adb8953423a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee27f706baaed86dabb105979c3e6f6e1cb9012103d14eb001cf0908f3a2333d171f6236497a82318a6a6f649b4d7fd8e5c8922e08feffffff021e3f4b4c000000001976a914b02ae52066542b4aec5cf45c7cae3183d7bd322788ac00f90295000000001976a914252c9de3a0ebd5c95886187b24969d4ccdb5576e88ac943d0000", "blockhash": "0000000005f395d62a40ef9f2a13000bd4076e2131c8671db8333a5b31e4403f", "height": 15765, - "confirmations": 1, + "confirmations": 153657, "time": 1546278750, "blocktime": 1546278750, "instantlock": true, - "instantlock_internal": true, - "chainlock": false + "instantlock_internal": false, + "chainlock": true } {% endhighlight %} @@ -208,7 +223,7 @@ A special transaction (CbTx) in serialized transaction format: {% highlight bash %} dash-cli getrawtransaction \ - 414a3911a274053beb867c79ad9a19bf508041554f147a1a2c73f8f9bc029717 + 25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56 {% endhighlight %} Result (wrapped): @@ -227,7 +242,7 @@ Get the same transaction in JSON: {% highlight bash %} dash-cli getrawtransaction \ -414a3911a274053beb867c79ad9a19bf508041554f147a1a2c73f8f9bc029717 \ +25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56 \ 1 {% endhighlight %} @@ -235,11 +250,10 @@ Result: {% highlight json %} { - "hex": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff2703ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000ffffffff02809e4730000000001976a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac809e4730000000001976a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac00000000460200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3", "txid": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56", - "size": 229, "version": 3, "type": 5, + "size": 229, "locktime": 0, "vin": [ { @@ -260,7 +274,10 @@ Result: "addresses": [ "yeuGUfPMrbEqAS2Pw1wonYgEPbM4LAA9LK" ] - } + }, + "spentTxId": "1790b286922d1a439bdc056939bc902a222f9d66ee63d8427805617eedf835bd", + "spentIndex": 83, + "spentHeight": 94680 }, { "value": 8.10000000, @@ -285,12 +302,14 @@ Result: "merkleRootMNList": "877392defa24888af72aa15f92b6609e71db1b385c1895bf870896398bc0e578", "merkleRootQuorums": "a320b95dab4963ca2547434d63ac8203835dfd0ce245924fa83dc6bab6ac57c7" }, + "hex": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff2703ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000ffffffff02809e4730000000001976a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac809e4730000000001976a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac00000000460200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3", "blockhash": "00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b", "height": 86190, - "confirmations": 2, + "confirmations": 83233, "time": 1556114577, "blocktime": 1556114577, - "instantlock": false, + "instantlock": true, + "instantlock_internal": false, "chainlock": true } {% endhighlight %} From 1d8d23d083130d70984a1b7a451cb08dad66f18f Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 9 Sep 2019 11:02:08 -0400 Subject: [PATCH 104/117] RPC - add IS fields to getblock Update RPC table for getrawtx --- _includes/devdoc/dash-core/rpcs/quick-reference.md | 2 +- _includes/devdoc/dash-core/rpcs/rpcs/getblock.md | 10 ++++++++++ .../devdoc/dash-core/rpcs/rpcs/getrawtransaction.md | 4 ++-- _includes/layout/base/rpc-table.html | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 4497e959..17efe620 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -248,7 +248,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [DecodeRawTransaction][rpc decoderawtransaction]: {{summary_decodeRawTransaction}} {{UPDATED0_13_0}} * [DecodeScript][rpc decodescript]: {{summary_decodeScript}} * [FundRawTransaction][rpc fundrawtransaction]: {{summary_fundRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}} -* [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{DASH_UPDATED0_14_0}} +* [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{DASH_UPDATED0_14_1}} * [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} {{DASH_UPDATED0_14_1}} * [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md index dc07cc85..69445d2e 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblock.md @@ -217,6 +217,16 @@ The `getblock` RPC {{summary_getBlock}} {{INCLUDE_DECODE_RAW_TRANSACTION}} +- n: "→ →
    `instantlock`" + t: "bool" + p: "Required
    (exactly 1)" + d: "If set to `true`, this transaction is locked (by InstantSend or a ChainLock)" + +- n: "→ →
    `instantlock_internal`" + t: "bool" + p: "Required
    (exactly 1)" + d: "If set to `true`, this transaction has an InstantSend lock" + - n: "→
    `cbTx`" t: "object" p: "Required
    (exactly 1)" diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md index 8758bbcb..59601405 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md @@ -101,7 +101,7 @@ deprecated. p: "Optional
    (0 or 1)" d: "This field is currently identical to the time field described above" -- n: "
    `instantlock`" +- n: "→
    `instantlock`" t: "bool" p: "Required
    (exactly 1)" d: "If set to `true`, this transaction is locked (by InstantSend or a ChainLock)" @@ -111,7 +111,7 @@ deprecated. p: "Required
    (exactly 1)" d: "If set to `true`, this transaction has an InstantSend lock" -- n: "
    `chainlock`" +- n: "→
    `chainlock`" t: "bool" p: "Required
    (exactly 1)" d: "*Added in Dash Core 0.14.0*

    If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org)" diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 15133222..4c9f2ef9 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -497,7 +497,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Rawtransactions GetRawTransaction Y - Updated in 0.14.0.0 + Updated in 0.14.1.0 Rawtransactions From 3a68e8987a79019d8bf49abd69c03162ab211034 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 11 Sep 2019 14:52:02 -0400 Subject: [PATCH 105/117] RPC - Update fundrawtransaction and gettxout (#156) * RPC - Remove version from gettxout * RPC - deprecated reserveChangeKey in fundrawtx --- _includes/devdoc/dash-core/rpcs/quick-reference.md | 4 ++-- .../devdoc/dash-core/rpcs/rpcs/fundrawtransaction.md | 2 +- _includes/devdoc/dash-core/rpcs/rpcs/gettxout.md | 8 +------- _includes/layout/base/rpc-table.html | 4 ++-- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 17efe620..48fc4584 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -135,7 +135,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetMerkleBlocks][rpc getmerkleblocks]: {{summary_getMerkleBlocks}} {{DASH_NEW0_14_1}} * [GetSpecialTxes][rpc getspecialtxes]: {{summary_getSpecialTxes}} {{DASH_NEW0_13_1}} * [GetSpentInfo][rpc getspentinfo]: {{summary_getSpentInfo}} {{DASH_NEW0_12_1}} -* [GetTxOut][rpc gettxout]: {{summary_getTxOut}} +* [GetTxOut][rpc gettxout]: {{summary_getTxOut}} {{DASH_UPDATED0_14_1}} * [GetTxOutProof][rpc gettxoutproof]: {{summary_getTxOutProof}} {{NEW0_11_0}} * [GetTxOutSetInfo][rpc gettxoutsetinfo]: {{summary_getTxOutSetInfo}} {{DASH_UPDATED0_14_1}} * [PreciousBlock][rpc preciousblock]: {{summary_preciousBlock}} {{DASH_NEW0_12_3}} {{NEW0_14_0}} @@ -247,7 +247,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [CreateRawTransaction][rpc createrawtransaction]: {{summary_createRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_1}} * [DecodeRawTransaction][rpc decoderawtransaction]: {{summary_decodeRawTransaction}} {{UPDATED0_13_0}} * [DecodeScript][rpc decodescript]: {{summary_decodeScript}} -* [FundRawTransaction][rpc fundrawtransaction]: {{summary_fundRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}} +* [FundRawTransaction][rpc fundrawtransaction]: {{summary_fundRawTransaction}} {{DASH_UPDATED0_14_1}} * [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{DASH_UPDATED0_14_1}} * [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} {{DASH_UPDATED0_14_1}} * [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/fundrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/fundrawtransaction.md index e233500c..0575c9dc 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/fundrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/fundrawtransaction.md @@ -62,7 +62,7 @@ Note: For backwards compatibility, passing in a `true` instead of an object will - n: "→
    `reserveChangeKey`" t: "bool" p: "Optional
    (0 or 1)" - d: "*Added in Bitcoin Core 0.14.0*

    Reserves the change output key from the keypool. The default is `true`. Before 0.14.0, the used keypool key was never marked as change-address key and directly returned to the keypool (leading to address reuse)." + d: "*Deprecated and ignored in Dash Core 0.14.1*

    Reserves the change output key from the keypool. The default is `true`. Before Bitcoin Core 0.14.0, the used keypool key was never marked as change-address key and directly returned to the keypool (leading to address reuse)." - n: "→
    `feeRate`" t: "numeric (bitcoins)" diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gettxout.md b/_includes/devdoc/dash-core/rpcs/rpcs/gettxout.md index 57321cbf..22a52205 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gettxout.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gettxout.md @@ -102,11 +102,6 @@ The `gettxout` RPC {{summary_getTxOut}} p: "Required
    (1 or more)" d: "A P2PKH or P2SH address" -- n: "→
    `version`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "The transaction version number of the transaction containing the pubkey script" - - n: "→
    `coinbase`" t: "bool" p: "Required
    (exactly 1)" @@ -114,7 +109,7 @@ The `gettxout` RPC {{summary_getTxOut}} {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.1* Get the UTXO from the following transaction from the first output index ("0"), searching the memory pool if necessary. @@ -142,7 +137,6 @@ Result: "ycwoiAibTjpwnoCZSX7S4kiB2H8wULw9qo" ] }, - "version": 1, "coinbase": false } {% endhighlight %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 4c9f2ef9..565f4d50 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -179,7 +179,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Blockchain GetTxOut Y - + Updated in 0.14.1 Blockchain @@ -491,7 +491,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Rawtransactions FundRawTransaction Y - Updated in 0.12.3.0 + Updated in 0.14.1 Rawtransactions From 8eb56e6fc92e558fdc0f9847c12784369250a397 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 16 Sep 2019 09:57:41 -0400 Subject: [PATCH 106/117] Guide - Update Dash features section (#157) * Content - Update InstantSend section with LLMQ-IS detail * Content - Add historical reference section for deprecated design info * Content - Move old MN sync section to historical reference * Formatting fix * Typo fixes * Content - move old MN payment description to historical reference --- _includes/devdoc/guide_dash_features.md | 499 ++++++++++++------------ 1 file changed, 253 insertions(+), 246 deletions(-) diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 47723722..6474a4f3 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -32,108 +32,11 @@ economy. {% autocrossref %} Dash Core's InstantSend feature provides a way to lock transaction inputs and -enable secure, instantaneous transactions. Since Dash Core 0.13.0, any qualifying -transaction is automatically upgraded to InstantSend by the network without a -need for the sending wallet to explicitly request it. For these simple -transactions (those containing 4 or fewer inputs), the previous requirement for -a special InstantSend transaction fee was also removed. The criteria for -determining eligibility can be found in the lists of limitations below. +enable secure, instantaneous transactions. The network automatically attempts to +upgrade any qualifying transaction to InstantSend without a need for the sending +wallet to explicitly request it. -The following video provides an overview with a good introduction to the details -including the InstantSend vulnerability that was fixed in Dash Core 0.12.2. -Some specific points in the video are listed here for quick reference: - - - 2:00 - InstantSend restrictions - - 5:00 - Masternode quorum creation - - 6:00 - Input locking - - 7:45 - Quorum score calculation / Requirement for block confirmations - - 9:00 - Description of Dash Core pre-0.12.2 InstantSend vulnerability - - 13:00 - Description of vulnerability fix / Post Dash Core 0.12.2 operation - -{% endautocrossref %} - - - -{% autocrossref %} - -*InstantSend Data Flow* - -| **InstantSend Client** | **Direction** | **Peers** | **Description** | -| `inv` message (ix) | → | | Client sends inventory for transaction lock request -| | ← | `getdata` message (ix) | Peer responds with request for transaction lock request -| `ix` message | → | | Client sends InstantSend transaction lock request -| | ← | `inv` message (txlvote) | Masternodes in the [quorum](#quorum-selection) respond with votes -| `getdata` message (txlvote) | → | | Client requests vote -| | ← | `txlvote` message | Peer responds with vote - -Once an InstantSend lock has been requested, the `instantsend` field of various -RPCs (e.g. the `getmempoolentry` RPC) is set to `true`. Then, if a sufficient -number of votes approve the transaction lock, the InstantSend transaction is approved -the `instantlock` field of the RPC is set to `true`. - -If an InstantSend transaction is a valid transaction but does not receive a -transaction lock, it reverts to being a standard transaction. - -There are a number of limitations on InstantSend transactions: - -* The lock request will timeout 15 seconds after the first vote is seen (`INSTANTSEND_LOCK_TIMEOUT_SECONDS`) -* The lock request will fail if it has not been locked after 60 seconds (`INSTANTSEND_FAILED_TIMEOUT_SECONDS`) -* A “per-input” fee of 0.0001 DASH per input is required for non-simple transactions (inputs >=5) since they place a higher load on the masternodes. This fee was most -recently decreased by [DIP-0001](https://github.com/dashpay/dips/blob/master/dip-0001.md). -* To be used in an InstantSend transaction, an input must have at least the number confirmations (block depth) indicated by the table below - -| **Network** | **Confirmations Required** | -|---------|--------------| -| Mainnet | 6 Blocks | -| Testnet | 2 Blocks | -| Regtest | 2 Blocks | -| Devnet | 2 Blocks | - -There are some further limitations on Automatic InstantSend transactions: - -* DIP3 must be active -* Spork 16 must be enabled -* Mempool usage must be lower than 10% (`AUTO_IX_MEMPOOL_THRESHOLD`). As of Dash Core 0.13.0, this corresponds to a mempool size of 30 MB (`DEFAULT_MAX_MEMPOOL_SIZE` = 300 MB). - -**Historical Note** - -Prior to Dash Core 0.13.0, `instantsend` and `instantlock` values were not -available via RPC. At that time, the InstantSend system worked as described below. - -Once a sufficient number of votes approved the transaction lock, the InstantSend -transaction was approved and showed 5 confirmations (`DEFAULT_INSTANTSEND_DEPTH`). - -NOTE: The 5 "pseudo-confirmations" were shown to convey confidence that the -transaction was secure from double-spending and DID NOT indicate the transaction -had already been confirmed to a block depth of 5 in the blockchain. - -{% endautocrossref %} - -#### LLMQ InstantSend -{% include helpers/subhead-links.md %} - -{% autocrossref %} - -The introduction of Long-Living Masternode Quorums in Dash Core 0.14 provides -a foundation to further scale InstantSend. LLMQs enable the transaction input -locking process (and resulting network traffic) to occur within the quorum. This -enables further scaling without introducing network congestion since only the -output of the locking process is relayed to the entire Dash network. - -LLMQ-based InstantSend also removes a number of previously required limitations -and simplifies the process by decreasing the number of P2P messages clients must -process. Rather than tracking individual masternode votes for each transaction -input, all required locking information is found within the single `islock` message. - -During the evaluation and transition from standard InstantSend to LLMQ-based -InstantSend, Sporks 2 (`SPORK_2_INSTANTSEND_ENABLED`) and 20 (`SPORK_20_INSTANTSEND_LLMQ_BASED`) -will both be used. Spork 2 enables or disables the entire InstantSend feature, -while spork 20 determines which of the two InstantSend mechanisms is active when -InstantSend is enabled. - -There are still some limitations on LLMQ-based InstantSend transactions: - -* Transaction inputs must either: +* To qualify for InstantSend, transaction inputs must either: * Be locked by InstantSend * Be in a block that has a ChainLock * Have at least the number confirmations (block depth) indicated by the table below @@ -141,24 +44,20 @@ There are still some limitations on LLMQ-based InstantSend transactions: | **Network** | **Confirmations Required** | |---------|--------------| | Mainnet | 6 Blocks | - | Testnet | 2 Blocks | - | Regtest | 2 Blocks | - | Devnet | 2 Blocks | + | Testnet / Regtest / Devnet | 2 Blocks | +The introduction of Long-Living Masternode Quorums in Dash Core 0.14 provided +a foundation to scale InstantSend. The transaction input locking process (and +resulting network traffic) now occurs only within the quorum. This minimizes +network congestion since only the `islock` message produced by the locking +process is relayed to the entire Dash network. This message contains all the +information necessary to verify a successful transaction lock. -The improvements over the old InstantSend system include both the addition of new -functionality and the removal of prior limitations. The following table details -these improvements: - -| **Status** | **Improvement** | -|---------|--------------| -| New | Transactions can be chained if the inputs are from transactions that are also locked | -| New | InstantSend locks are attempted for all transactions (`tx` messages) - no need to request it via the special message (`ix` message) | -| New | Successful locks are indicated by a single `islock` message - no need to track votes (`txlvote` messages) for each input | -| Updated | Limit on number of inputs removed | -| Updated | Limit on transaction value removed | -| Updated | Timeout for locking removed - transaction locks will only be removed once the transaction is confirmed in a ChainLocked block | -| Updated | Custom InstantSend fee removed | +Sporks 2 (`SPORK_2_INSTANTSEND_ENABLED`) and 20 (`SPORK_20_INSTANTSEND_LLMQ_BASED`) +are used to manage InstantSend. Spork 2 enables or disables the entire +InstantSend feature. Spork 20 was used to support the transition to LLMQ-based +InstantSend and is currently retained for backward compatibility. It will be +deprecated in a future release. Note: A transaction will __not__ be included in the block template (from `getblocktemplate`) unless it: @@ -182,6 +81,9 @@ block. | `getdata` message (islock) | → | | Client requests lock message | | ← | `islock` message | Quorum responds with lock message +Once a transaction lock is approved, the `instantlock` field of various RPCs +is set to `true` (e.g. the `getmempoolentry` RPC). + {% endautocrossref %} ### ChainLocks @@ -415,27 +317,6 @@ payments much more predictable, and also allow masternode payments to be enforced for all blocks (enforcement for superblocks was not possible in the previous system). -**Historical Note** - -Prior to DIP3, the masternode payment process operated as described below. - -Masternode payment uses a verifiable process to determine which masternode is -paid in each block. When a new block is processed, a quorum of -`MNPAYMENTS_SIGNATURES_TOTAL` (10) masternodes vote on the next masternode -payee. The quorum is calculated deterministically based on the distance between -masternode's hash and the block's proof of work. - -Each member of the quorum issues a 'mnw' message that is relayed to the -network. The payee is selected from a subset of masternodes made up of 10% -of eligible nodes that have been waiting the longest since their last payment. -The winner is then determined based on a number of parameters including the -distance between the its hash and the block's proof of work. For additional -detail, reference this [Official Documentation Payment Logic page](https://docs.dash.org/en/0.12.3/masternodes/understanding.html#payment-logic). - -Nodes receiving a `mnw` message verify the validity of the message before -relaying it to their peers. If the message is invalid, the sending node may be -treated as misbehaving and have its ban score increased. - {% endautocrossref %} ### Masternode Sync @@ -525,113 +406,6 @@ The following actions only run when the masternode sync is past `MASTERNODE_SYNC | 60 | InstantSend Check/Remove | Remove expired/orphaned/invalid InstantSend candidates and votes (instantx.cpp) | | 300 | Maintenance | Check/remove/reprocess governance objects (governance.cpp) | -{% endautocrossref %} - -#### Previous System - - -![Warning icon](/img/icons/icon_warning.svg) **The following information is for -historical reference only. It describes the masternode sync process that was -used prior to the deterministic masternode list update in Dash Core v0.13 that -implemented DIP3.** - -Please see [here for details of the current system](#masternode-sync) - -##### Initial Sync - - -{% autocrossref %} - -This diagram shows the order in which P2P messages are sent to perform -masternode synchronization initially after startup. - -![Masternode Sync (Initial)](/img/dev/en-masternode-sync-initial.svg) - -The following table details the data flow of P2P messages exchanged during -initial masternode synchronization before the activation of DIP3 and Spork 15. - -| **Syncing Node Message** | **Direction** | **Masternode Response** | **Description** | -| **1. Sporks** | | | | -| `getsporks` message | → | | Syncing node requests sporks -| | ← | `spork` message(s) | -| **2. Masternode List** | | | Sync Masternode list from other connected clients | -| `dseg` message | → | | Syncing node requests masternode list -| | ← | `ssc` message | Number of entries in masternode list (MASTERNODE_SYNC_LIST)

    Only sent if requesting entire list -| | ← | `inv` message(s) (mnb) | MSG_MASTERNODE_ANNOUNCE -| | ← | `inv` message(s) (mnp) | MSG_MASTERNODE_PING -| `getdata` message(s) (mnb) | → | | (Optional) -| `getdata` message(s) (mnp) | → | | (Optional) -| | ← | `mnb` message(s) | (If requested) Masternode announce message -| | ← | `mnp` message(s) | (If requested) Masternode ping message -| **3. Masternode payments** | | | Ask node for all payment votes it has (new nodes will only return votes for future payments) | -| `mnget` message | → | | Syncing node requests masternode payment sync -| | ← | `ssc` message | Number of entries in masternode payment list -| | ← | `inv` message(s) (mnw) | MSG_MASTERNODE_PAYMENT_VOTE -| `getdata` message(s) (mnw) | → | | (Optional) -| | ← | `mnw` message(s) | (If requested) Masternode payment vote message -| **4. Governance** | | | See [Governance sync](#governance) | - - -##### Ongoing Sync -{% include helpers/subhead-links.md %} - -Once a masternode completes an initial full sync, continuing synchronization is -maintained by the exchange of P2P messages with other nodes. This diagram shows -an overview of the messages exchanged to keep the masternode list, masternode -payments, and governance objects synchronized between masternodes. - -![Masternode Sync (Ongoing)](/img/dev/en-masternode-sync-ongoing.svg) - -**Recurring Ping** - -![Warning icon](/img/icons/icon_warning.svg) NOTE: Deprecated following -activation of DIP3. - -Each masternode issues a ping (`mnp` message) periodically to notify the network -that it is still online. Masternodes that do not issue a ping for 3 hours will -be put into the `MASTERNODE_NEW_START_REQUIRED` state and will need to issue a -masternode announce (`mnb` message). - -**Masternode List** - -![Warning icon](/img/icons/icon_warning.svg) NOTE: Deprecated following -activation of DIP3. - -After the initial masternode list has been received, it is kept current by a -combination of the periodic `mnp` messages received from other masternodes, -the `mnb` messages sent by masternodes as they come online, and `mnv` messages -to verify that other masternodes are valid. - -Also, `dseg` messages can be sent to request masternode info when messages are -received that have been signed by an unrecognized masternode (most masternode/governance -messages include a `vin` value that can be used to verify the masternode's -unspent 1000 Dash). - -Unsynchronized peers may send a `dseg` message to request the entire masternode list. - -**Masternode Payment** - -![Warning icon](/img/icons/icon_warning.svg) NOTE: Deprecated following -activation of DIP3. - -After the initial masternode payment synchronization, payment information is -kept current via the `mnw` messages relayed on the network. Unsynchronized peers -may send a `mnget` message to request masternode payment sync. - -##### Sync Schedule -{% include helpers/subhead-links.md %} - -Prior to the deterministic masternode system introduced by DIP3 in Dash Core 0.13, -the following additional sync actions were also required. - -| **Period (seconds)** | **Action** | **Description** | -| 1 | MN Check | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Check the state of each masternode that is still funded and not banned. The action occurs once per second, but individual masternodes are only checked at most every 5 seconds (only a subset of masternodes are checked each time it runs) (masternodeman.cpp) | -| 60 | MN Check/Remove | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Remove spent masternodes and check the state of inactive ones (masternodeman.cpp) | -| 60 | MN Payment Check/Remove | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Remove old masternode payment votes/blocks (masternode-payments.cpp) | -| 300 | Full verification | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Verify masternodes via direct requests (`mnv` messages - note time constraints in the Developer Reference section) (masternodeman.cpp) | -| 600 | Manage State | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Sends masternode pings (`mnp` message). Also sends initial masternode broadcast (`mnb` message) for local masternodes. (activemasternode.cpp) | - - {% endautocrossref %} ### Governance @@ -907,7 +681,7 @@ transaction. | PoSe Parameter | Value | Example Value | |-|-|-| -| Maximux PoSe Score | Number of registered masternodes | 5000 | +| Maximum PoSe Score | Number of registered masternodes | 5000 | | PoSe Score Increases | Maximum PoSe Score * 2/3 | 3333 | | PoSe Score Decreases | 1 (per block) | Always `1` | @@ -936,3 +710,236 @@ For example, using the values from above with 5000 masternodes: | 2 | 10000 | End of Payment Cycle 2 | - | 6333 | PoSe Banned | {% endautocrossref %} + +### Historical Reference + + +![Warning icon](/img/icons/icon_warning.svg) **The following information is +deprecated and for historical reference only. It describes features that have +been redesigned and no longer operate as described below.** + +#### InstantSend (original) +{% include helpers/subhead-links.md %} + +{% autocrossref %} + +![Warning icon](/img/icons/icon_warning.svg) **Please see [here for details of the current InstantSend design](#instantsend).** + +Dash Core's InstantSend feature provides a way to lock transaction inputs and +enable secure, instantaneous transactions. Since Dash Core 0.13.0, any qualifying +transaction is automatically upgraded to InstantSend by the network without a +need for the sending wallet to explicitly request it. For these simple +transactions (those containing 4 or fewer inputs), the previous requirement for +a special InstantSend transaction fee was also removed. The criteria for +determining eligibility can be found in the lists of limitations below. + +The following video provides an overview with a good introduction to the details +including the InstantSend vulnerability that was fixed in Dash Core 0.12.2. +Some specific points in the video are listed here for quick reference: + + - 2:00 - InstantSend restrictions + - 5:00 - Masternode quorum creation + - 6:00 - Input locking + - 7:45 - Quorum score calculation / Requirement for block confirmations + - 9:00 - Description of Dash Core pre-0.12.2 InstantSend vulnerability + - 13:00 - Description of vulnerability fix / Post Dash Core 0.12.2 operation + +{% endautocrossref %} + + + +{% autocrossref %} + +*InstantSend Data Flow* + +| **InstantSend Client** | **Direction** | **Peers** | **Description** | +| `inv` message (ix) | → | | Client sends inventory for transaction lock request +| | ← | `getdata` message (ix) | Peer responds with request for transaction lock request +| `ix` message | → | | Client sends InstantSend transaction lock request +| | ← | `inv` message (txlvote) | Masternodes in the [quorum](#quorum-selection) respond with votes +| `getdata` message (txlvote) | → | | Client requests vote +| | ← | `txlvote` message | Peer responds with vote + +Once an InstantSend lock has been requested, the `instantsend` field of various +RPCs (e.g. the `getmempoolentry` RPC) is set to `true`. Then, if a sufficient +number of votes approve the transaction lock, the InstantSend transaction is approved +the `instantlock` field of the RPC is set to `true`. + +If an InstantSend transaction is a valid transaction but does not receive a +transaction lock, it reverts to being a standard transaction. + +There are a number of limitations on InstantSend transactions: + +* The lock request will timeout 15 seconds after the first vote is seen (`INSTANTSEND_LOCK_TIMEOUT_SECONDS`) +* The lock request will fail if it has not been locked after 60 seconds (`INSTANTSEND_FAILED_TIMEOUT_SECONDS`) +* A “per-input” fee of 0.0001 DASH per input is required for non-simple transactions (inputs >=5) since they place a higher load on the masternodes. This fee was most +recently decreased by [DIP-0001](https://github.com/dashpay/dips/blob/master/dip-0001.md). +* To be used in an InstantSend transaction, an input must have at least the number confirmations (block depth) indicated by the table below + +| **Network** | **Confirmations Required** | +|---------|--------------| +| Mainnet | 6 Blocks | +| Testnet | 2 Blocks | +| Regtest | 2 Blocks | +| Devnet | 2 Blocks | + +There are some further limitations on Automatic InstantSend transactions: + +* DIP3 must be active +* Spork 16 must be enabled +* Mempool usage must be lower than 10% (`AUTO_IX_MEMPOOL_THRESHOLD`). As of Dash Core 0.13.0, this corresponds to a mempool size of 30 MB (`DEFAULT_MAX_MEMPOOL_SIZE` = 300 MB). + +**Historical Note** + +Prior to Dash Core 0.13.0, `instantsend` and `instantlock` values were not +available via RPC. At that time, the InstantSend system worked as described below. + +Once a sufficient number of votes approved the transaction lock, the InstantSend +transaction was approved and showed 5 confirmations (`DEFAULT_INSTANTSEND_DEPTH`). + +NOTE: The 5 "pseudo-confirmations" were shown to convey confidence that the +transaction was secure from double-spending and DID NOT indicate the transaction +had already been confirmed to a block depth of 5 in the blockchain. + +{% endautocrossref %} + + +#### Masternode Payment (original) +{% include helpers/subhead-links.md %} + +![Warning icon](/img/icons/icon_warning.svg) **The following information is for +historical reference only. It describes the masternode payment process that was +used prior to the deterministic masternode list update in Dash Core v0.13 that +implemented DIP3.** + +Please see [here for details of the current system](#masternode-payment) + +{% autocrossref %} + +Prior to DIP3, the masternode payment process operated as described below. + +Masternode payment uses a verifiable process to determine which masternode is +paid in each block. When a new block is processed, a quorum of +`MNPAYMENTS_SIGNATURES_TOTAL` (10) masternodes vote on the next masternode +payee. The quorum is calculated deterministically based on the distance between +masternode's hash and the block's proof of work. + +Each member of the quorum issues a 'mnw' message that is relayed to the +network. The payee is selected from a subset of masternodes made up of 10% +of eligible nodes that have been waiting the longest since their last payment. +The winner is then determined based on a number of parameters including the +distance between the its hash and the block's proof of work. For additional +detail, reference this [Official Documentation Payment Logic page](https://docs.dash.org/en/0.12.3/masternodes/understanding.html#payment-logic). + +Nodes receiving a `mnw` message verify the validity of the message before +relaying it to their peers. If the message is invalid, the sending node may be +treated as misbehaving and have its ban score increased. + +{% endautocrossref %} + + +#### Masternode Sync (original) + + +![Warning icon](/img/icons/icon_warning.svg) **The following information is for +historical reference only. It describes the masternode sync process that was +used prior to the deterministic masternode list update in Dash Core v0.13 that +implemented DIP3.** + +Please see [here for details of the current system](#masternode-sync) + +##### Initial Sync + + +{% autocrossref %} + +This diagram shows the order in which P2P messages are sent to perform +masternode synchronization initially after startup. + +![Masternode Sync (Initial)](/img/dev/en-masternode-sync-initial.svg) + +The following table details the data flow of P2P messages exchanged during +initial masternode synchronization before the activation of DIP3 and Spork 15. + +| **Syncing Node Message** | **Direction** | **Masternode Response** | **Description** | +| **1. Sporks** | | | | +| `getsporks` message | → | | Syncing node requests sporks +| | ← | `spork` message(s) | +| **2. Masternode List** | | | Sync Masternode list from other connected clients | +| `dseg` message | → | | Syncing node requests masternode list +| | ← | `ssc` message | Number of entries in masternode list (MASTERNODE_SYNC_LIST)

    Only sent if requesting entire list +| | ← | `inv` message(s) (mnb) | MSG_MASTERNODE_ANNOUNCE +| | ← | `inv` message(s) (mnp) | MSG_MASTERNODE_PING +| `getdata` message(s) (mnb) | → | | (Optional) +| `getdata` message(s) (mnp) | → | | (Optional) +| | ← | `mnb` message(s) | (If requested) Masternode announce message +| | ← | `mnp` message(s) | (If requested) Masternode ping message +| **3. Masternode payments** | | | Ask node for all payment votes it has (new nodes will only return votes for future payments) | +| `mnget` message | → | | Syncing node requests masternode payment sync +| | ← | `ssc` message | Number of entries in masternode payment list +| | ← | `inv` message(s) (mnw) | MSG_MASTERNODE_PAYMENT_VOTE +| `getdata` message(s) (mnw) | → | | (Optional) +| | ← | `mnw` message(s) | (If requested) Masternode payment vote message +| **4. Governance** | | | See [Governance sync](#governance) | + + +##### Ongoing Sync +{% include helpers/subhead-links.md %} + +Once a masternode completes an initial full sync, continuing synchronization is +maintained by the exchange of P2P messages with other nodes. This diagram shows +an overview of the messages exchanged to keep the masternode list, masternode +payments, and governance objects synchronized between masternodes. + +![Masternode Sync (Ongoing)](/img/dev/en-masternode-sync-ongoing.svg) + +**Recurring Ping** + +![Warning icon](/img/icons/icon_warning.svg) NOTE: Deprecated following +activation of DIP3. + +Each masternode issues a ping (`mnp` message) periodically to notify the network +that it is still online. Masternodes that do not issue a ping for 3 hours will +be put into the `MASTERNODE_NEW_START_REQUIRED` state and will need to issue a +masternode announce (`mnb` message). + +**Masternode List** + +![Warning icon](/img/icons/icon_warning.svg) NOTE: Deprecated following +activation of DIP3. + +After the initial masternode list has been received, it is kept current by a +combination of the periodic `mnp` messages received from other masternodes, +the `mnb` messages sent by masternodes as they come online, and `mnv` messages +to verify that other masternodes are valid. + +Also, `dseg` messages can be sent to request masternode info when messages are +received that have been signed by an unrecognized masternode (most masternode/governance +messages include a `vin` value that can be used to verify the masternode's +unspent 1000 Dash). + +Unsynchronized peers may send a `dseg` message to request the entire masternode list. + +**Masternode Payment** + +![Warning icon](/img/icons/icon_warning.svg) NOTE: Deprecated following +activation of DIP3. + +After the initial masternode payment synchronization, payment information is +kept current via the `mnw` messages relayed on the network. Unsynchronized peers +may send a `mnget` message to request masternode payment sync. + +##### Sync Schedule +{% include helpers/subhead-links.md %} + +Prior to the deterministic masternode system introduced by DIP3 in Dash Core 0.13, +the following additional sync actions were also required. + +| **Period (seconds)** | **Action** | **Description** | +| 1 | MN Check | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Check the state of each masternode that is still funded and not banned. The action occurs once per second, but individual masternodes are only checked at most every 5 seconds (only a subset of masternodes are checked each time it runs) (masternodeman.cpp) | +| 60 | MN Check/Remove | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Remove spent masternodes and check the state of inactive ones (masternodeman.cpp) | +| 60 | MN Payment Check/Remove | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Remove old masternode payment votes/blocks (masternode-payments.cpp) | +| 300 | Full verification | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Verify masternodes via direct requests (`mnv` messages - note time constraints in the Developer Reference section) (masternodeman.cpp) | +| 600 | Manage State | ![Warning icon](/img/icons/icon_warning.svg) _Deprecated following activation of DIP3 and Spork 15_

    Sends masternode pings (`mnp` message). Also sends initial masternode broadcast (`mnb` message) for local masternodes. (activemasternode.cpp) | + +{% endautocrossref %} From 924eaaa0082d87ebb0c6d1fd3a3ce3328c9bbed9 Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 16 Sep 2019 11:59:28 -0400 Subject: [PATCH 107/117] RPC - Remove unsupported feature (segwit and RBF-related) content (#158) * RPC - Remove segwit-related addwitnessadress * RPC - Remove RBF-related bumpfee * Remove segwit-related comments --- _autocrossref.yaml | 4 - _config.yml | 2 - .../rest/requests/get_block-notxdetails.md | 24 +--- .../dash-core/rest/requests/get_block.md | 24 +--- .../devdoc/dash-core/rpcs/quick-reference.md | 3 - .../dash-core/rpcs/rpcs/addwitnessaddress.md | 67 ---------- .../devdoc/dash-core/rpcs/rpcs/bumpfee.md | 123 ------------------ _includes/helpers/summaries.md | 2 - _includes/helpers/vars.md | 24 ---- _includes/layout/base/rpc-table.html | 12 -- _includes/references.md | 2 - en/developer-reference.md | 4 - 12 files changed, 10 insertions(+), 281 deletions(-) delete mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/addwitnessaddress.md delete mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/bumpfee.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 42aec6d2..0ae94ca8 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -295,14 +295,10 @@ DIP8: '`addmultisigaddress` RPC': rpc addmultisigaddress '`addnode`': rpc addnode '`addnode` RPC': rpc addnode -'`addwitnessaddress`': rpc addwitnessaddress -'`addwitnessaddress` RPC': rpc addwitnessaddress '`backupwallet`': rpc backupwallet '`backupwallet` RPC': rpc backupwallet '`bls`': rpc bls '`bls` RPC': rpc bls -'`bumpfee`': rpc bumpfee -'`bumpfee` RPC': rpc bumpfee '`clearbanned`': rpc clearbanned '`clearbanned` RPC': rpc clearbanned '`createmultisig`': rpc createmultisig diff --git a/_config.yml b/_config.yml index 3afda231..d6a31249 100644 --- a/_config.yml +++ b/_config.yml @@ -169,10 +169,8 @@ devsearches: - 'AbortRescan': "/en/developer-reference#abortrescan" - 'AddMultiSigAddress': "/en/developer-reference#addmultisigaddress" - 'AddNode': "/en/developer-reference#addnode" - - 'AddWitnessAddress': "/en/developer-reference#addwitnessaddress" - 'BackupWallet': "/en/developer-reference#backupwallet" - 'BLS': "/en/developer-reference#bls" - - 'BumpFee': "/en/developer-reference#bumpfee" - 'ClearBanned': "/en/developer-reference#clearbanned" - 'CreateMultisig': "/en/developer-reference#createmultisig" - 'CreateRawTransaction': "/en/developer-reference#createrawtransaction" diff --git a/_includes/devdoc/dash-core/rest/requests/get_block-notxdetails.md b/_includes/devdoc/dash-core/rest/requests/get_block-notxdetails.md index 064208ca..294d4c8e 100644 --- a/_includes/devdoc/dash-core/rest/requests/get_block-notxdetails.md +++ b/_includes/devdoc/dash-core/rest/requests/get_block-notxdetails.md @@ -72,6 +72,11 @@ GET /block/notxdetails/. p: "Required
    (exactly 1)" d: "This block's version number. See [block version numbers][section block versions]" +- n: "→
    `versionHex`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "*Added in Bitcoin Core 0.13.0*

    This block's version number formatted in hexadecimal. See [BIP9 assignments]" + - n: "→
    `merkleroot`" t: "string (hex)" p: "Required
    (exactly 1)" @@ -129,25 +134,6 @@ GET /block/notxdetails/. {% enditemplate %} - - *Examples from Dash Core 0.12.2* Request a block in hex-encoded serialized block format: diff --git a/_includes/devdoc/dash-core/rest/requests/get_block.md b/_includes/devdoc/dash-core/rest/requests/get_block.md index 6abffeb3..360b3834 100644 --- a/_includes/devdoc/dash-core/rest/requests/get_block.md +++ b/_includes/devdoc/dash-core/rest/requests/get_block.md @@ -75,6 +75,11 @@ GET /block/. p: "Required
    (exactly 1)" d: "This block's version number. See [block version numbers][section block versions]" +- n: "→
    `versionHex`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "This block's version number formatted in hexadecimal." + - n: "→
    `merkleroot`" t: "string (hex)" p: "Required
    (exactly 1)" @@ -133,25 +138,6 @@ GET /block/. {% enditemplate %} - - *Examples from Dash Core 0.12.2* Request a block in hex-encoded serialized block format: diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 48fc4584..02f9bfc3 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -332,9 +332,6 @@ default. * [WalletPassphrase][rpc walletpassphrase]: {{summary_walletPassphrase}} * [WalletPassphraseChange][rpc walletpassphrasechange]: {{summary_walletPassphraseChange}} -* {{DASH_NOT_IMPLEMENTED}} [AddWitnessAddress][rpc addwitnessaddress]: {{summary_addWitnessAddress}} {{NEW0_13_0}} -* {{DASH_NOT_IMPLEMENTED}} [BumpFee][rpc bumpfee]: {{summary_bumpFee}} {{NEW0_14_0}} - {% endautocrossref %} #### Removed RPCs diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/addwitnessaddress.md b/_includes/devdoc/dash-core/rpcs/rpcs/addwitnessaddress.md deleted file mode 100644 index 1838291c..00000000 --- a/_includes/devdoc/dash-core/rpcs/rpcs/addwitnessaddress.md +++ /dev/null @@ -1,67 +0,0 @@ -{% comment %} -This file is licensed under the MIT License (MIT) available on -http://opensource.org/licenses/MIT. -{% endcomment %} -{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/addwitnessaddress.md" %} - -##### AddWitnessAddress -{% include helpers/subhead-links.md %} - -{% assign summary_addWitnessAddress="adds a witness address for a script (with pubkey or redeem script known)." %} - - - -{% autocrossref %} - -*Added in Bitcoin Core 0.13.0* - -{{WARNING_ICON}} **_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} -*Requires wallet support. Requires an unlocked wallet or an unencrypted wallet.* - -The `addwitnessaddress` RPC {{summary_addWitnessAddress}} - -*Parameter #1---the witness address* - -{% itemplate ntpd1 %} -- n: "Address" - t: "string (base58)" - p: "Required
    (exactly 1)" - d: "A witness address that gets added to a script. Needs to be in the wallet and uncompressed" - -{% enditemplate %} - -*Result---the witness script* - -{% itemplate ntpd1 %} -- n: "`result`" - t: "string (base58)" - p: "Required
    (exactly 1)" - d: "The value of the new address (P2SH of witness script)" - -{% enditemplate %} - -*Example from Bitcoin Core 0.13.1* - -{% highlight bash %} -bitcoin-cli addwitnessaddress 1BRo7qrYHMPrzdBDzfjmzteBdYAyTMXW75 -{% endhighlight %} - -Result: - -The RPC is disabled by default on mainnet as long as Segregated Witness has not been activated. -`-walletprematurewitness` enables the RPC. - -{% highlight text %} -3LfAujMsBHgQKoxLn59dVbeYPmfUrHSAQb -{% endhighlight %} - -*See also* - -* [BIP-141 - Segregated Witness](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki) -* [BIP-142 - Address Format for Segregated Witness](https://github.com/bitcoin/bips/blob/master/bip-0142.mediawiki) - -{% endcomment %} - -{% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/bumpfee.md b/_includes/devdoc/dash-core/rpcs/rpcs/bumpfee.md deleted file mode 100644 index e91c992b..00000000 --- a/_includes/devdoc/dash-core/rpcs/rpcs/bumpfee.md +++ /dev/null @@ -1,123 +0,0 @@ -{% comment %} -This file is licensed under the MIT License (MIT) available on -http://opensource.org/licenses/MIT. -{% endcomment %} -{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/bumpfee.md" %} - -##### BumpFee -{% include helpers/subhead-links.md %} - -{% assign summary_bumpFee="replaces an unconfirmed wallet transaction that signaled RBF with a new transaction that pays a higher fee." %} - - - -{% autocrossref %} - -*Added in Bitcoin Core 0.14.0* - -{{WARNING_ICON}} **_Not implemented in Dash Core (as of 0.12.2)_** - -{% comment %} -*Requires wallet support. Wallet must be unlocked.* - -The `bumpfee` RPC {{summary_bumpFee}} The increased fee is deducted from the change output. The command fails if the change output is too small to increase the fee or -if the wallet or mempool contains a transaction that spends one of the transaction's outputs. The `-walletrbf` option needs to be enabled (default is `false`). - -*Parameter #1---The TXID of the transaction* - -{% itemplate ntpd1 %} -- n: "TXID" - t: "string (hex)" - p: "Required
    (exactly 1)" - d: "The id of the transaction" - -{% enditemplate %} - -*Parameter #2---Additional options* - -{% itemplate ntpd1 %} -- n: "Options" - t: "Object" - p: "Optional
    (0 or 1)" - d: "Additional options" - -- n: "→
    `confTarget`" - t: "numeric (int)" - p: "Optional
    (0 or 1)" - d: "The confirmation target in blocks. Based on this value the new fee will be calculated using the same code as the `estimatefee` RPC. If not set, the default target of ´6´ blocks will be used" - -- n: "→
    `totalFee`" - t: "numeric (satoshis)" - p: "Optional
    (0 or 1)" - d: "The total fee to pay in satoshis (not the feerate). The actual fee can be higher in rare cases if the change output is close to the dust limit" - -- n: "→
    `replaceable`" - t: "bool" - p: "Optional
    (0 or 1)" - d: "Whether the new transaction should still be BIP 125 replaceable. Even if set to `false` the transaction may still be replacable, for example if it has unconfirmed ancestors which are replaceable. The default is `true`" - -{% enditemplate %} - -*Result---information about the new transaction* - -{% itemplate ntpd1 %} -- n: "`result`" - t: "object" - p: "Required
    (exactly 1)" - d: "An object including information about the new transaction" - -- n: "→
    `txid`" - t: "string (hex)" - p: "Required
    (exactly 1)" - d: "The id of the new transaction" - -- n: "→
    `origfee`" - t: "numeric (bitcoins)" - p: "Required
    (exactly 1)" - d: "The fee of the replaced transaction" - -- n: "→
    `fee`" - t: "numeric (bitcoins)" - p: "Required
    (exactly 1)" - d: "The fee of the new transaction" - -- n: "→
    `errors`" - t: "array" - p: "Required
    (exactly 1)" - d: "Errors encountered during processing (may be empty)" - -{% enditemplate %} - -*Example from Bitcoin Core 0.14.1* - -{% highlight bash %} -bitcoin-cli -testnet bumpfee d4a33e0cabaz723149e1fcab4e033a40173\ -88a644c65370e3cb06ba2f0e13975\ -'{ - "totalFee": 4000, - "replaceable": false -}' -{% endhighlight %} - -Result: - -{% highlight json %} -{ - "txid": "37a55ce49636977k79bcb04ee1143573b570b1743e09660e79e7ec3320968ca54", - "origfee": 0.00002450, - "fee": 0.00004000, - "errors": "" -} -{% endhighlight %} - -*See also* - -* [CreateRawTransaction][rpc createrawtransaction]: {{summary_createRawTransaction}} -* [FundRawTransaction][rpc fundrawtransaction]: {{summary_fundRawTransaction}} -* [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}} -* [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} -* [Serialized Transaction Format][raw transaction format] - -{% endcomment %} - -{% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index 67dd2a17..d4b1fbd0 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -4,10 +4,8 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_abortRescan="Stops current wallet rescan" %} {% assign summary_addMultiSigAddress="adds a P2SH multisig address to the wallet." %} {% assign summary_addNode="attempts to add or remove a node from the addnode list, or to try a connection to a node once." %} -{% assign summary_addWitnessAddress="adds a witness address for a script (with pubkey or redeem script known)." %} {% assign summary_backupWallet="safely copies `wallet.dat` to the specified file, which can be a directory or a path with filename." %} {% assign summary_bls="provides a set of commands to execute BLS-related actions." %} -{% assign summary_bumpFee="replaces an unconfirmed wallet transaction that signaled RBF with a new transaction that pays a higher fee." %} {% assign summary_clearBanned="clears list of banned nodes." %} {% assign summary_createMultiSig="creates a P2SH multi-signature address." %} {% assign summary_createRawTransaction="creates an unsigned serialized transaction that spends a previous output to a new output with a P2PKH or P2SH address. The transaction is not stored in the wallet or transmitted to the network." %} diff --git a/_includes/helpers/vars.md b/_includes/helpers/vars.md index 572fa50d..cc80907c 100644 --- a/_includes/helpers/vars.md +++ b/_includes/helpers/vars.md @@ -146,27 +146,11 @@ dash even if this parameter is set to `1` or higher.{% endcapture %} p: "Required
    (exactly 1)" d: "The transaction's TXID encoded as hex in RPC byte order" -{% comment %} -NOT IN DASH -- n: "{{DEPTH}} →
    `hash`" - t: "string (hex)" - p: "Required
    (exactly 1)" - d: "*Added in Bitcoin Core 0.13.0*

    The transaction hash. Differs from txid for witness transactions" -{% endcomment %} - - n: "{{DEPTH}} →
    `size`" t: "number (int)" p: "Required
    (exactly 1)" d: "*Added in Bitcoin Core 0.12.0*

    The serialized transaction size" -{% comment %} -NOT IN DASH -- n: "{{DEPTH}} →
    `vsize`" - t: "number (int)" - p: "Required
    (exactly 1)" - d: "*Added in Bitcoin Core 0.13.0*

    The virtual transaction size. Differs from size for witness transactions" -{% endcomment %} - - n: "{{DEPTH}} →
    `version`" t: "number (int)" p: "Required
    (exactly 1)" @@ -247,14 +231,6 @@ NOT IN DASH p: "Required
    (exactly 1)" d: "The input sequence number" -{% comment %} -NOT IN DASH -- n: "{{DEPTH}} → → →
    `txinwitness`" - t: "string : array" - p: "Optional
    (0 or 1)" - d: "*Added in Bitcoin Core 0.13.0*

    Hex-encoded witness data. Only for segregated witness transactions" -{% endcomment %} - - n: "{{DEPTH}} →
    `vout`" t: "array" p: "Required
    (exactly 1)" diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 565f4d50..36a9c00f 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -589,24 +589,12 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y - - Wallet - AddWitnessAddress - N - N/A - Wallet BackupWallet Y - - Wallet - BumpFee - N - N/A - Wallet DumpHDInfo diff --git a/_includes/references.md b/_includes/references.md index c08fb9bd..dd155f6f 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -72,10 +72,8 @@ http://opensource.org/licenses/MIT. [rpc abortrescan]: /en/developer-reference#abortrescan [rpc addmultisigaddress]: /en/developer-reference#addmultisigaddress [rpc addnode]: /en/developer-reference#addnode -[rpc addwitnessaddress]: /en/developer-reference#addwitnessaddress [rpc backupwallet]: /en/developer-reference#backupwallet [rpc bls]: /en/developer-reference#bls -[rpc bumpfee]: /en/developer-reference#bumpfee [rpc clearbanned]: /en/developer-reference#clearbanned [rpc createmultisig]: /en/developer-reference#createmultisig [rpc createrawtransaction]: /en/developer-reference#createrawtransaction diff --git a/en/developer-reference.md b/en/developer-reference.md index 4a4a7de6..43fae5c0 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -78,14 +78,10 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/addnode.md %} -{% include devdoc/dash-core/rpcs/rpcs/addwitnessaddress.md %} - {% include devdoc/dash-core/rpcs/rpcs/backupwallet.md %} {% include devdoc/dash-core/rpcs/rpcs/bls.md %} -{% include devdoc/dash-core/rpcs/rpcs/bumpfee.md %} - {% include devdoc/dash-core/rpcs/rpcs/clearbanned.md %} {% include devdoc/dash-core/rpcs/rpcs/createmultisig.md %} From 66fc0be0dc29126d9dd835ff54ea098cd47f6f7f Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 17 Sep 2019 09:27:22 -0400 Subject: [PATCH 108/117] PrivateSend updates (#159) * Content - PrivateSend no longer creates new mixing pools unnecessarily * Content - Remove outdated statement about PrivateSend denom conversion * Content - Update queue strategy with 14.1 change --- _includes/devdoc/guide_dash_features.md | 6 +----- _includes/devdoc/ref_p2p_networking.md | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/_includes/devdoc/guide_dash_features.md b/_includes/devdoc/guide_dash_features.md index 6474a4f3..d53022d1 100644 --- a/_includes/devdoc/guide_dash_features.md +++ b/_includes/devdoc/guide_dash_features.md @@ -162,10 +162,6 @@ integer value used in P2P messages, and the actual Dash value. Protocol version 70213 added a 5th denomination (0.001 DASH). -The denominations are structured to allow converting between denominations -directly without requiring additional inputs or creating change (for example, -1 x 10.0001 = 10 x 1.00001, 1 x 0.100001 = 10 x 0.0100001, etc.). - {% endautocrossref %} [Example Testnet denomination creation transaction](https://testnet-insight.dashevo.org/insight/tx/f0174fc87d68a18617c2990df4d9455c0459c601d2d6473934357a66f9b8b70a) @@ -228,7 +224,7 @@ mixing pool. _**Step 0 - Pool Selection**_ * Existing mixing pool information is derived from the Queue messages seen by the client - * Dash Core attempts to join an existing mixing pool 2/3 of the time although this is not a requirement that alternative implementations would be required to follow ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend-client.cpp#L817-#L826)) + * Dash Core attempts to join an existing mixing pool and only requests creation of a new one if that fails, although this is not a requirement that alternative implementations would be required to follow _**Step 1 - Pool Request**_ diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index a47a65c1..e18b551e 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -1993,8 +1993,8 @@ operates in two ways: 2. When sent to a masternode with a current mixing queue, it attempts to join the existing queue -Dash Core starts a new queue ~33% of the time and attempts to join an existing -queue the remainder of the time. +Dash Core attempts to join an existing queue first and only requests a new one +if no existing ones are available. | Bytes | Name | Data type | Required | Description | | ---------- | ----------- | --------- | -------- | -------- | From 1b23f2c8e4264c60813ed3fb017a84cb54d2beeb Mon Sep 17 00:00:00 2001 From: thephez Date: Tue, 17 Sep 2019 10:01:40 -0400 Subject: [PATCH 109/117] Update faucet list to remove non-functional faucets --- _includes/devdoc/example_testing.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/_includes/devdoc/example_testing.md b/_includes/devdoc/example_testing.md index b0b18465..123ef361 100644 --- a/_includes/devdoc/example_testing.md +++ b/_includes/devdoc/example_testing.md @@ -35,9 +35,8 @@ check the faucets listed below. They are community supported and due to potentially frequent Testnet changes, one or more of them may be unavailable at a given time: -* [Testnet Faucet - Dash.org] * [Testnet Faucet - Masternode.io] -* [Testnet Faucet - Dashninja.pl] +* [Testnet Faucet - Crowdnode.io] Testnet is a public resource provided for free by members of the community, so please don't abuse it. From 471899ae2d11a152edf08534c64fdd5ba86310ca Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 30 Sep 2019 16:06:46 -0400 Subject: [PATCH 110/117] RPC - Add getbestchainlock (#160) * RPC - Add getbestchainlock * Add missing markdown file --- _autocrossref.yaml | 2 + _config.yml | 1 + .../devdoc/dash-core/rpcs/quick-reference.md | 1 + .../dash-core/rpcs/rpcs/getbestchainlock.md | 64 +++++++++++++++++++ _includes/helpers/summaries.md | 1 + _includes/layout/base/rpc-table.html | 6 ++ _includes/references.md | 1 + en/developer-reference.md | 2 + 8 files changed, 78 insertions(+) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/getbestchainlock.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 0ae94ca8..3c0e6b4d 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -357,6 +357,8 @@ DIP8: '`getbalance` RPC': rpc getbalance '`getbestblockhash`': rpc getbestblockhash '`getbestblockhash` RPC': rpc getbestblockhash +'`getbestchainlock`': rpc getbestchainlock +'`getbestchainlock` RPC': rpc getbestchainlock '`getblock`': rpc getblock '`getblock` RPC': rpc getblock '`getblockchaininfo`': rpc getblockchaininfo diff --git a/_config.yml b/_config.yml index d6a31249..f42d73b0 100644 --- a/_config.yml +++ b/_config.yml @@ -200,6 +200,7 @@ devsearches: - 'GetAddressUtxos': "/en/developer-reference#getaddressutxos" - 'GetBalance': "/en/developer-reference#getbalance" - 'GetBestBlockHash': "/en/developer-reference#getbestblockhash" + - 'GetBestChainLock': "/en/developer-reference#getbestchainlock" - 'GetBlock': "/en/developer-reference#getblock" - 'GetBlockChainInfo': "/en/developer-reference#getblockchaininfo" - 'GetBlockCount': "/en/developer-reference#getblockcount" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 02f9bfc3..2d1a0d13 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -117,6 +117,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} * [GetBestBlockHash][rpc getbestblockhash]: {{summary_getBestBlockHash}} +* [GetBestChainLock][rpc getbestchainlock]: {{summary_getBestChainLock}} {{DASH_NEW0_14_1}} * [GetBlock][rpc getblock]: {{summary_getBlock}} {{DASH_UPDATED0_14_1}} * [GetBlockChainInfo][rpc getblockchaininfo]: {{summary_getBlockChainInfo}} {{DASH_UPDATED0_14_1}} * [GetBlockCount][rpc getblockcount]: {{summary_getBlockCount}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getbestchainlock.md b/_includes/devdoc/dash-core/rpcs/rpcs/getbestchainlock.md new file mode 100644 index 00000000..7065cf86 --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getbestchainlock.md @@ -0,0 +1,64 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/getbestchainlock.md" %} + + + +##### GetBestChainLock +{% include helpers/subhead-links.md %} + +{% assign summary_getBestChainLock="returns the block hash of the best chainlock." %} + +{% autocrossref %} + +The `getbestchainlock` RPC {{summary_getBestChainLock}} + +Throws an error if there is no known chainlock yet. + +*Parameters: none* + +*Result* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object/null" + p: "Required
    (exactly 1)" + d: "An object containing the requested block, or JSON `null` if an error occurred" + +- n: "→
    `blockhash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The hash of the block encoded as hex in RPC byte order." + +- n: "→
    `height`" + t: "number (int)" + p: "Required
    (exactly 1)" + d: "The height of this block on its block chain" + +- n: "→
    `known_block`" + t: "boolean" + p: "Required
    (exactly 1)" + d: "True if the block is known by this node" + +{% enditemplate %} + +*Example from Dash Core 0.14.1* + +{% highlight bash %} +dash-cli -testnet getbestchainlock +{% endhighlight %} + +Result: +{% highlight json %} +{ + "blockhash": "000000000036ab34d3005941d4224fc5887526355c98b769e27e5ece05f48860", + "height": 182106, + "known_block": true +} +{% endhighlight %} + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index d4b1fbd0..2d1204e7 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -36,6 +36,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_getAddressesByAccount="returns a list of every address assigned to a particular account." %} {% assign summary_getBalance="gets the balance in decimal dash across all accounts or for a particular account." %} {% assign summary_getBestBlockHash="returns the header hash of the most recent block on the best block chain." %} +{% assign summary_getBestChainLock="returns the block hash of the best chainlock." %} {% assign summary_getBlock="gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block." %} {% assign summary_getBlockChainInfo="provides information about the current state of the block chain." %} {% assign summary_getBlockCount="returns the number of blocks in the local best block chain." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 36a9c00f..820fbd10 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -67,6 +67,12 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y + + Blockchain + GetBestChainLock + Y + Added in 0.14.1 + Blockchain GetBlock diff --git a/_includes/references.md b/_includes/references.md index dd155f6f..f6d62ef4 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -103,6 +103,7 @@ http://opensource.org/licenses/MIT. [rpc getaddressutxos]: /en/developer-reference#getaddressutxos [rpc getbalance]: /en/developer-reference#getbalance [rpc getbestblockhash]: /en/developer-reference#getbestblockhash +[rpc getbestchainlock]: /en/developer-reference#getbestchainlock [rpc getblock]: /en/developer-reference#getblock [rpc getblockchaininfo]: /en/developer-reference#getblockchaininfo [rpc getblockcount]: /en/developer-reference#getblockcount diff --git a/en/developer-reference.md b/en/developer-reference.md index 43fae5c0..85658c35 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -140,6 +140,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/getbestblockhash.md %} +{% include devdoc/dash-core/rpcs/rpcs/getbestchainlock.md %} + {% include devdoc/dash-core/rpcs/rpcs/getblock.md %} {% include devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md %} From 4e64bcbf89fef01258dd5d65623ce1e28a9e2439 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 2 Oct 2019 11:46:47 -0400 Subject: [PATCH 111/117] RPC backports (#161) * RPC - Update estimatesmartfee Change params, results, and example * RPC - Update signrawtransaction to include amount * RPC - Add getblockstats * Formatting corrections --- _autocrossref.yaml | 2 + _config.yml | 3 +- .../devdoc/dash-core/rpcs/quick-reference.md | 1 + .../dash-core/rpcs/rpcs/estimatesmartfee.md | 37 ++-- .../dash-core/rpcs/rpcs/getblockstats.md | 192 ++++++++++++++++++ .../dash-core/rpcs/rpcs/getmempoolentry.md | 2 +- .../dash-core/rpcs/rpcs/signrawtransaction.md | 6 + _includes/helpers/summaries.md | 1 + _includes/layout/base/rpc-table.html | 6 + _includes/references.md | 1 + en/developer-reference.md | 2 + 11 files changed, 237 insertions(+), 16 deletions(-) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/getblockstats.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 3c0e6b4d..a639086c 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -372,6 +372,8 @@ DIP8: '`getblockheader`': rpc getblockheader '`getblockheader` RPC': rpc getblockheader '`getblockheaders`': rpc getblockheaders +'`getblockstats`': rpc getblockstats +'`getblockstats` RPC': rpc getblockstats '`getblockheaders` RPC': rpc getblockheaders '`getblocktemplate`': rpc getblocktemplate '`getblocktemplate` RPC': rpc getblocktemplate diff --git a/_config.yml b/_config.yml index f42d73b0..edf20838 100644 --- a/_config.yml +++ b/_config.yml @@ -200,7 +200,7 @@ devsearches: - 'GetAddressUtxos': "/en/developer-reference#getaddressutxos" - 'GetBalance': "/en/developer-reference#getbalance" - 'GetBestBlockHash': "/en/developer-reference#getbestblockhash" - - 'GetBestChainLock': "/en/developer-reference#getbestchainlock" + - 'GetBestChainLock': "/en/developer-reference#getbestchainlock" - 'GetBlock': "/en/developer-reference#getblock" - 'GetBlockChainInfo': "/en/developer-reference#getblockchaininfo" - 'GetBlockCount': "/en/developer-reference#getblockcount" @@ -208,6 +208,7 @@ devsearches: - 'GetBlockHashes': "/en/developer-reference#getblockhashes" - 'GetBlockHeader': "/en/developer-reference#getblockheader" - 'GetBlockHeaders': "/en/developer-reference#getblockheaders" + - 'GetBlockStats': "/en/developer-reference#getblockstats" - 'GetBlockTemplate': "/en/developer-reference#getblocktemplate" - 'GetChainTips': "/en/developer-reference#getchaintips" - 'GetChainTxStats': "/en/developer-reference#getchaintxstats" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 2d1a0d13..14ceb62d 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -125,6 +125,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetBlockHashes][rpc getblockhashes]: {{summary_getBlockHashes}} {{DASH_NEW0_12_1}} * [GetBlockHeader][rpc getblockheader]: {{summary_getBlockHeader}} {{NEW0_12_0}} * [GetBlockHeaders][rpc getblockheaders]: {{summary_getBlockHeaders}} {{DASH_NEW0_12_1}} +* [GetBlockStats][rpc getblockstats]: {{summary_getBlockStats}} {{DASH_NEW0_14_1}} * [GetChainTips][rpc getchaintips]: {{summary_getChainTips}} {{DASH_UPDATED0_12_3}} * [GetChainTxStats][rpc getchaintxstats]: {{summary_getChainTxStats}} {{DASH_NEW0_14_1}} * [GetDifficulty][rpc getdifficulty]: {{summary_getDifficulty}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartfee.md b/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartfee.md index f7dd3746..d92d7fec 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartfee.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartfee.md @@ -4,6 +4,8 @@ http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartfee.md" %} + + ##### EstimateSmartFee {% include helpers/subhead-links.md %} @@ -13,23 +15,23 @@ http://opensource.org/licenses/MIT. The `estimatesmartfee` RPC {{summary_estimateSmartFee}} -*Parameter #1---how many blocks the transaction may wait before being included* +*Parameter #1---how many confirmations the transaction may wait before being included* {% itemplate ntpd1 %} -- n: "Blocks" +- n: "conf_target" t: "number (int)" p: "Required
    (exactly 1)" - d: "The maximum number of blocks a transaction should have to wait before it is predicted to be included in a block. Has to be between 1 and 25 blocks" + d: "Confirmation target in blocks (1 - 1008)" {% enditemplate %} -*Parameter #2---conservative* +*Parameter #2---estimate mode* {% itemplate ntpd1 %} -- n: "conservative" - t: "bool" - p: "Optional
    Default=`true`" - d: "Whether to return a more conservative estimate which also satisfies a longer history. A conservative estimate potentially returns a higher feerate and is more likely to be sufficient for the desired target, but is not as responsive to short term drops in the prevailing fee market" +- n: "estimate_mode" + t: "string" + p: "Optional
    Default=
    `CONSERVATIVE`" + d: "The fee estimate mode. Whether to return a more conservative estimate which also satisfies a longer history. A conservative estimate potentially returns a higher feerate and is more likely to be sufficient for the desired target, but is not as responsive to short term drops in the prevailing fee market. Must be one of:
    `UNSET` (defaults to `CONSERVATIVE`)
    `ECONOMICAL`
    `CONSERVATIVE`" {% enditemplate %} @@ -43,8 +45,13 @@ The `estimatesmartfee` RPC {{summary_estimateSmartFee}} - n: "→
    `feerate`" t: "number (Dash)" - p: "Required
    (exactly 1)" - d: "The estimated fee the transaction should pay in order to be included within the specified number of blocks. If the node doesn't have enough information to make an estimate, the value `-1` will be returned" + p: "Optional
    (0 or 1)" + d: "The estimated fee the transaction should pay in order to be included within the specified number of blocks. If the node doesn't have enough information to make an estimate, this field will not be returned" + +- n: "→
    `error`" + t: "JSON array (strings)" + p: "Optional
    (0 or 1)" + d: "Errors encountered during processing" - n: "→
    `blocks`" t: "number" @@ -52,7 +59,7 @@ The `estimatesmartfee` RPC {{summary_estimateSmartFee}} d: "Block number where the estimate was found" {% enditemplate %} -*Examples from Dash Core 0.12.2* +*Examples from Dash Core 0.14.1* {% highlight bash %} dash-cli estimatesmartfee 6 @@ -70,15 +77,17 @@ Result: Requesting data the node can't calculate (out of range): {% highlight bash %} -dash-cli estimatesmartfee 100 +dash-cli estimatesmartfee 2 {% endhighlight %} Result: {% highlight json %} { - "feerate": -1, - "blocks": 100 + "errors": [ + "Insufficient data or no feerate found" + ], + "blocks": 2 } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getblockstats.md b/_includes/devdoc/dash-core/rpcs/rpcs/getblockstats.md new file mode 100644 index 00000000..9aa33261 --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getblockstats.md @@ -0,0 +1,192 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/getblockstats.md" %} + + +##### GetBlockStats +{% include helpers/subhead-links.md %} + +{% assign summary_getBlockStats="computes per block statistics for a given window." %} + +{% autocrossref %} + +The `getblockstats` RPC {{summary_getBlockStats}} + +All amounts are in duffs. + +It won't work for some heights with pruning. It won't work without `-txindex` for +`utxo_size_inc`, `*fee` or `*feerate` stats. + +*Parameter #1---hash_or_height* + +{% itemplate ntpd1 %} +- n: "hash_or_height" + t: "string or numeric" + p: "Required
    (exactly 1)" + d: "The block hash or height of the target block" + +{% enditemplate %} + +*Parameter #2---stats* + +{% itemplate ntpd1 %} +- n: "stats" + t: "array" + p: "optional" + d: "Values to plot, by default all values (see result below)" + +{% enditemplate %} + +*Result---a JSON object containing the requested statistics* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object/null" + p: "Required
    (exactly 1)" + d: "An object containing stats for the requested block, or JSON `null` if an error occurred" + +- n: "→
    `avgfee`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Average fee in the block" + +- n: "→
    `avgfeerate`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Average feerate (in duffs per byte)" + +- n: "→
    `avgtxsize`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Average transaction size" + +- n: "→
    `blockhash`" + t: "string (hex)" + p: "Required
    (exactly 1)" + d: "The block hash (to check for potential reorgs)" + +- n: "→
    `height`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "The height of the block" + +- n: "→
    `ins`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "The number of inputs (excluding coinbase)" + +- n: "→
    `maxfee`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Maximum fee in the block" + +- n: "→
    `maxfeerate`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Maximum feerate (in duffs per byte)" + +- n: "→
    `maxtxsize`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Maximum transaction size" + +- n: "→
    `medianfee`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Truncated median fee in the block" + +- n: "→
    `medianfeerate`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Truncated median feerate (in duffs per byte)" + +- n: "→
    `mediantime`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "The block median time past" + +- n: "→
    `mediantxsize`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Truncated median transaction size" + +- n: "→
    `minfee`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Minimum fee in the block" + +- n: "→
    `minfeerate`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Minimum feerate (in duffs per byte)" + +- n: "→
    `mintxsize`" + t: "numeric" + p: "Required
    (exactly 1)" + +- n: "→
    `outs`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "The number of outputs" + +- n: "→
    `subsidy`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "The block subsidy" + +- n: "→
    `time`" + t: "number (real)" + p: "Required
    (exactly 1)" + d: "The block time" + +- n: "→
    `total_out`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Total amount in all outputs (excluding coinbase and thus reward [i.e. subsidy + totalfee])" + +- n: "→
    `total_size`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "Total size of all non-coinbase transactions" + +- n: "→
    `totalfee`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "The fee total" + +- n: "→
    `txs`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "The number of transactions (excluding coinbase)" + +- n: "→
    `utxo_increase`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "The increase/decrease in the number of unspent outputs" + +- n: "→
    `utxo_size_inc`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "The increase/decrease in size for the utxo index (not discounting op_return and similar)" +{% enditemplate %} + +*Example from Dash Core 0.14.1* + +{% highlight bash %} +dash-cli getblockstats 1000 '["blockhash","subsidy", "txs"]' +{% endhighlight %} + +Result: +{% highlight json %} +{ + "blockhash": "000004e906762c8c70583418d46915b4271fa83c29d5b88544d05e09e3f3621d", + "subsidy": 50000000000, + "txs": 1 +} +{% endhighlight %} + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md index 2fe12c89..3c8da3f4 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md @@ -13,7 +13,7 @@ http://opensource.org/licenses/MIT. {% autocrossref %} -*Added in Dash Core 0.12.3* +*Added in Dash Core 0.14.0* The `getmempoolentry` RPC {{summary_getMemPoolEntry}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/signrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/signrawtransaction.md index 1fabd99a..7058445e 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/signrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/signrawtransaction.md @@ -4,6 +4,8 @@ http://opensource.org/licenses/MIT. {% endcomment %} {% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/signrawtransaction.md" %} + + ##### SignRawTransaction {% include helpers/subhead-links.md %} @@ -56,6 +58,10 @@ The `signrawtransaction` RPC {{summary_signRawTransaction}} p: "Optional
    (0 or 1)" d: "If the pubkey script was a script hash, this must be the corresponding redeem script" +- n: "→ →
    `amount`" + t: "numeric" + p: "Required
    (exactly 1)" + d: "The amount of Dash spent" {% enditemplate %} *Parameter #3---private keys for signing* diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index 2d1204e7..5a712812 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -44,6 +44,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_getBlockHashes="returns array of hashes of blocks within the timestamp range provided (requires `timestampindex` to be enabled)." %} {% assign summary_getBlockHeader="gets a block header with a particular header hash from the local block database either as a JSON object or as a serialized block header." %} {% assign summary_getBlockHeaders="returns an array of items with information about the requested number of blockheaders starting from the requested hash." %} +{% assign summary_getBlockStats="computes per block statistics for a given window." %} {% assign summary_getBlockTemplate="gets a block template or proposal for use with mining software." %} {% assign summary_getChainTips="returns information about the highest-height block (tip) of each local block chain." %} {% assign summary_getChainTxStats="compute statistics about the total number and rate of transactions in the chain." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 820fbd10..a6bf7c2b 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -115,6 +115,12 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y 0.12.1 + + Blockchain + GetBlockStats + Y + Added in 0.14.1 + Blockchain GetChainTips diff --git a/_includes/references.md b/_includes/references.md index f6d62ef4..a6949306 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -111,6 +111,7 @@ http://opensource.org/licenses/MIT. [rpc getblockhashes]: /en/developer-reference#getblockhashes [rpc getblockheader]: /en/developer-reference#getblockheader [rpc getblockheaders]: /en/developer-reference#getblockheaders +[rpc getblockstats]: /en/developer-reference#getblockstats [rpc getblocktemplate]: /en/developer-reference#getblocktemplate [rpc getchaintips]: /en/developer-reference#getchaintips [rpc getchaintxstats]: /en/developer-reference#getchaintxstats diff --git a/en/developer-reference.md b/en/developer-reference.md index 85658c35..75ab1fc8 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -156,6 +156,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/getblockheaders.md %} +{% include devdoc/dash-core/rpcs/rpcs/getblockstats.md %} + {% include devdoc/dash-core/rpcs/rpcs/getblocktemplate.md %} {% include devdoc/dash-core/rpcs/rpcs/getchaintips.md %} From 0b2e0319c77e8f4af7945321927aff136e2362e4 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 2 Oct 2019 14:07:42 -0400 Subject: [PATCH 112/117] RPC - Add combinerawtransaction (#162) * RPC - Add combinerawtransaction * Add links to other rawtx RPCs --- _autocrossref.yaml | 2 + _config.yml | 1 + .../devdoc/dash-core/rpcs/quick-reference.md | 1 + .../rpcs/rpcs/combinerawtransaction.md | 78 +++++++++++++++++++ .../rpcs/rpcs/createrawtransaction.md | 1 + .../rpcs/rpcs/decoderawtransaction.md | 1 + .../dash-core/rpcs/rpcs/sendrawtransaction.md | 1 + .../dash-core/rpcs/rpcs/signrawtransaction.md | 1 + _includes/helpers/summaries.md | 1 + _includes/layout/base/rpc-table.html | 6 ++ _includes/references.md | 1 + en/developer-reference.md | 2 + 12 files changed, 96 insertions(+) create mode 100644 _includes/devdoc/dash-core/rpcs/rpcs/combinerawtransaction.md diff --git a/_autocrossref.yaml b/_autocrossref.yaml index a639086c..64dd8e44 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -303,6 +303,8 @@ DIP8: '`clearbanned` RPC': rpc clearbanned '`createmultisig`': rpc createmultisig '`createmultisig` RPC': rpc createmultisig +'`combinerawtransaction`': rpc combinerawtransaction +'`combinerawtransaction` RPC': rpc combinerawtransaction '`createrawtransaction`': rpc createrawtransaction '`createrawtransaction` RPC': rpc createrawtransaction '`debug`': rpc debug diff --git a/_config.yml b/_config.yml index edf20838..d991f44a 100644 --- a/_config.yml +++ b/_config.yml @@ -173,6 +173,7 @@ devsearches: - 'BLS': "/en/developer-reference#bls" - 'ClearBanned': "/en/developer-reference#clearbanned" - 'CreateMultisig': "/en/developer-reference#createmultisig" + - 'CombineRawTransaction': "/en/developer-reference#combinerawtransaction" - 'CreateRawTransaction': "/en/developer-reference#createrawtransaction" - 'Debug': "/en/developer-reference#debug" - 'DecodeRawTransaction': "/en/developer-reference#decoderawtransaction" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index 14ceb62d..73040edd 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -246,6 +246,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} +* [CombineRawTransaction][rpc combinerawtransaction]: {{summary_combineRawTransaction}} {{DASH_NEW0_14_1}} * [CreateRawTransaction][rpc createrawtransaction]: {{summary_createRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_1}} * [DecodeRawTransaction][rpc decoderawtransaction]: {{summary_decodeRawTransaction}} {{UPDATED0_13_0}} * [DecodeScript][rpc decodescript]: {{summary_decodeScript}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/combinerawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/combinerawtransaction.md new file mode 100644 index 00000000..21d3c3e6 --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/combinerawtransaction.md @@ -0,0 +1,78 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/combinerawtransaction.md" %} + + + +##### CombineRawTransaction +{% include helpers/subhead-links.md %} + +{% assign summary_combineRawTransaction="combine multiple partially signed transactions into one transaction." %} + +{% autocrossref %} + +The `combinerawtransaction` RPC {{summary_combineRawTransaction}} + +The combined transaction may be another partially signed transaction or a +fully signed transaction. + +*Parameter #1---txs* + +{% itemplate ntpd1 %} +- n: "txs" + t: "string" + p: "Required" + d: "A json array of hex strings of partially signed transactions" + +{% enditemplate %} + +*Result---hex-encoded raw transaction with signature(s)* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "string" + p: "Required
    (Exactly 1)" + d: "The resulting raw transaction in serialized transaction format encoded as hex." + +{% enditemplate %} + +*Example from Dash Core 0.14.1* + +The following example shows a fully signed two input transaction being assembled +by combining two partially signed transactions. The first hex-encoded string is +the transaction with only the first input signed. The second hex-encoded string is +the transaction with only the second input signed. + +{% highlight bash %} +dash-cli combinerawtransaction '[ + "0200000002fdb27b4f2b80a5fd3b96602618a6ccf7bdde504bf90989610b19ed6ecd769520010000006b483045022100f8770316327966fb1972338d14db8d38048455da8b62f6350b117c797cea459e02206c63c103cf53ce1d24a313b3e6853913fa14febafd733e683b6eb46a7beec0fa012103c67d86944315838aea7ec80d390b5d09b91b62483370d4979da5ccf7a7df77a9ffffffff0d052e9b13c53bb342d772767732ffe4fa9f1c150629d3fa79655267baa7c86a0100000000ffffffff0200ca9a3b000000001976a9144139b147b5cef5fef5bcdb02fcdf55e426f74dbb88ac00daf89a000000001976a91465f53f2095c99ce152ff3bc8a8f027d8a77cbdcb88ac00000000", + "0200000002fdb27b4f2b80a5fd3b96602618a6ccf7bdde504bf90989610b19ed6ecd7695200100000000ffffffff0d052e9b13c53bb342d772767732ffe4fa9f1c150629d3fa79655267baa7c86a010000006b4830450221008c3abc11ea84cc98cf674afc5b6d3d078d672768d289f2ab976ea4b2a49129fc022008470458b1b179800e7f5348196d510d2f147e69fe836c94135fc5c620312acd012102912ba98d6641f79864d04d41523167f5db267e45d1633e9243a0be7efb675719ffffffff0200ca9a3b000000001976a9144139b147b5cef5fef5bcdb02fcdf55e426f74dbb88ac00daf89a000000001976a91465f53f2095c99ce152ff3bc8a8f027d8a77cbdcb88ac00000000" +]' +{% endhighlight %} + +Result: +{% highlight bash %} +0200000002fdb27b4f2b80a5fd3b96602618a6ccf7bdde504bf90989610b19ed6ecd7695\ +20010000006b483045022100f8770316327966fb1972338d14db8d38048455da8b62f635\ +0b117c797cea459e02206c63c103cf53ce1d24a313b3e6853913fa14febafd733e683b6e\ +b46a7beec0fa012103c67d86944315838aea7ec80d390b5d09b91b62483370d4979da5cc\ +f7a7df77a9ffffffff0d052e9b13c53bb342d772767732ffe4fa9f1c150629d3fa796552\ +67baa7c86a010000006b4830450221008c3abc11ea84cc98cf674afc5b6d3d078d672768\ +d289f2ab976ea4b2a49129fc022008470458b1b179800e7f5348196d510d2f147e69fe83\ +6c94135fc5c620312acd012102912ba98d6641f79864d04d41523167f5db267e45d1633e\ +9243a0be7efb675719ffffffff0200ca9a3b000000001976a9144139b147b5cef5fef5bc\ +db02fcdf55e426f74dbb88ac00daf89a000000001976a91465f53f2095c99ce152ff3bc8\ +a8f027d8a77cbdcb88ac00000000 +{% endhighlight %} + +*See also:* + +* [CreateRawTransaction][rpc createrawtransaction]: {{summary_createRawTransaction}} +* [DecodeRawTransaction][rpc decoderawtransaction]: {{summary_decodeRawTransaction}} +* [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}} +* [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} +* [Serialized Transaction Format][raw transaction format] + +{% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/createrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/createrawtransaction.md index 72a3940f..f768d588 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/createrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/createrawtransaction.md @@ -110,6 +110,7 @@ cfc9f32ef388acc0a8f9be010000001976a914811eacc14db8ebb5b64486dc43400c0226b4\ *See also* +* [CombineRawTransaction][rpc combinerawtransaction]: {{summary_combineRawTransaction}} * [DecodeRawTransaction][rpc decoderawtransaction]: {{summary_decodeRawTransaction}} * [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}} * [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md index 509493ed..a584f4db 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md @@ -176,6 +176,7 @@ Result: *See also* +* [CombineRawTransaction][rpc combinerawtransaction]: {{summary_combineRawTransaction}} * [CreateRawTransaction][rpc createrawtransaction]: {{summary_createRawTransaction}} * [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}} * [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/sendrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/sendrawtransaction.md index 3e12e12a..ec461e31 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/sendrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/sendrawtransaction.md @@ -76,6 +76,7 @@ Result: *See also* +* [CombineRawTransaction][rpc combinerawtransaction]: {{summary_combineRawTransaction}} * [CreateRawTransaction][rpc createrawtransaction]: {{summary_createRawTransaction}} * [DecodeRawTransaction][rpc decoderawtransaction]: {{summary_decodeRawTransaction}} * [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/signrawtransaction.md b/_includes/devdoc/dash-core/rpcs/rpcs/signrawtransaction.md index 7058445e..91c2046c 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/signrawtransaction.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/signrawtransaction.md @@ -132,6 +132,7 @@ Result: *See also* +* [CombineRawTransaction][rpc combinerawtransaction]: {{summary_combineRawTransaction}} * [CreateRawTransaction][rpc createrawtransaction]: {{summary_createRawTransaction}} * [DecodeRawTransaction][rpc decoderawtransaction]: {{summary_decodeRawTransaction}} * [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index 5a712812..52cfbbb6 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -7,6 +7,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_backupWallet="safely copies `wallet.dat` to the specified file, which can be a directory or a path with filename." %} {% assign summary_bls="provides a set of commands to execute BLS-related actions." %} {% assign summary_clearBanned="clears list of banned nodes." %} +{% assign summary_combineRawTransaction="combine multiple partially signed transactions into one transaction." %} {% assign summary_createMultiSig="creates a P2SH multi-signature address." %} {% assign summary_createRawTransaction="creates an unsigned serialized transaction that spends a previous output to a new output with a P2PKH or P2SH address. The transaction is not stored in the wallet or transmitted to the network." %} {% assign summary_debug="changes the debug category from the console." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index a6bf7c2b..d27f26b9 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -481,6 +481,12 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Y + + Rawtransactions + CombineRawTransaction + Y + Added in 0.14.1 + Rawtransactions CreateRawTransaction diff --git a/_includes/references.md b/_includes/references.md index a6949306..c9c2edcb 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -76,6 +76,7 @@ http://opensource.org/licenses/MIT. [rpc bls]: /en/developer-reference#bls [rpc clearbanned]: /en/developer-reference#clearbanned [rpc createmultisig]: /en/developer-reference#createmultisig +[rpc combinerawtransaction]: /en/developer-reference#combinerawtransaction [rpc createrawtransaction]: /en/developer-reference#createrawtransaction [rpc debug]: /en/developer-reference#debug [rpc decoderawtransaction]: /en/developer-reference#decoderawtransaction diff --git a/en/developer-reference.md b/en/developer-reference.md index 75ab1fc8..e96aa590 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -86,6 +86,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/createmultisig.md %} +{% include devdoc/dash-core/rpcs/rpcs/combinerawtransaction.md %} + {% include devdoc/dash-core/rpcs/rpcs/createrawtransaction.md %} {% include devdoc/dash-core/rpcs/rpcs/debug.md %} From 4be35019391cf1b1fe0b1aa9df07edb75f110910 Mon Sep 17 00:00:00 2001 From: Joshua Seigler Date: Thu, 17 Oct 2019 16:23:53 -0400 Subject: [PATCH 113/117] Add Readme.io conversion script --- scripts/pipe-convert-for-readme | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 scripts/pipe-convert-for-readme diff --git a/scripts/pipe-convert-for-readme b/scripts/pipe-convert-for-readme new file mode 100755 index 00000000..08b31625 --- /dev/null +++ b/scripts/pipe-convert-for-readme @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +# To use this script, pipe the contents of a MD file into it. +# It will output that content reformatted for Readme. + +# Examples: +# Reformat the contents of the clipboard +# xclip -o | ./pipe-convert-for-readme | xclip -selection clipboard +# +# Reformat a file and write it to a new file +# cat ../_includes/devdoc/guide_block_chain.md | ./pipe-convert-for-readme > ../_readme/guide_block_chain.md + +perl -0 \ +-pe "s///gs;" \ +-pe "s/\{% comment %\}.+?{% endcomment %\}//gs;" \ +-pe "s/\{% include helpers\/subhead-links\.md %\}//g;" \ +-pe "s/\{% (end)?autocrossref %\}//gs;" \ +-pe "s/\{% assign filename=.+? %\}//g;" \ +-pe "s/\{:\.no_toc\}//g;" \ +-pe "s/\[([^\]]+)\]\[.+?\.term\}/<>/g;" \ +-pe "s/\{% highlight ([^%]+) %\}(.+?\n){% endhighlight %\}/\`\`\` \1\2\`\`\`/gs;" \ +-pe "s/<<([^>]+)\n([^>]+)>>/<<\1 \2>>/gs;" \ +-pe "s!\(/img!(https://dash-docs.github.io/img!g;" \ +-pe "s/{% itemplate ntpd1 %}/Name | Type | Presence | Description\n--- | --- | --- | ---/g;" \ +-pe "s/\n+- n: \"(.*?)\"\s+t: \"(.*?)\"\s+p: \"(.*?)\"\s+d: \"(.*?)\"/\n\1 | \2 | \3 | \4/g;" \ +-pe "s/{% enditemplate %}/\n\n/g;" \ +-pe "s/~~~/\`\`\`/g;" \ +-pe "s/([^\n\`])\n([^\n\`\|])(?=([^\`]|\`(?!\`))*((\`\`\`[^\`]+\`\`\`)([^\`]|\`(?!\`))*)*$)/\1 \2/g;" \ +-pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|---|---|---|---|---|\n/g;" \ +-pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|---|---|---|---|\n/g;" \ +-pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|---|---|---|\n/g;" \ +-pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|---|---|\n/g;" \ +-pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|---|\n/g;" \ +-pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|\n/g;" \ +-pe "s/\|[-]+(?=[\|\n])/| --- /g;" \ +-pe "s/\n\n+/\n\n/g;" From 81e15f4d9e41edc1a220fcc1de5fb6556d215fed Mon Sep 17 00:00:00 2001 From: Joshua Seigler Date: Mon, 28 Oct 2019 11:13:58 -0400 Subject: [PATCH 114/117] Convert summaries.md into a script --- scripts/applysummaries.sh | 156 ++++++++++++++++++ ...-for-readme => pipe-convert-for-readme.sh} | 4 +- 2 files changed, 158 insertions(+), 2 deletions(-) create mode 100755 scripts/applysummaries.sh rename scripts/{pipe-convert-for-readme => pipe-convert-for-readme.sh} (91%) diff --git a/scripts/applysummaries.sh b/scripts/applysummaries.sh new file mode 100755 index 00000000..eafa2f5f --- /dev/null +++ b/scripts/applysummaries.sh @@ -0,0 +1,156 @@ +#!/usr/bin/env bash + +perl -pe "s~\{\{summary_abandonTransaction\}\}~marks an in-wallet transaction and all its in-wallet descendants as abandoned. This allows their inputs to be respent.~g;" \ +-pe "s~\{\{summary_abortRescan\}\}~Stops current wallet rescan~g;" \ +-pe "s~\{\{summary_addMultiSigAddress\}\}~adds a P2SH multisig address to the wallet.~g;" \ +-pe "s~\{\{summary_addNode\}\}~attempts to add or remove a node from the addnode list, or to try a connection to a node once.~g;" \ +-pe "s~\{\{summary_backupWallet\}\}~safely copies \`wallet.dat\` to the specified file, which can be a directory or a path with filename.~g;" \ +-pe "s~\{\{summary_bls\}\}~provides a set of commands to execute BLS-related actions.~g;" \ +-pe "s~\{\{summary_clearBanned\}\}~clears list of banned nodes.~g;" \ +-pe "s~\{\{summary_combineRawTransaction\}\}~combine multiple partially signed transactions into one transaction.~g;" \ +-pe "s~\{\{summary_createMultiSig\}\}~creates a P2SH multi-signature address.~g;" \ +-pe "s~\{\{summary_createRawTransaction\}\}~creates an unsigned serialized transaction that spends a previous output to a new output with a P2PKH or P2SH address. The transaction is not stored in the wallet or transmitted to the network.~g;" \ +-pe "s~\{\{summary_debug\}\}~changes the debug category from the console.~g;" \ +-pe "s~\{\{summary_decodeRawTransaction\}\}~decodes a serialized transaction hex string into a JSON object describing the transaction.~g;" \ +-pe "s~\{\{summary_decodeScript\}\}~decodes a hex-encoded P2SH redeem script.~g;" \ +-pe "s~\{\{summary_disconnectNode\}\}~immediately disconnects from a specified node.~g;" \ +-pe "s~\{\{summary_dumpHDInfo\}\}~returns an object containing sensitive private info about this HD wallet~g;" \ +-pe "s~\{\{summary_dumpPrivKey\}\}~returns the wallet-import-format (WIP) private key corresponding to an address. (But does not remove it from the wallet.)~g;" \ +-pe "s~\{\{summary_dumpWallet\}\}~creates or overwrites a file with all wallet keys in a human-readable format.~g;" \ +-pe "s~\{\{summary_encryptWallet\}\}~encrypts the wallet with a passphrase. This is only to enable encryption for the first time. After encryption is enabled, you will need to enter the passphrase to use private keys.~g;" \ +-pe "s~\{\{summary_estimateFee\}\}~estimates the transaction fee per kilobyte that needs to be paid for a transaction to begin confirmation within a certain number of blocks.~g;" \ +-pe "s~\{\{summary_estimatePriority\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_estimateSmartFee\}\}~estimates the transaction fee per kilobyte that needs to be paid for a transaction to begin confirmation within a certain number of blocks and returns the number of blocks for which the estimate is valid.~g;" \ +-pe "s~\{\{summary_estimateSmartPriority\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_fundRawTransaction\}\}~adds inputs to a transaction until it has enough in value to meet its out value.~g;" \ +-pe "s~\{\{summary_gObject\}\}~provides a set of commands for managing governance objects and displaying information about them.~g;" \ +-pe "s~\{\{summary_generate\}\}~mines blocks immediately (before the RPC call returns).~g;" \ +-pe "s~\{\{summary_generateToAddress\}\}~mines blocks immediately to a specified address.~g;" \ +-pe "s~\{\{summary_getAccount\}\}~returns the name of the account associated with the given address.~g;" \ +-pe "s~\{\{summary_getAccountAddress\}\}~returns the current Dash address for receiving payments to this account. If the account doesn't exist, it creates both the account and a new address for receiving payment. Once a payment has been received to an address, future calls to this RPC for the same account will return a different address.~g;" \ +-pe "s~\{\{summary_getAddedNodeInfo\}\}~returns information about the given added node, or all added nodes (except onetry nodes). Only nodes which have been manually added using the \`addnode\` RPC will have their information displayed.~g;" \ +-pe "s~\{\{summary_getAddressBalance\}\}~returns the balance for address(es).~g;" \ +-pe "s~\{\{summary_getAddressDeltas\}\}~returns all changes for an address.~g;" \ +-pe "s~\{\{summary_getAddressMempool\}\}~returns all mempool deltas for an address.~g;" \ +-pe "s~\{\{summary_getAddressTxids\}\}~returns the txids for an address(es).~g;" \ +-pe "s~\{\{summary_getAddressUtxos\}\}~returns all unspent outputs for an address.~g;" \ +-pe "s~\{\{summary_getAddressesByAccount\}\}~returns a list of every address assigned to a particular account.~g;" \ +-pe "s~\{\{summary_getBalance\}\}~gets the balance in decimal dash across all accounts or for a particular account.~g;" \ +-pe "s~\{\{summary_getBestBlockHash\}\}~returns the header hash of the most recent block on the best block chain.~g;" \ +-pe "s~\{\{summary_getBestChainLock\}\}~returns the block hash of the best chainlock.~g;" \ +-pe "s~\{\{summary_getBlock\}\}~gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.~g;" \ +-pe "s~\{\{summary_getBlockChainInfo\}\}~provides information about the current state of the block chain.~g;" \ +-pe "s~\{\{summary_getBlockCount\}\}~returns the number of blocks in the local best block chain.~g;" \ +-pe "s~\{\{summary_getBlockHash\}\}~returns the header hash of a block at the given height in the local best block chain.~g;" \ +-pe "s~\{\{summary_getBlockHashes\}\}~returns array of hashes of blocks within the timestamp range provided (requires \`timestampindex\` to be enabled).~g;" \ +-pe "s~\{\{summary_getBlockHeader\}\}~gets a block header with a particular header hash from the local block database either as a JSON object or as a serialized block header.~g;" \ +-pe "s~\{\{summary_getBlockHeaders\}\}~returns an array of items with information about the requested number of blockheaders starting from the requested hash.~g;" \ +-pe "s~\{\{summary_getBlockStats\}\}~computes per block statistics for a given window.~g;" \ +-pe "s~\{\{summary_getBlockTemplate\}\}~gets a block template or proposal for use with mining software.~g;" \ +-pe "s~\{\{summary_getChainTips\}\}~returns information about the highest-height block (tip) of each local block chain.~g;" \ +-pe "s~\{\{summary_getChainTxStats\}\}~compute statistics about the total number and rate of transactions in the chain.~g;" \ +-pe "s~\{\{summary_getConnectionCount\}\}~returns the number of connections to other nodes.~g;" \ +-pe "s~\{\{summary_getDifficulty\}\}~returns the proof-of-work difficulty as a multiple of the minimum difficulty.~g;" \ +-pe "s~\{\{summary_getGenerate\}\}~was removed in Dash Core 0.12.3.~g;" \ +-pe "s~\{\{summary_getGovernanceInfo\}\}~returns an object containing governance parameters.~g;" \ +-pe "s~\{\{summary_getHashesPerSec\}\}~was removed in Bitcoin Core 0.11.0 and is not part of Dash.~g;" \ +-pe "s~\{\{summary_getInfo\}\}~prints various information about the node and the network.~g;" \ +-pe "s~\{\{summary_getMemPoolAncestors\}\}~returns all in-mempool ancestors for a transaction in the mempool.~g;" \ +-pe "s~\{\{summary_getMemPoolDescendants\}\}~returns all in-mempool descendants for a transaction in the mempool.~g;" \ +-pe "s~\{\{summary_getMemPoolEntry\}\}~returns mempool data for given transaction (must be in mempool).~g;" \ +-pe "s~\{\{summary_getMemPoolInfo\}\}~returns information about the node's current transaction memory pool.~g;" \ +-pe "s~\{\{summary_getMemoryInfo\}\}~returns information about memory usage.~g;" \ +-pe "s~\{\{summary_getMerkleBlocks\}\}~returns an array of hex-encoded merkleblocks for blocks starting from which match .~g;" \ +-pe "s~\{\{summary_getMiningInfo\}\}~returns various mining-related information.~g;" \ +-pe "s~\{\{summary_getNetTotals\}\}~returns information about network traffic, including bytes in, bytes out, and the current time.~g;" \ +-pe "s~\{\{summary_getNetworkHashPS\}\}~returns the estimated network hashes per second based on the last n blocks.~g;" \ +-pe "s~\{\{summary_getNetworkInfo\}\}~returns information about the node's connection to the network.~g;" \ +-pe "s~\{\{summary_getNewAddress\}\}~returns a new Dash address for receiving payments. If an account is specified, payments received with the address will be credited to that account.~g;" \ +-pe "s~\{\{summary_getPeerInfo\}\}~returns data about each connected network node.~g;" \ +-pe "s~\{\{summary_getPoolInfo\}\}~returns an object containing mixing pool related information.~g;" \ +-pe "s~\{\{summary_getRawChangeAddress\}\}~returns a new Dash address for receiving change. This is for use with raw transactions, not normal use.~g;" \ +-pe "s~\{\{summary_getRawMemPool\}\}~returns all transaction identifiers (TXIDs) in the memory pool as a JSON array, or detailed information about each transaction in the memory pool as a JSON object.~g;" \ +-pe "s~\{\{summary_getRawTransaction\}\}~gets a hex-encoded serialized transaction or a JSON object describing the transaction. By default, Dash Core only stores complete transaction data for UTXOs and your own transactions, so the RPC may fail on historic transactions unless you use the non-default \`txindex=1\` in your Dash Core startup settings.~g;" \ +-pe "s~\{\{summary_getReceivedByAccount\}\}~returns the total amount received by addresses in a particular account from transactions with the specified number of confirmations. It does not count coinbase transactions.~g;" \ +-pe "s~\{\{summary_getReceivedByAddress\}\}~returns the total amount received by the specified address in transactions with the specified number of confirmations. It does not count coinbase transactions.~g;" \ +-pe "s~\{\{summary_getSpecialTxes\}\}~returns an array of special transactions found in the specified block~g;" \ +-pe "s~\{\{summary_getSpentInfo\}\}~returns the txid and index where an output is spent (requires \`spentindex\` to be enabled).~g;" \ +-pe "s~\{\{summary_getSuperblockBudget\}\}~returns the absolute maximum sum of superblock payments allowed.~g;" \ +-pe "s~\{\{summary_getTransaction\}\}~gets detailed information about an in-wallet transaction.~g;" \ +-pe "s~\{\{summary_getTxOut\}\}~returns details about an unspent transaction output (UTXO).~g;" \ +-pe "s~\{\{summary_getTxOutProof\}\}~returns a hex-encoded proof that one or more specified transactions were included in a block.~g;" \ +-pe "s~\{\{summary_getTxOutSetInfo\}\}~returns statistics about the confirmed unspent transaction output (UTXO) set. Note that this call may take some time and that it only counts outputs from confirmed transactions---it does not count outputs from the memory pool.~g;" \ +-pe "s~\{\{summary_getUnconfirmedBalance\}\}~returns the wallet's total unconfirmed balance.~g;" \ +-pe "s~\{\{summary_getWalletInfo\}\}~provides information about the wallet.~g;" \ +-pe "s~\{\{summary_getWork\}\}~was removed in Bitcoin Core 0.10.0. and is not part of Dash~g;" \ +-pe "s~\{\{summary_help\}\}~lists all available public RPC commands, or gets help for the specified RPC. Commands which are unavailable will not be listed, such as wallet RPCs if wallet support is disabled.~g;" \ +-pe "s~\{\{summary_importAddress\}\}~adds an address or pubkey script to the wallet without the associated private key, allowing you to watch for transactions affecting that address or pubkey script without being able to spend any of its outputs.~g;" \ +-pe "s~\{\{summary_importElectrumWallet\}\}~imports keys from an Electrum wallet export file (.csv or .json)~g;" \ +-pe "s~\{\{summary_importMulti\}\}~imports addresses or scripts (with private keys, public keys, or P2SH redeem scripts) and optionally performs the minimum necessary rescan for all imports.~g;" \ +-pe "s~\{\{summary_importPrivKey\}\}~adds a private key to your wallet. The key should be formatted in the wallet import format created by the \`dumpprivkey\` RPC.~g;" \ +-pe "s~\{\{summary_importPrunedFunds\}\}~imports funds without the need of a rescan. Meant for use with pruned wallets.~g;" \ +-pe "s~\{\{summary_importPubKey\}\}~imports a public key (in hex) that can be watched as if it were in your wallet but cannot be used to spend~g;" \ +-pe "s~\{\{summary_importWallet\}\}~imports private keys from a file in wallet dump file format (see the \`dumpwallet\` RPC). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes.~g;" \ +-pe "s~\{\{summary_keepass\}\}~provides commands for configuring and managing KeePass authentication~g;" \ +-pe "s~\{\{summary_keyPoolRefill\}\}~fills the cache of unused pre-generated keys (the keypool).~g;" \ +-pe "s~\{\{summary_listAccounts\}\}~lists accounts and their balances.~g;" \ +-pe "s~\{\{summary_listAddressBalances\}\}~lists addresses of this wallet and their balances~g;" \ +-pe "s~\{\{summary_listAddressGroupings\}\}~lists groups of addresses that may have had their common ownership made public by common use as inputs in the same transaction or from being used as change from a previous transaction.~g;" \ +-pe "s~\{\{summary_listBanned\}\}~lists all banned IPs/Subnets.~g;" \ +-pe "s~\{\{summary_listLockUnspent\}\}~returns a list of temporarily unspendable (locked) outputs.~g;" \ +-pe "s~\{\{summary_listReceivedByAccount\}\}~lists the total number of dash received by each account.~g;" \ +-pe "s~\{\{summary_listReceivedByAddress\}\}~lists the total number of dash received by each address.~g;" \ +-pe "s~\{\{summary_listSinceBlock\}\}~gets all transactions affecting the wallet which have occurred since a particular block, plus the header hash of a block at a particular depth.~g;" \ +-pe "s~\{\{summary_listTransactions\}\}~returns the most recent transactions that affect the wallet.~g;" \ +-pe "s~\{\{summary_listUnspent\}\}~returns an array of unspent transaction outputs belonging to this wallet.~g;" \ +-pe "s~\{\{summary_listWallets\}\}~returns a list of currently loaded wallets.~g;" \ +-pe "s~\{\{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.~g;" \ +-pe "s~\{\{summary_logging\}\}~gets and sets the logging configuration~g;" \ +-pe "s~\{\{summary_masternode\}\}~provides a set of commands for managing masternodes and displaying information about them.~g;" \ +-pe "s~\{\{summary_masternodeBroadcast\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_masternodeList\}\}~returns a list of masternodes in different modes.~g;" \ +-pe "s~\{\{summary_mnSync\}\}~returns the sync status, updates to the next step or resets it entirely.~g;" \ +-pe "s~\{\{summary_move\}\}~moves a specified amount from one account in your wallet to another using an off-block-chain transaction.~g;" \ +-pe "s~\{\{summary_ping-rpc\}\}~sends a P2P ping message to all connected nodes to measure ping time. Results are provided by the \`getpeerinfo\` RPC pingtime and pingwait fields as decimal seconds. The P2P \`ping\` message is handled in a queue with all other commands, so it measures processing backlog, not just network ping.~g;" \ +-pe "s~\{\{summary_preciousBlock\}\}~treats a block as if it were received before others with the same work.~g;" \ +-pe "s~\{\{summary_prioritiseTransaction\}\}~adds virtual priority or fee to a transaction, allowing it to be accepted into blocks mined by this node (or miners which use this node) with a lower priority or fee. (It can also remove virtual priority or fee, requiring the transaction have a higher priority or fee to be accepted into a locally-mined block.)~g;" \ +-pe "s~\{\{summary_privateSend\}\}~controls the mixing process.~g;" \ +-pe "s~\{\{summary_proTx\}\}~provides a set of commands to execute ProTx related actions.~g;" \ +-pe "s~\{\{summary_pruneBlockChain\}\}~prunes the blockchain up to a specified height or timestamp.~g;" \ +-pe "s~\{\{summary_quorum\}\}~provides a set of commands for quorums (LLMQs).~g;" \ +-pe "s~\{\{summary_removePrunedFunds\}\}~deletes the specified transaction from the wallet. Meant for use with pruned wallets and as a companion to importprunedfunds.~g;" \ +-pe "s~\{\{summary_restGetBlock-noTxDetails\}\}~gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. The JSON object includes TXIDs for transactions within the block rather than the complete transactions [GET block][rest get block] returns.~g;" \ +-pe "s~\{\{summary_restGetBlock\}\}~gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.~g;" \ +-pe "s~\{\{summary_restGetChainInfo\}\}~returns information about the current state of the block chain.~g;" \ +-pe "s~\{\{summary_restGetGetUtxos\}\}~returns an UTXO set given a set of outpoints.~g;" \ +-pe "s~\{\{summary_restGetHeaders\}\}~returns a specified amount of block headers in upward direction.~g;" \ +-pe "s~\{\{summary_restGetMemPool-contents\}\}~returns all transaction in the memory pool with detailed information.~g;" \ +-pe "s~\{\{summary_restGetMemPool-info\}\}~returns information about the node's current transaction memory pool.~g;" \ +-pe "s~\{\{summary_restGetTx\}\}~gets a hex-encoded serialized transaction or a JSON object describing the transaction. By default, Dash Core only stores complete transaction data for UTXOs and your own transactions, so this method may fail on historic transactions unless you use the non-default \`txindex=1\` in your Dash Core startup settings.~g;" \ +-pe "s~\{\{summary_sendFrom\}\}~spends an amount from a local account to a dash address.~g;" \ +-pe "s~\{\{summary_sendMany\}\}~creates and broadcasts a transaction which sends outputs to multiple addresses.~g;" \ +-pe "s~\{\{summary_sendRawTransaction\}\}~validates a transaction and broadcasts it to the peer-to-peer network.~g;" \ +-pe "s~\{\{summary_sendToAddress\}\}~spends an amount to a given address.~g;" \ +-pe "s~\{\{summary_sentinelPing\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_setAccount\}\}~puts the specified address in the given account.~g;" \ +-pe "s~\{\{summary_setBan\}\}~attempts add or remove a IP/Subnet from the banned list.~g;" \ +-pe "s~\{\{summary_setGenerate\}\}~was removed in Dash Core 0.12.3.~g;" \ +-pe "s~\{\{summary_setNetworkActive\}\}~disables/enables all P2P network activity.~g;" \ +-pe "s~\{\{summary_setPrivateSendAmount\}\}~sets the amount of DASH to be mixed with PrivateSend~g;" \ +-pe "s~\{\{summary_setPrivateSendRounds\}\}~sets the number of PrivateSend mixing rounds to use~g;" \ +-pe "s~\{\{summary_setTxFee\}\}~sets the transaction fee per kilobyte paid by transactions created by this wallet.~g;" \ +-pe "s~\{\{summary_signMessage\}\}~signs a message with the private key of an address.~g;" \ +-pe "s~\{\{summary_signMessageWithPrivKey\}\}~signs a message with a given private key.~g;" \ +-pe "s~\{\{summary_signRawTransaction\}\}~signs a transaction in the serialized transaction format using private keys stored in the wallet or provided in the call.~g;" \ +-pe "s~\{\{summary_spork-rpc\}\}~reads or updates spork settings on the network.~g;" \ +-pe "s~\{\{summary_stop\}\}~safely shuts down the Dash Core server.~g;" \ +-pe "s~\{\{summary_submitBlock\}\}~accepts a block, verifies it is a valid addition to the block chain, and broadcasts it to the network. Extra parameters are ignored by Dash Core but may be used by mining pools or other programs.~g;" \ +-pe "s~\{\{summary_uptime\}\}~returns the total uptime of the server.~g;" \ +-pe "s~\{\{summary_validateAddress\}\}~returns information about the given Dash address.~g;" \ +-pe "s~\{\{summary_verifyChain\}\}~verifies each entry in the local block chain database.~g;" \ +-pe "s~\{\{summary_verifyMessage\}\}~verifies a signed message.~g;" \ +-pe "s~\{\{summary_verifyTxOutProof\}\}~verifies that a proof points to one or more transactions in a block, returning the transactions the proof commits to and throwing an RPC error if the block is not in our best block chain.~g;" \ +-pe "s~\{\{summary_voteRaw\}\}~compiles and relays a governance vote with provided external signature instead of signing vote internally~g;" \ +-pe "s~\{\{summary_walletLock\}\}~removes the wallet encryption key from memory, locking the wallet. After calling this method, you will need to call \`walletpassphrase\` again before being able to call any methods which require the wallet to be unlocked.~g;" \ +-pe "s~\{\{summary_walletPassphrase\}\}~stores the wallet decryption key in memory for the indicated number of seconds. Issuing the \`walletpassphrase\` command while the wallet is already unlocked will set a new unlock time that overrides the old one.~g;" \ +-pe "s~\{\{summary_walletPassphraseChange\}\}~changes the wallet passphrase from 'old passphrase' to 'new passphrase'.~g;" diff --git a/scripts/pipe-convert-for-readme b/scripts/pipe-convert-for-readme.sh similarity index 91% rename from scripts/pipe-convert-for-readme rename to scripts/pipe-convert-for-readme.sh index 08b31625..ea3a4b5c 100755 --- a/scripts/pipe-convert-for-readme +++ b/scripts/pipe-convert-for-readme.sh @@ -15,7 +15,7 @@ perl -0 \ -pe "s/\{% comment %\}.+?{% endcomment %\}//gs;" \ -pe "s/\{% include helpers\/subhead-links\.md %\}//g;" \ -pe "s/\{% (end)?autocrossref %\}//gs;" \ --pe "s/\{% assign filename=.+? %\}//g;" \ +-pe "s/\{% assign .+? %\}//g;" \ -pe "s/\{:\.no_toc\}//g;" \ -pe "s/\[([^\]]+)\]\[.+?\.term\}/<>/g;" \ -pe "s/\{% highlight ([^%]+) %\}(.+?\n){% endhighlight %\}/\`\`\` \1\2\`\`\`/gs;" \ @@ -25,7 +25,7 @@ perl -0 \ -pe "s/\n+- n: \"(.*?)\"\s+t: \"(.*?)\"\s+p: \"(.*?)\"\s+d: \"(.*?)\"/\n\1 | \2 | \3 | \4/g;" \ -pe "s/{% enditemplate %}/\n\n/g;" \ -pe "s/~~~/\`\`\`/g;" \ --pe "s/([^\n\`])\n([^\n\`\|])(?=([^\`]|\`(?!\`))*((\`\`\`[^\`]+\`\`\`)([^\`]|\`(?!\`))*)*$)/\1 \2/g;" \ +-pe "s/([0-9a-zA-Z\(\)\[\],\.\-\`])\n *([0-9a-zA-Z\(\)\[\],\.\-\`<])(?=([^\`]|\`(?!\`))*((\`\`\`[^\`]+\`\`\`)([^\`]|\`(?!\`))*)*$)/\1 \2/g;" \ -pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|---|---|---|---|---|\n/g;" \ -pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|---|---|---|---|\n/g;" \ -pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|---|---|---|\n/g;" \ From 5365b23a9c22452de6e34230d097578f32d9f23a Mon Sep 17 00:00:00 2001 From: Joshua Seigler Date: Mon, 28 Oct 2019 15:40:44 -0400 Subject: [PATCH 115/117] Add script to apply references for external links --- scripts/applyreferences.sh | 185 +++++++++++++++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100755 scripts/applyreferences.sh diff --git a/scripts/applyreferences.sh b/scripts/applyreferences.sh new file mode 100755 index 00000000..552e4a09 --- /dev/null +++ b/scripts/applyreferences.sh @@ -0,0 +1,185 @@ +#!/usr/bin/env bash + +# first pattern changes [aaaa][] to [aaaa][aaaa] + +perl -pe "s/\[([^\]]+)\]\[\]/[\1][\1]/g;" \ +-pe "s~\]\[data-pushing opcode\]~](https://en.bitcoin.it/wiki/Script#Constants)~g;" \ +-pe "s~\]\[bitcoinpdf\]~](https://bitcoin.org/en/bitcoin-paper)~g;" \ +-pe "s~\]\[choose your wallet\]~](https://www.dash.org/wallets/)~g;" \ +-pe "s~\]\[communities\]~](https://www.dash.org/community/)~g;" \ +-pe "s~\]\[core executable\]~](https://www.dash.org/wallets/#wallets)~g;" \ +-pe "s~\]\[dev communities\]~](https://www.dash.org/community/)~g;" \ +-pe "s~\]\[BIP9\]~](https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki)~g;" \ +-pe "s~\]\[BIP9 assignments\]~](https://github.com/bitcoin/bips/blob/master/bip-0009/assignments.mediawiki)~g;" \ +-pe "s~\]\[BIP14\]~](https://github.com/bitcoin/bips/blob/master/bip-0014.mediawiki)~g;" \ +-pe "s~\]\[BIP16\]~](https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki)~g;" \ +-pe "s~\]\[BIP21\]~](https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki)~g;" \ +-pe "s~\]\[BIP22\]~](https://github.com/bitcoin/bips/blob/master/bip-0022.mediawiki)~g;" \ +-pe "s~\]\[BIP23\]~](https://github.com/bitcoin/bips/blob/master/bip-0023.mediawiki)~g;" \ +-pe "s~\]\[BIP30\]~](https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki)~g;" \ +-pe "s~\]\[BIP31\]~](https://github.com/bitcoin/bips/blob/master/bip-0031.mediawiki)~g;" \ +-pe "s~\]\[BIP32\]~](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)~g;" \ +-pe "s~\]\[BIP34\]~](https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki)~g;" \ +-pe "s~\]\[BIP35\]~](https://github.com/bitcoin/bips/blob/master/bip-0035.mediawiki)~g;" \ +-pe "s~\]\[BIP37\]~](https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki)~g;" \ +-pe "s~\]\[BIP39\]~](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki)~g;" \ +-pe "s~\]\[BIP50\]~](https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki)~g;" \ +-pe "s~\]\[BIP61\]~](https://github.com/bitcoin/bips/blob/master/bip-0061.mediawiki)~g;" \ +-pe "s~\]\[BIP62\]~](https://github.com/bitcoin/bips/blob/master/bip-0062.mediawiki)~g;" \ +-pe "s~\]\[BIP65\]~](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki)~g;" \ +-pe "s~\]\[BIP66\]~](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)~g;" \ +-pe "s~\]\[BIP68\]~](https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki)~g;" \ +-pe "s~\]\[BIP70\]~](https://github.com/bitcoin/bips/blob/master/bip-0070.mediawiki)~g;" \ +-pe "s~\]\[BIP71\]~](https://github.com/bitcoin/bips/blob/master/bip-0071.mediawiki)~g;" \ +-pe "s~\]\[BIP72\]~](https://github.com/bitcoin/bips/blob/master/bip-0072.mediawiki)~g;" \ +-pe "s~\]\[BIP90\]~](https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki)~g;" \ +-pe "s~\]\[BIP111\]~](https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki)~g;" \ +-pe "s~\]\[BIP112\]~](https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki)~g;" \ +-pe "s~\]\[BIP113\]~](https://github.com/bitcoin/bips/blob/master/bip-0113.mediawiki)~g;" \ +-pe "s~\]\[BIP125\]~](https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki)~g;" \ +-pe "s~\]\[BIP130\]~](https://github.com/bitcoin/bips/blob/master/bip-0130.mediawiki)~g;" \ +-pe "s~\]\[BIP133\]~](https://github.com/bitcoin/bips/blob/master/bip-0133.mediawiki)~g;" \ +-pe "s~\]\[BIP141\]~](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki)~g;" \ +-pe "s~\]\[BIP147\]~](https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki)~g;" \ +-pe "s~\]\[BIP151\]~](https://github.com/bitcoin/bips/blob/master/bip-0151.mediawiki)~g;" \ +-pe "s~\]\[BIP152\]~](https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki)~g;" \ +-pe "s~\]\[CVE-2012-2459\]~](https://en.bitcoin.it/wiki/CVEs#CVE-2012-2459)~g;" \ +-pe "s~\]\[RFC5737\]~](http://tools.ietf.org/html/rfc5737)~g;" \ +-pe "s~\]\[secp256k1\]~](http://www.secg.org/sec2-v2.pdf)~g;" \ +-pe "s~\]\[DIP1\]~](https://github.com/dashpay/dips/blob/master/dip-0001.md)~g;" \ +-pe "s~\]\[DIP2\]~](https://github.com/dashpay/dips/blob/master/dip-0002.md)~g;" \ +-pe "s~\]\[DIP3\]~](https://github.com/dashpay/dips/blob/master/dip-0003.md)~g;" \ +-pe "s~\]\[DIP4\]~](https://github.com/dashpay/dips/blob/master/dip-0004.md)~g;" \ +-pe "s~\]\[DIP5\]~](https://github.com/dashpay/dips/blob/master/dip-0005.md)~g;" \ +-pe "s~\]\[DIP6\]~](https://github.com/dashpay/dips/blob/master/dip-0006.md)~g;" \ +-pe "s~\]\[DIP7\]~](https://github.com/dashpay/dips/blob/master/dip-0007.md)~g;" \ +-pe "s~\]\[DIP8\]~](https://github.com/dashpay/dips/blob/master/dip-0008.md)~g;" \ +-pe "s~\]\[#bitcoin\]~](https://webchat.freenode.net/?channels=bitcoin&uio=d4)~g;" \ +-pe "s~\]\[#bitcoin-dev\]~](https://webchat.freenode.net/?channels=bitcoin-dev&uio=d4)~g;" \ +-pe "s~\]\[#bitcoin-mining\]~](https://webchat.freenode.net/?channels=bitcoin-mining&uio=d4)~g;" \ +-pe "s~\]\[#bitcoin-wiki\]~](https://webchat.freenode.net/?channels=bitcoin-wiki&uio=d4)~g;" \ +-pe "s~\]\[0bin\]~](http://0bin.net/)~g;" \ +-pe "s~\]\[bcc automated testing\]~](https://github.com/dashpay/dash/blob/master/README.md#automated-testing)~g;" \ +-pe "s~\]\[bcc configuration\]~](https://en.bitcoin.it/wiki/Running_Bitcoin)~g;" \ +-pe "s~\]\[bcc data directory\]~](https://en.bitcoin.it/wiki/Data_directory)~g;" \ +-pe "s~\]\[bcc issues\]~](https://github.com/dashpay/dash/issues)~g;" \ +-pe "s~\]\[bcc new issue\]~](https://github.com/dashpay/dash/issues/new)~g;" \ +-pe "s~\]\[bcc pulls\]~](https://github.com/dashpay/dash/pulls)~g;" \ +-pe "s~\]\[bcc tor\]~](https://en.bitcoin.it/wiki/Tor)~g;" \ +-pe "s~\]\[bcc tor hs\]~](https://en.bitcoin.it/wiki/Tor#Hidden_services)~g;" \ +-pe "s~\]\[core github tag\]~](https://github.com/bitcoin-dot-org/bitcoin.org/labels/Core)~g;" \ +-pe "s~\]\[BFGMiner\]~](https://github.com/luke-jr/bfgminer)~g;" \ +-pe "s~\]\[Bitcoin beginners\]~](http://www.reddit.com/r/bitcoinbeginners)~g;" \ +-pe "s~\]\[Bitcoin Core\]~](https://bitcoin.org/en/download)~g;" \ +-pe "s~\]\[Bitcoin Core 0.1.6\]~](https://github.com/bitcoin/bitcoin/commit/cc0b4c3b62367a2aebe5fc1f4d0ed4b97e9c2ac9)~g;" \ +-pe "s~\]\[Bitcoin Core 0.2.9\]~](https://github.com/bitcoin/bitcoin/commit/42605ce8bcc9bd01b86491c74fee14de77960868)~g;" \ +-pe "s~\]\[Bitcoin Core 0.3.11\]~](https://github.com/bitcoin/bitcoin/commit/343328c6b8db85e58a1feea85f0d10e62967fa19)~g;" \ +-pe "s~\]\[Bitcoin Core 0.3.15\]~](https://github.com/bitcoin/bitcoin/commit/c891967b6fcab2e8dc4ce0c787312b36c07efa4d)~g;" \ +-pe "s~\]\[Bitcoin Core 0.3.18\]~](https://github.com/bitcoin/bitcoin/commit/82201801336f64ee77851b9eaab9383ee4e442f0)~g;" \ +-pe "s~\]\[Bitcoin Core build unix\]~](https://github.com/dashpay/dash/blob/master/doc/build-unix.md)~g;" \ +-pe "s~\]\[Bitcoin Core docs directory\]~](https://github.com/dashpay/dash/tree/master/doc)~g;" \ +-pe "s~\]\[bitcoin core fee drop commit\]~](https://github.com/bitcoin/bitcoin/commit/6a4c196dd64da2fd33dc7ae77a8cdd3e4cf0eff1)~g;" \ +-pe "s~\]\[Bitcoin Core issue #2381\]~](https://github.com/bitcoin/bitcoin/issues/2381)~g;" \ +-pe "s~\]\[Bitcoin Core master\]~](https://github.com/dashpay/dash)~g;" \ +-pe "s~\]\[Bitcoin Core pull #4468\]~](https://github.com/bitcoin/bitcoin/pull/4468)~g;" \ +-pe "s~\]\[Bitcoin core transifex\]~](https://www.transifex.com/projects/p/bitcoin/)~g;" \ +-pe "s~\]\[Bitcoin reddit\]~](http://www.reddit.com/r/dashpay)~g;" \ +-pe "s~\]\[Bitcoin reddit new\]~](http://www.reddit.com/r/dashpay/new)~g;" \ +-pe "s~\]\[Bitcoin stackexchange\]~](http://bitcoin.stackexchange.com)~g;" \ +-pe "s~\]\[Bitcoin stackexchange tag bitcoin-qt\]~](http://bitcoin.stackexchange.com/questions/tagged/bitcoin-qt)~g;" \ +-pe "s~\]\[BitcoinJ\]~](http://bitcoinj.github.io)~g;" \ +-pe "s~\]\[BitcoinJ documentation about pending transaction safety\]~](https://bitcoinj.github.io/security-model#pending-transactions)~g;" \ +-pe "s~\]\[bitcoinj micropayment tutorial\]~](https://bitcoinj.github.io/working-with-micropayments)~g;" \ +-pe "s~\]\[block170\]~](https://www.biteasy.com/block/00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee)~g;" \ +-pe "s~\]\[casascius address utility\]~](https://github.com/casascius/Bitcoin-Address-Utility)~g;" \ +-pe "s~\]\[core base58.h\]~](https://github.com/dashpay/dash/blob/master/src/base58.h)~g;" \ +-pe "s~\]\[core chainparams.cpp\]~](https://github.com/dashpay/dash/blob/master/src/chainparams.cpp)~g;" \ +-pe "s~\]\[core git\]~](https://github.com/dashpay/dash/)~g;" \ +-pe "s~\]\[core paymentrequest.proto\]~](https://github.com/dashpay/dash/blob/master/src/qt/paymentrequest.proto)~g;" \ +-pe "s~\]\[core script.h\]~](https://github.com/dashpay/dash/blob/master/src/script/script.h)~g;" \ +-pe "s~\]\[creative commons attribution 3.0 license\]~](https://creativecommons.org/licenses/by/3.0/)~g;" \ +-pe "s~\]\[Dash Masternode Tool\]~](https://github.com/Bertrand256/dash-masternode-tool)~g;" \ +-pe "s~\]\[Dash Seeder\]~](https://github.com/nightlydash/dash-seeder/tree/master)~g;" \ +-pe "s~\]\[DashJ\]~](https://github.com/HashEngineering/dashj)~g;" \ +-pe "s~\]\[dashmnb\]~](https://github.com/chaeplin/dashmnb)~g;" \ +-pe "s~\]\[DER\]~](https://en.wikipedia.org/wiki/X.690#DER_encoding)~g;" \ +-pe "s~\]\[dig command\]~](https://en.wikipedia.org/wiki/Dig_%28Unix_command%29)~g;" \ +-pe "s~\]\[Discord channels\]~](http://www.dashchat.org)~g;" \ +-pe "s~\]\[DNS A records\]~](http://tools.ietf.org/html/rfc1035#section-3.2.2)~g;" \ +-pe "s~\]\[DNS Seed Policy\]~](https://github.com/dashpay/dash/blob/master/doc/dnsseed-policy.md)~g;" \ +-pe "s~\]\[docs issue\]~](https://github.com/dash-docs/dash-docs/issues)~g;" \ +-pe "s~\]\[ECDSA\]~](https://en.wikipedia.org/wiki/Elliptic_Curve_DSA)~g;" \ +-pe "s~\]\[edit bandwidth sharing guide\]~](https://github.com/bitcoin-dot-org/bitcoin.org/edit/master/en/full-node.md)~g;" \ +-pe "s~\]\[Electrum server\]~](https://github.com/spesmilo/electrum-server)~g;" \ +-pe "s~\]\[Eloipool\]~](https://github.com/luke-jr/eloipool)~g;" \ +-pe "s~\]\[errors in docs\]~](https://github.com/dash-docs/dash-docs/issues?q=is%3Aissue+label%3A%22Dev+Docs%22)~g;" \ +-pe "s~\]\[fake satoshi transaction\]~](https://www.reddit.com/r/Bitcoin/comments/3fv42j/blockchaininfo_spoofed_transactions_problem_aug_4/)~g;" \ +-pe "s~\]\[forum tech support\]~](https://www.dash.org/forum/categories/dash-support.61/)~g;" \ +-pe "s~\]\[ghash betcoin double spend\]~](https://bitcointalk.org/index.php?topic=321630.msg3445371)~g;" \ +-pe "s~\]\[gitian sigs\]~](https://github.com/bitcoin/gitian.sigs)~g;" \ +-pe "s~\]\[high-speed block relay network\]~](https://www.mail-archive.com/bitcoin-development@lists.sourceforge.net/msg03189.html)~g;" \ +-pe "s~\]\[HMAC-SHA512\]~](https://en.wikipedia.org/wiki/HMAC)~g;" \ +-pe "s~\]\[HTTP basic authentication\]~](https://en.wikipedia.org/wiki/Basic_access_authentication)~g;" \ +-pe "s~\]\[HTTP longpoll\]~](https://en.wikipedia.org/wiki/Push_technology#Long_polling)~g;" \ +-pe "s~\]\[information theoretic security\]~](https://en.wikipedia.org/wiki/Information_theoretic_security)~g;" \ +-pe "s~\]\[inherit bitcoins\]~](http://bitcoin.stackexchange.com/q/38692/21052)~g;" \ +-pe "s~\]\[IP-to-IP payment protocol\]~](https://en.bitcoin.it/wiki/IP_Transactions)~g;" \ +-pe "s~\]\[IPv4-mapped IPv6 addresses\]~](http://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses)~g;" \ +-pe "s~\]\[irc channels\]~](https://en.bitcoin.it/wiki/IRC_channels)~g;" \ +-pe "s~\]\[JSON-RPC version 1.0\]~](http://json-rpc.org/wiki/specification)~g;" \ +-pe "s~\]\[JSON-RPC request batching\]~](http://www.jsonrpc.org/specification#batch)~g;" \ +-pe "s~\]\[july 2015 chain forks\]~](https://en.bitcoin.it/wiki/July_2015_chain_forks)~g;" \ +-pe "s~\]\[libblkmaker\]~](https://github.com/bitcoin/libblkmaker)~g;" \ +-pe "s~\]\[localhost\]~](https://en.wikipedia.org/wiki/Localhost)~g;" \ +-pe "s~\]\[lying consistently is hard\]~](https://groups.google.com/forum/#!msg/bitcoinj/Ys13qkTwcNg/9qxnhwnkeoIJ)~g;" \ +-pe "s~\]\[makeseeds script\]~](https://github.com/dashpay/dash/tree/master/contrib/seeds)~g;" \ +-pe "s~\]\[mozilla's bug reporting documentation\]~](https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_writing_guidelines#Writing_precise_steps_to_reproduce)~g;" \ +-pe "s~\]\[murmur3\]~](https://en.wikipedia.org/wiki/MurmurHash)~g;" \ +-pe "s~\]\[man-in-the-middle\]~](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)~g;" \ +-pe "s~\]\[MIME\]~](https://en.wikipedia.org/wiki/Internet_media_type)~g;" \ +-pe "s~\]\[MIT license\]~](http://opensource.org/licenses/MIT)~g;" \ +-pe "s~\]\[mozrootstore\]~](https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/)~g;" \ +-pe "s~\]\[native irc client\]~](https://en.wikipedia.org/wiki/List_of_IRC_clients)~g;" \ +-pe "s~\]\[netcat\]~](https://en.wikipedia.org/wiki/Netcat)~g;" \ +-pe "s~\]\[nop opcodes\]~](https://en.bitcoin.it/wiki/Script#Reserved_words)~g;" \ +-pe "s~\]\[offline transactions\]~](http://bitcoin.stackexchange.com/a/34122/21052)~g;" \ +-pe "s~\]\[open a pull request\]~](https://github.com/dash-docs/dash-docs#working-with-github)~g;" \ +-pe "s~\]\[open an issue\]~](https://github.com/dash-docs/dash-docs/issues/new)~g;" \ +-pe "s~\]\[Payment Request Generator\]~](https://github.com/gavinandresen/paymentrequest/blob/master/php/demo_website/createpaymentrequest.php)~g;" \ +-pe "s~\]\[Piotr Piasecki's testnet faucet\]~](https://tpfaucet.appspot.com/)~g;" \ +-pe "s~\]\[prime symbol\]~](https://en.wikipedia.org/wiki/Prime_%28symbol%29)~g;" \ +-pe "s~\]\[protobuf\]~](https://developers.google.com/protocol-buffers/)~g;" \ +-pe "s~\]\[python-bitcoinlib\]~](https://github.com/petertodd/python-bitcoinlib)~g;" \ +-pe "s~\]\[python-blkmaker\]~](https://gitorious.org/bitcoin/python-blkmaker)~g;" \ +-pe "s~\]\[Satoshi Nakamoto\]~](https://en.bitcoin.it/wiki/Satoshi_Nakamoto)~g;" \ +-pe "s~\]\[setup tor\]~](https://www.torproject.org/)~g;" \ +-pe "s~\]\[SHA256\]~](https://en.wikipedia.org/wiki/SHA-2)~g;" \ +-pe "s~\]\[Stratum mining protocol\]~](http://mining.bitcoin.cz/stratum-mining)~g;" \ +-pe "s~\]\[study of SPV privacy over tor\]~](http://arxiv.org/abs/1410.6079)~g;" \ +-pe "s~\]\[superblock example\]~](https://chainz.cryptoid.info/dash/block.dws?731104.htm)~g;" \ +-pe "s~\]\[Testnet Faucet - Dash.org\]~](https://test.faucet.dash.org/)~g;" \ +-pe "s~\]\[Testnet Faucet - Masternode.io\]~](http://test.faucet.masternode.io/)~g;" \ +-pe "s~\]\[Testnet Faucet - Dashninja.pl\]~](https://test.faucet.dashninja.pl/)~g;" \ +-pe "s~\]\[Testnet Faucet - Crowdnode.io\]~](http://faucet.test.dash.crowdnode.io/)~g;" \ +-pe "s~\]\[Tor\]~](https://en.wikipedia.org/wiki/Tor_%28anonymity_network%29)~g;" \ +-pe "s~\]\[transifex\]~](https://www.transifex.com/projects/p/bitcoinorg/)~g;" \ +-pe "s~\]\[unix epoch time\]~](https://en.wikipedia.org/wiki/Unix_time)~g;" \ +-pe "s~\]\[URI encoded\]~](https://tools.ietf.org/html/rfc3986)~g;" \ +-pe "s~\]\[wiki bitcoin core compatible devices arm\]~](https://en.bitcoin.it/wiki/Bitcoin_Core_compatible_devices#ARM-based_Chipsets)~g;" \ +-pe "s~\]\[wiki bitcoin core documentation\]~](https://en.bitcoin.it/wiki/Category:Bitcoin_Core_documentation)~g;" \ +-pe "s~\]\[wiki create account\]~](https://en.bitcoin.it/w/index.php?title=Special:UserLogin&type=signup)~g;" \ +-pe "s~\]\[wiki enable editing\]~](https://en.bitcoin.it/wiki/Bitcoin_Wiki:Editing_privileges)~g;" \ +-pe "s~\]\[wiki getblocktemplate\]~](https://en.bitcoin.it/wiki/Getblocktemplate)~g;" \ +-pe "s~\]\[wiki proper money handling\]~](https://en.bitcoin.it/wiki/Proper_Money_Handling_%28JSON-RPC%29)~g;" \ +-pe "s~\]\[wiki template bitcoin core documentation\]~](https://en.bitcoin.it/wiki/Template:Bitcoin_Core_documentation)~g;" \ +-pe "s~\]\[wiki script\]~](https://en.bitcoin.it/wiki/Script)~g;" \ +-pe "s~\]\[x509\]~](https://en.wikipedia.org/wiki/X.509)~g;" \ +-pe "s~\]\[core bloom.cpp hash\]~](https://github.com/dashpay/dash/blob/333e1eaeea80344e5a28db6efbce2691c85e2b25/src/bloom.cpp#L58)~g;" \ +-pe "s~\]\[MAX_SIZE\]~](https://github.com/dashpay/dash/blob/c31ba8ba4c07e72620bd71753f2103ca103bb1c2/src/serialize.h#L26)~g;" \ +-pe "s~\]\[privatesend denominations\]~](https://github.com/dashpay/dash/blob/753b1e486b2757b1dba59998ee477e7ceff04f2d/src/privatesend.cpp#L149-L171)~g;" \ +-pe "s~\]\[rpcprotocol.h\]~](https://github.com/dashpay/dash/blob/3e0eee4c84f40b3cf277e8d03e004249d03c081d/src/rpcprotocol.h)~g;" \ +-pe "s~\]\[spork.h\]~](https://github.com/dashpay/dash/blob/a4f5ba38b65384fb9243ce78c111feceb377e1a9/src/spork.h#L20)~g;" \ +-pe "s~\]\[spork pubkey\]~](https://github.com/dashpay/dash/blob/eaf90b77177efbaf9cbed46e822f0d794f1a0ee5/src/chainparams.cpp#L158)~g;" \ +-pe "s~\]\[masternode payments pubkey\]~](https://github.com/dashpay/dash/blob/eaf90b77177efbaf9cbed46e822f0d794f1a0ee5/src/chainparams.cpp#L159)~g;" \ +-pe "s~\]\[block subsidy\]~](https://github.com/dashpay/dash/blob/9ed9474a9eb007bba70278ce19df68e84aeeb712/src/main.cpp#L1741)~g;" \ +-pe "s~\]\[governance vote signature format\]~](https://github.com/dashpay/dash/blob/48d63ab296f5613c727306ea39524f51d157a04c/src/governance-vote.cpp#L240-#L241)~g;" \ From 6e61800c974e27aceeebc624a4f2bca8137ed446 Mon Sep 17 00:00:00 2001 From: Joshua Seigler Date: Mon, 28 Oct 2019 17:57:27 -0400 Subject: [PATCH 116/117] Create script to apply RPC internal links --- scripts/applyrpcs.sh | 149 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100755 scripts/applyrpcs.sh diff --git a/scripts/applyrpcs.sh b/scripts/applyrpcs.sh new file mode 100755 index 00000000..c15d2381 --- /dev/null +++ b/scripts/applyrpcs.sh @@ -0,0 +1,149 @@ +#!/usr/bin/env bash + +perl \ +-pe "s~\[rpc getaddressbalance\]~(/docs/core-api-ref-remote-procedure-calls-address-index#section-getaddressbalance)~g;" \ +-pe "s~\[rpc getaddressdeltas\]~(/docs/core-api-ref-remote-procedure-calls-address-index#section-getaddressdeltas)~g;" \ +-pe "s~\[rpc getaddressmempool\]~(/docs/core-api-ref-remote-procedure-calls-address-index#section-getaddressmempool)~g;" \ +-pe "s~\[rpc getaddresstxids\]~(/docs/core-api-ref-remote-procedure-calls-address-index#section-getaddresstxids)~g;" \ +-pe "s~\[rpc getaddressutxos\]~(/docs/core-api-ref-remote-procedure-calls-address-index#section-getaddressutxos)~g;" \ +-pe "s~\[rpc getbestblockhash\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getbestblockhash)~g;" \ +-pe "s~\[rpc getbestchainlock\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getbestchainlock)~g;" \ +-pe "s~\[rpc getblock\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getblock)~g;" \ +-pe "s~\[rpc getblockchaininfo\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getblockchaininfo)~g;" \ +-pe "s~\[rpc getblockcount\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getblockcount)~g;" \ +-pe "s~\[rpc getblockhash\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getblockhash)~g;" \ +-pe "s~\[rpc getblockhashes\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getblockhashes)~g;" \ +-pe "s~\[rpc getblockheader\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getblockheader)~g;" \ +-pe "s~\[rpc getblockheaders\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getblockheaders)~g;" \ +-pe "s~\[rpc getblockstats\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getblockstats)~g;" \ +-pe "s~\[rpc getchaintips\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getchaintips)~g;" \ +-pe "s~\[rpc getchaintxstats\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getchaintxstats)~g;" \ +-pe "s~\[rpc getdifficulty\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getdifficulty)~g;" \ +-pe "s~\[rpc getmempoolancestors\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getmempoolancestors)~g;" \ +-pe "s~\[rpc getmempooldescendants\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getmempooldescendants)~g;" \ +-pe "s~\[rpc getmempoolentry\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getmempoolentry)~g;" \ +-pe "s~\[rpc getmempoolinfo\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getmempoolinfo)~g;" \ +-pe "s~\[rpc getrawmempool\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getrawmempool)~g;" \ +-pe "s~\[rpc getmerkleblocks\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getmerkleblocks)~g;" \ +-pe "s~\[rpc getspecialtxes\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getspecialtxes)~g;" \ +-pe "s~\[rpc getspentinfo\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-getspentinfo)~g;" \ +-pe "s~\[rpc gettxout\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-gettxout)~g;" \ +-pe "s~\[rpc gettxoutproof\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-gettxoutproof)~g;" \ +-pe "s~\[rpc gettxoutsetinfo\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-gettxoutsetinfo)~g;" \ +-pe "s~\[rpc preciousblock\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-preciousblock)~g;" \ +-pe "s~\[rpc pruneblockchain\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-pruneblockchain)~g;" \ +-pe "s~\[rpc verifychain\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-verifychain)~g;" \ +-pe "s~\[rpc verifytxoutproof\]~(/docs/core-api-ref-remote-procedure-calls-blockchain#section-verifytxoutproof)~g;" \ +-pe "s~\[rpc debug\]~(/docs/core-api-ref-remote-procedure-calls-control#section-debug)~g;" \ +-pe "s~\[rpc getinfo\]~(/docs/core-api-ref-remote-procedure-calls-control#section-getinfo)~g;" \ +-pe "s~\[rpc getmemoryinfo\]~(/docs/core-api-ref-remote-procedure-calls-control#section-getmemoryinfo)~g;" \ +-pe "s~\[rpc help\]~(/docs/core-api-ref-remote-procedure-calls-control#section-help)~g;" \ +-pe "s~\[rpc logging\]~(/docs/core-api-ref-remote-procedure-calls-control#section-logging)~g;" \ +-pe "s~\[rpc stop\]~(/docs/core-api-ref-remote-procedure-calls-control#section-stop)~g;" \ +-pe "s~\[rpc uptime\]~(/docs/core-api-ref-remote-procedure-calls-control#section-uptime)~g;" \ +-pe "s~\[rpc getgovernanceinfo\]~(/docs/core-api-ref-remote-procedure-calls-dash#section-getgovernanceinfo)~g;" \ +-pe "s~\[rpc getpoolinfo\]~(/docs/core-api-ref-remote-procedure-calls-dash#section-getpoolinfo)~g;" \ +-pe "s~\[rpc getsuperblockbudget\]~(/docs/core-api-ref-remote-procedure-calls-dash#section-getsuperblockbudget)~g;" \ +-pe "s~\[rpc gobject\]~(/docs/core-api-ref-remote-procedure-calls-dash#section-gobject)~g;" \ +-pe "s~\[rpc masternode\]~(/docs/core-api-ref-remote-procedure-calls-dash#section-masternode)~g;" \ +-pe "s~\[rpc masternodelist\]~(/docs/core-api-ref-remote-procedure-calls-dash#section-masternodelist)~g;" \ +-pe "s~\[rpc mnsync\]~(/docs/core-api-ref-remote-procedure-calls-dash#section-mnsync)~g;" \ +-pe "s~\[rpc privatesend\]~(/docs/core-api-ref-remote-procedure-calls-dash#section-privatesend)~g;" \ +-pe "s~\[rpc spork\]~(/docs/core-api-ref-remote-procedure-calls-dash#section-spork)~g;" \ +-pe "s~\[rpc voteraw\]~(/docs/core-api-ref-remote-procedure-calls-dash#section-voteraw)~g;" \ +-pe "s~\[rpc bls\]~(/docs/core-api-ref-remote-procedure-calls-evolution#section-bls)~g;" \ +-pe "s~\[rpc protx\]~(/docs/core-api-ref-remote-procedure-calls-evolution#section-protx)~g;" \ +-pe "s~\[rpc quorum\]~(/docs/core-api-ref-remote-procedure-calls-evolution#section-quorum)~g;" \ +-pe "s~\[rpc generate\]~(/docs/core-api-ref-remote-procedure-calls-generating#section-generate)~g;" \ +-pe "s~\[rpc generatetoaddress\]~(/docs/core-api-ref-remote-procedure-calls-generating#section-generatetoaddress)~g;" \ +-pe "s~\[rpc getblocktemplate\]~(/docs/core-api-ref-remote-procedure-calls-mining#section-getblocktemplate)~g;" \ +-pe "s~\[rpc getmininginfo\]~(/docs/core-api-ref-remote-procedure-calls-mining#section-getmininginfo)~g;" \ +-pe "s~\[rpc getnetworkhashps\]~(/docs/core-api-ref-remote-procedure-calls-mining#section-getnetworkhashps)~g;" \ +-pe "s~\[rpc prioritisetransaction\]~(/docs/core-api-ref-remote-procedure-calls-mining#section-prioritisetransaction)~g;" \ +-pe "s~\[rpc submitblock\]~(/docs/core-api-ref-remote-procedure-calls-mining#section-submitblock)~g;" \ +-pe "s~\[rpc addnode\]~(/docs/core-api-ref-remote-procedure-calls-network#section-addnode)~g;" \ +-pe "s~\[rpc clearbanned\]~(/docs/core-api-ref-remote-procedure-calls-network#section-clearbanned)~g;" \ +-pe "s~\[rpc disconnectnode\]~(/docs/core-api-ref-remote-procedure-calls-network#section-disconnectnode)~g;" \ +-pe "s~\[rpc getaddednodeinfo\]~(/docs/core-api-ref-remote-procedure-calls-network#section-getaddednodeinfo)~g;" \ +-pe "s~\[rpc getconnectioncount\]~(/docs/core-api-ref-remote-procedure-calls-network#section-getconnectioncount)~g;" \ +-pe "s~\[rpc getnettotals\]~(/docs/core-api-ref-remote-procedure-calls-network#section-getnettotals)~g;" \ +-pe "s~\[rpc getnetworkinfo\]~(/docs/core-api-ref-remote-procedure-calls-network#section-getnetworkinfo)~g;" \ +-pe "s~\[rpc getpeerinfo\]~(/docs/core-api-ref-remote-procedure-calls-network#section-getpeerinfo)~g;" \ +-pe "s~\[rpc listbanned\]~(/docs/core-api-ref-remote-procedure-calls-network#section-listbanned)~g;" \ +-pe "s~\[rpc ping\]~(/docs/core-api-ref-remote-procedure-calls-network#section-ping)~g;" \ +-pe "s~\[rpc setban\]~(/docs/core-api-ref-remote-procedure-calls-network#section-setban)~g;" \ +-pe "s~\[rpc setnetworkactive\]~(/docs/core-api-ref-remote-procedure-calls-network#section-setnetworkactive)~g;" \ +-pe "s~\[rpc combinerawtransaction\]~(/docs/core-api-ref-remote-procedure-calls-raw-transaction#section-combinerawtransaction)~g;" \ +-pe "s~\[rpc createrawtransaction\]~(/docs/core-api-ref-remote-procedure-calls-raw-transaction#section-createrawtransaction)~g;" \ +-pe "s~\[rpc decoderawtransaction\]~(/docs/core-api-ref-remote-procedure-calls-raw-transaction#section-decoderawtransaction)~g;" \ +-pe "s~\[rpc decodescript\]~(/docs/core-api-ref-remote-procedure-calls-raw-transaction#section-decodescript)~g;" \ +-pe "s~\[rpc fundrawtransaction\]~(/docs/core-api-ref-remote-procedure-calls-raw-transaction#section-fundrawtransaction)~g;" \ +-pe "s~\[rpc getrawtransaction\]~(/docs/core-api-ref-remote-procedure-calls-raw-transaction#section-getrawtransaction)~g;" \ +-pe "s~\[rpc sendrawtransaction\]~(/docs/core-api-ref-remote-procedure-calls-raw-transaction#section-sendrawtransaction)~g;" \ +-pe "s~\[rpc signrawtransaction\]~(/docs/core-api-ref-remote-procedure-calls-raw-transaction#section-signrawtransaction)~g;" \ +-pe "s~\[rpc createmultisig\]~(/docs/core-api-ref-remote-procedure-calls-utility#section-createmultisig)~g;" \ +-pe "s~\[rpc estimatefee\]~(/docs/core-api-ref-remote-procedure-calls-utility#section-estimatefee)~g;" \ +-pe "s~\[rpc estimatesmartfee\]~(/docs/core-api-ref-remote-procedure-calls-utility#section-estimatesmartfee)~g;" \ +-pe "s~\[rpc signmessagewithprivkey\]~(/docs/core-api-ref-remote-procedure-calls-utility#section-signmessagewithprivkey)~g;" \ +-pe "s~\[rpc validateaddress\]~(/docs/core-api-ref-remote-procedure-calls-utility#section-validateaddress)~g;" \ +-pe "s~\[rpc verifymessage\]~(/docs/core-api-ref-remote-procedure-calls-utility#section-verifymessage)~g;" \ +-pe "s~\[rpc abandontransaction\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-abandontransaction)~g;" \ +-pe "s~\[rpc abortrescan\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-abortrescan)~g;" \ +-pe "s~\[rpc addmultisigaddress\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-addmultisigaddress)~g;" \ +-pe "s~\[rpc backupwallet\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-backupwallet)~g;" \ +-pe "s~\[rpc dumphdinfo\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-dumphdinfo)~g;" \ +-pe "s~\[rpc dumpprivkey\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-dumpprivkey)~g;" \ +-pe "s~\[rpc dumpwallet\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-dumpwallet)~g;" \ +-pe "s~\[rpc encryptwallet\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-encryptwallet)~g;" \ +-pe "s~\[rpc getaccount\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-getaccount)~g;" \ +-pe "s~\[rpc getaccountaddress\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-getaccountaddress)~g;" \ +-pe "s~\[rpc getaddressesbyaccount\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-getaddressesbyaccount)~g;" \ +-pe "s~\[rpc getbalance\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-getbalance)~g;" \ +-pe "s~\[rpc getnewaddress\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-getnewaddress)~g;" \ +-pe "s~\[rpc getrawchangeaddress\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-getrawchangeaddress)~g;" \ +-pe "s~\[rpc getreceivedbyaccount\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-getreceivedbyaccount)~g;" \ +-pe "s~\[rpc getreceivedbyaddress\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-getreceivedbyaddress)~g;" \ +-pe "s~\[rpc gettransaction\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-gettransaction)~g;" \ +-pe "s~\[rpc getunconfirmedbalance\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-getunconfirmedbalance)~g;" \ +-pe "s~\[rpc getwalletinfo\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-getwalletinfo)~g;" \ +-pe "s~\[rpc importaddress\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-importaddress)~g;" \ +-pe "s~\[rpc importelectrumwallet\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-importelectrumwallet)~g;" \ +-pe "s~\[rpc importmulti\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-importmulti)~g;" \ +-pe "s~\[rpc importprivkey\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-importprivkey)~g;" \ +-pe "s~\[rpc importprunedfunds\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-importprunedfunds)~g;" \ +-pe "s~\[rpc importpubkey\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-importpubkey)~g;" \ +-pe "s~\[rpc importwallet\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-importwallet)~g;" \ +-pe "s~\[rpc keepass\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-keepass)~g;" \ +-pe "s~\[rpc keypoolrefill\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-keypoolrefill)~g;" \ +-pe "s~\[rpc listaccounts\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-listaccounts)~g;" \ +-pe "s~\[rpc listaddressbalances\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-listaddressbalances)~g;" \ +-pe "s~\[rpc listaddressgroupings\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-listaddressgroupings)~g;" \ +-pe "s~\[rpc listlockunspent\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-listlockunspent)~g;" \ +-pe "s~\[rpc listreceivedbyaccount\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-listreceivedbyaccount)~g;" \ +-pe "s~\[rpc listreceivedbyaddress\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-listreceivedbyaddress)~g;" \ +-pe "s~\[rpc listsinceblock\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-listsinceblock)~g;" \ +-pe "s~\[rpc listtransactions\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-listtransactions)~g;" \ +-pe "s~\[rpc listunspent\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-listunspent)~g;" \ +-pe "s~\[rpc listwallets\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-listwallets)~g;" \ +-pe "s~\[rpc lockunspent\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-lockunspent)~g;" \ +-pe "s~\[rpc move\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-move)~g;" \ +-pe "s~\[rpc removeprunedfunds\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-removeprunedfunds)~g;" \ +-pe "s~\[rpc sendfrom\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-sendfrom)~g;" \ +-pe "s~\[rpc sendmany\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-sendmany)~g;" \ +-pe "s~\[rpc sendtoaddress\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-sendtoaddress)~g;" \ +-pe "s~\[rpc setaccount\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-setaccount)~g;" \ +-pe "s~\[rpc setprivatesendamount\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-setprivatesendamount)~g;" \ +-pe "s~\[rpc setprivatesendrounds\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-setprivatesendrounds)~g;" \ +-pe "s~\[rpc settxfee\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-settxfee)~g;" \ +-pe "s~\[rpc signmessage\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-signmessage)~g;" \ +-pe "s~\[rpc walletlock\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-walletlock)~g;" \ +-pe "s~\[rpc walletpassphrase\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-walletpassphrase)~g;" \ +-pe "s~\[rpc walletpassphrasechange\]~(/docs/core-api-ref-remote-procedure-calls-wallet#section-walletpassphrasechange)~g;" \ +-pe "s~\[rpc estimatepriority\]~(/docs/core-api-ref-remote-procedure-calls-removed#section-estimatepriority)~g;" \ +-pe "s~\[rpc estimatesmartpriority\]~(/docs/core-api-ref-remote-procedure-calls-removed#section-estimatesmartpriority)~g;" \ +-pe "s~\[rpc gethashespersec\]~(/docs/core-api-ref-remote-procedure-calls-removed#section-gethashespersec)~g;" \ +-pe "s~\[rpc getwork\]~(/docs/core-api-ref-remote-procedure-calls-removed#section-getwork)~g;" \ +-pe "s~\[rpc getgenerate\]~(/docs/core-api-ref-remote-procedure-calls-removed#section-getgenerate)~g;" \ +-pe "s~\[rpc masternodebroadcast\]~(/docs/core-api-ref-remote-procedure-calls-removed#section-masternodebroadcast)~g;" \ +-pe "s~\[rpc sentinelping\]~(/docs/core-api-ref-remote-procedure-calls-removed#section-sentinelping)~g;" \ +-pe "s~\[rpc setgenerate\]~(/docs/core-api-ref-remote-procedure-calls-removed#section-setgenerate)~g;" From 11c086fe5e825f047e90c4c928ab4dcdef87c5aa Mon Sep 17 00:00:00 2001 From: Joshua Seigler Date: Tue, 29 Oct 2019 09:53:18 -0400 Subject: [PATCH 117/117] Add scripts to collect RPCs and expand summaries --- scripts/applyvars.sh | 331 +++++++++++++++++++++++++++++ scripts/combineRPCs.sh | 183 ++++++++++++++++ scripts/pipe-convert-for-readme.sh | 2 +- 3 files changed, 515 insertions(+), 1 deletion(-) create mode 100755 scripts/applyvars.sh create mode 100755 scripts/combineRPCs.sh diff --git a/scripts/applyvars.sh b/scripts/applyvars.sh new file mode 100755 index 00000000..e520f84e --- /dev/null +++ b/scripts/applyvars.sh @@ -0,0 +1,331 @@ +#!/usr/bin/env bash + +perl \ +-pe "s~\{\{DASH_NOT_IMPLEMENTED\}\}~**Not Implemented**~g;" \ +-pe "s~\{\{DASH_NEW0_14_1\}\}~**New in Dash Core 0.14.1**~g;" \ +-pe "s~\{\{DASH_UPDATED0_14_1\}\}~**Updated in Dash Core 0.14.1**~g;" \ +-pe "s~\{\{DASH_NEW0_14_0\}\}~**New in Dash Core 0.14.0**~g;" \ +-pe "s~\{\{DASH_UPDATED0_14_0\}\}~**Updated in Dash Core 0.14.0**~g;" \ +-pe "s~\{\{DASH_NEW0_13_2\}\}~**New in Dash Core 0.13.2**~g;" \ +-pe "s~\{\{DASH_UPDATED0_13_2\}\}~**Updated in Dash Core 0.13.2**~g;" \ +-pe "s~\{\{DASH_NEW0_13_1\}\}~**New in Dash Core 0.13.1**~g;" \ +-pe "s~\{\{DASH_UPDATED0_13_1\}\}~**Updated in Dash Core 0.13.1**~g;" \ +-pe "s~\{\{DASH_NEW0_13_0\}\}~**New in Dash Core 0.13.0**~g;" \ +-pe "s~\{\{DASH_UPDATED0_13_0\}\}~**Updated in Dash Core 0.13.0**~g;" \ +-pe "s~\{\{DASH_NEW0_12_3\}\}~*New in Dash Core 0.12.3*~g;" \ +-pe "s~\{\{DASH_UPDATED0_12_3\}\}~*Updated in Dash Core 0.12.3*~g;" \ +-pe "s~\{\{DASH_NEW0_12_2\}\}~*New in Dash Core 0.12.2*~g;" \ +-pe "s~\{\{DASH_UPDATED0_12_2\}\}~*Updated in Dash Core 0.12.2*~g;" \ +-pe "s~\{\{DASH_NEW0_12_1\}\}~*New in Dash Core 0.12.1*~g;" \ +-pe "s~\{\{DASH_UPDATED0_12_1\}\}~*Updated in Dash Core 0.12.1*~g;" \ +-pe "s~\{\{DARKCOIN_NEW0_11_0\}\}~*New in Darkcoin Core 0.11.0*~g;" \ +-pe "s~\{\{DARKCOIN_UPDATED0_11_0\}\}~*Updated in Darkcoin Core 0.11.0*~g;" \ +-pe "s~\{\{DEPRECATED\}\}~**Deprecated**~g;" \ +-pe "s~\{\{summary_abandonTransaction\}\}~marks an in-wallet transaction and all its in-wallet descendants as abandoned. This allows their inputs to be respent.~g;" \ +-pe "s~\{\{summary_abortRescan\}\}~Stops current wallet rescan~g;" \ +-pe "s~\{\{summary_addMultiSigAddress\}\}~adds a P2SH multisig address to the wallet.~g;" \ +-pe "s~\{\{summary_addNode\}\}~attempts to add or remove a node from the addnode list, or to try a connection to a node once.~g;" \ +-pe "s~\{\{summary_backupWallet\}\}~safely copies \`wallet.dat\` to the specified file, which can be a directory or a path with filename.~g;" \ +-pe "s~\{\{summary_bls\}\}~provides a set of commands to execute BLS-related actions.~g;" \ +-pe "s~\{\{summary_clearBanned\}\}~clears list of banned nodes.~g;" \ +-pe "s~\{\{summary_combineRawTransaction\}\}~combine multiple partially signed transactions into one transaction.~g;" \ +-pe "s~\{\{summary_createMultiSig\}\}~creates a P2SH multi-signature address.~g;" \ +-pe "s~\{\{summary_createRawTransaction\}\}~creates an unsigned serialized transaction that spends a previous output to a new output with a P2PKH or P2SH address. The transaction is not stored in the wallet or transmitted to the network.~g;" \ +-pe "s~\{\{summary_debug\}\}~changes the debug category from the console.~g;" \ +-pe "s~\{\{summary_decodeRawTransaction\}\}~decodes a serialized transaction hex string into a JSON object describing the transaction.~g;" \ +-pe "s~\{\{summary_decodeScript\}\}~decodes a hex-encoded P2SH redeem script.~g;" \ +-pe "s~\{\{summary_disconnectNode\}\}~immediately disconnects from a specified node.~g;" \ +-pe "s~\{\{summary_dumpHDInfo\}\}~returns an object containing sensitive private info about this HD wallet~g;" \ +-pe "s~\{\{summary_dumpPrivKey\}\}~returns the wallet-import-format (WIP) private key corresponding to an address. (But does not remove it from the wallet.)~g;" \ +-pe "s~\{\{summary_dumpWallet\}\}~creates or overwrites a file with all wallet keys in a human-readable format.~g;" \ +-pe "s~\{\{summary_encryptWallet\}\}~encrypts the wallet with a passphrase. This is only to enable encryption for the first time. After encryption is enabled, you will need to enter the passphrase to use private keys.~g;" \ +-pe "s~\{\{summary_estimateFee\}\}~estimates the transaction fee per kilobyte that needs to be paid for a transaction to begin confirmation within a certain number of blocks.~g;" \ +-pe "s~\{\{summary_estimatePriority\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_estimateSmartFee\}\}~estimates the transaction fee per kilobyte that needs to be paid for a transaction to begin confirmation within a certain number of blocks and returns the number of blocks for which the estimate is valid.~g;" \ +-pe "s~\{\{summary_estimateSmartPriority\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_fundRawTransaction\}\}~adds inputs to a transaction until it has enough in value to meet its out value.~g;" \ +-pe "s~\{\{summary_gObject\}\}~provides a set of commands for managing governance objects and displaying information about them.~g;" \ +-pe "s~\{\{summary_generate\}\}~mines blocks immediately (before the RPC call returns).~g;" \ +-pe "s~\{\{summary_generateToAddress\}\}~mines blocks immediately to a specified address.~g;" \ +-pe "s~\{\{summary_getAccount\}\}~returns the name of the account associated with the given address.~g;" \ +-pe "s~\{\{summary_getAccountAddress\}\}~returns the current Dash address for receiving payments to this account. If the account doesn't exist, it creates both the account and a new address for receiving payment. Once a payment has been received to an address, future calls to this RPC for the same account will return a different address.~g;" \ +-pe "s~\{\{summary_getAddedNodeInfo\}\}~returns information about the given added node, or all added nodes (except onetry nodes). Only nodes which have been manually added using the \`addnode\` RPC will have their information displayed.~g;" \ +-pe "s~\{\{summary_getAddressBalance\}\}~returns the balance for address(es).~g;" \ +-pe "s~\{\{summary_getAddressDeltas\}\}~returns all changes for an address.~g;" \ +-pe "s~\{\{summary_getAddressMempool\}\}~returns all mempool deltas for an address.~g;" \ +-pe "s~\{\{summary_getAddressTxids\}\}~returns the txids for an address(es).~g;" \ +-pe "s~\{\{summary_getAddressUtxos\}\}~returns all unspent outputs for an address.~g;" \ +-pe "s~\{\{summary_getAddressesByAccount\}\}~returns a list of every address assigned to a particular account.~g;" \ +-pe "s~\{\{summary_getBalance\}\}~gets the balance in decimal dash across all accounts or for a particular account.~g;" \ +-pe "s~\{\{summary_getBestBlockHash\}\}~returns the header hash of the most recent block on the best block chain.~g;" \ +-pe "s~\{\{summary_getBestChainLock\}\}~returns the block hash of the best chainlock.~g;" \ +-pe "s~\{\{summary_getBlock\}\}~gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.~g;" \ +-pe "s~\{\{summary_getBlockChainInfo\}\}~provides information about the current state of the block chain.~g;" \ +-pe "s~\{\{summary_getBlockCount\}\}~returns the number of blocks in the local best block chain.~g;" \ +-pe "s~\{\{summary_getBlockHash\}\}~returns the header hash of a block at the given height in the local best block chain.~g;" \ +-pe "s~\{\{summary_getBlockHashes\}\}~returns array of hashes of blocks within the timestamp range provided (requires \`timestampindex\` to be enabled).~g;" \ +-pe "s~\{\{summary_getBlockHeader\}\}~gets a block header with a particular header hash from the local block database either as a JSON object or as a serialized block header.~g;" \ +-pe "s~\{\{summary_getBlockHeaders\}\}~returns an array of items with information about the requested number of blockheaders starting from the requested hash.~g;" \ +-pe "s~\{\{summary_getBlockStats\}\}~computes per block statistics for a given window.~g;" \ +-pe "s~\{\{summary_getBlockTemplate\}\}~gets a block template or proposal for use with mining software.~g;" \ +-pe "s~\{\{summary_getChainTips\}\}~returns information about the highest-height block (tip) of each local block chain.~g;" \ +-pe "s~\{\{summary_getChainTxStats\}\}~compute statistics about the total number and rate of transactions in the chain.~g;" \ +-pe "s~\{\{summary_getConnectionCount\}\}~returns the number of connections to other nodes.~g;" \ +-pe "s~\{\{summary_getDifficulty\}\}~returns the proof-of-work difficulty as a multiple of the minimum difficulty.~g;" \ +-pe "s~\{\{summary_getGenerate\}\}~was removed in Dash Core 0.12.3.~g;" \ +-pe "s~\{\{summary_getGovernanceInfo\}\}~returns an object containing governance parameters.~g;" \ +-pe "s~\{\{summary_getHashesPerSec\}\}~was removed in Bitcoin Core 0.11.0 and is not part of Dash.~g;" \ +-pe "s~\{\{summary_getInfo\}\}~prints various information about the node and the network.~g;" \ +-pe "s~\{\{summary_getMemPoolAncestors\}\}~returns all in-mempool ancestors for a transaction in the mempool.~g;" \ +-pe "s~\{\{summary_getMemPoolDescendants\}\}~returns all in-mempool descendants for a transaction in the mempool.~g;" \ +-pe "s~\{\{summary_getMemPoolEntry\}\}~returns mempool data for given transaction (must be in mempool).~g;" \ +-pe "s~\{\{summary_getMemPoolInfo\}\}~returns information about the node's current transaction memory pool.~g;" \ +-pe "s~\{\{summary_getMemoryInfo\}\}~returns information about memory usage.~g;" \ +-pe "s~\{\{summary_getMerkleBlocks\}\}~returns an array of hex-encoded merkleblocks for blocks starting from which match .~g;" \ +-pe "s~\{\{summary_getMiningInfo\}\}~returns various mining-related information.~g;" \ +-pe "s~\{\{summary_getNetTotals\}\}~returns information about network traffic, including bytes in, bytes out, and the current time.~g;" \ +-pe "s~\{\{summary_getNetworkHashPS\}\}~returns the estimated network hashes per second based on the last n blocks.~g;" \ +-pe "s~\{\{summary_getNetworkInfo\}\}~returns information about the node's connection to the network.~g;" \ +-pe "s~\{\{summary_getNewAddress\}\}~returns a new Dash address for receiving payments. If an account is specified, payments received with the address will be credited to that account.~g;" \ +-pe "s~\{\{summary_getPeerInfo\}\}~returns data about each connected network node.~g;" \ +-pe "s~\{\{summary_getPoolInfo\}\}~returns an object containing mixing pool related information.~g;" \ +-pe "s~\{\{summary_getRawChangeAddress\}\}~returns a new Dash address for receiving change. This is for use with raw transactions, not normal use.~g;" \ +-pe "s~\{\{summary_getRawMemPool\}\}~returns all transaction identifiers (TXIDs) in the memory pool as a JSON array, or detailed information about each transaction in the memory pool as a JSON object.~g;" \ +-pe "s~\{\{summary_getRawTransaction\}\}~gets a hex-encoded serialized transaction or a JSON object describing the transaction. By default, Dash Core only stores complete transaction data for UTXOs and your own transactions, so the RPC may fail on historic transactions unless you use the non-default \`txindex=1\` in your Dash Core startup settings.~g;" \ +-pe "s~\{\{summary_getReceivedByAccount\}\}~returns the total amount received by addresses in a particular account from transactions with the specified number of confirmations. It does not count coinbase transactions.~g;" \ +-pe "s~\{\{summary_getReceivedByAddress\}\}~returns the total amount received by the specified address in transactions with the specified number of confirmations. It does not count coinbase transactions.~g;" \ +-pe "s~\{\{summary_getSpecialTxes\}\}~returns an array of special transactions found in the specified block~g;" \ +-pe "s~\{\{summary_getSpentInfo\}\}~returns the txid and index where an output is spent (requires \`spentindex\` to be enabled).~g;" \ +-pe "s~\{\{summary_getSuperblockBudget\}\}~returns the absolute maximum sum of superblock payments allowed.~g;" \ +-pe "s~\{\{summary_getTransaction\}\}~gets detailed information about an in-wallet transaction.~g;" \ +-pe "s~\{\{summary_getTxOut\}\}~returns details about an unspent transaction output (UTXO).~g;" \ +-pe "s~\{\{summary_getTxOutProof\}\}~returns a hex-encoded proof that one or more specified transactions were included in a block.~g;" \ +-pe "s~\{\{summary_getTxOutSetInfo\}\}~returns statistics about the confirmed unspent transaction output (UTXO) set. Note that this call may take some time and that it only counts outputs from confirmed transactions---it does not count outputs from the memory pool.~g;" \ +-pe "s~\{\{summary_getUnconfirmedBalance\}\}~returns the wallet's total unconfirmed balance.~g;" \ +-pe "s~\{\{summary_getWalletInfo\}\}~provides information about the wallet.~g;" \ +-pe "s~\{\{summary_getWork\}\}~was removed in Bitcoin Core 0.10.0. and is not part of Dash~g;" \ +-pe "s~\{\{summary_help\}\}~lists all available public RPC commands, or gets help for the specified RPC. Commands which are unavailable will not be listed, such as wallet RPCs if wallet support is disabled.~g;" \ +-pe "s~\{\{summary_importAddress\}\}~adds an address or pubkey script to the wallet without the associated private key, allowing you to watch for transactions affecting that address or pubkey script without being able to spend any of its outputs.~g;" \ +-pe "s~\{\{summary_importElectrumWallet\}\}~imports keys from an Electrum wallet export file (.csv or .json)~g;" \ +-pe "s~\{\{summary_importMulti\}\}~imports addresses or scripts (with private keys, public keys, or P2SH redeem scripts) and optionally performs the minimum necessary rescan for all imports.~g;" \ +-pe "s~\{\{summary_importPrivKey\}\}~adds a private key to your wallet. The key should be formatted in the wallet import format created by the \`dumpprivkey\` RPC.~g;" \ +-pe "s~\{\{summary_importPrunedFunds\}\}~imports funds without the need of a rescan. Meant for use with pruned wallets.~g;" \ +-pe "s~\{\{summary_importPubKey\}\}~imports a public key (in hex) that can be watched as if it were in your wallet but cannot be used to spend~g;" \ +-pe "s~\{\{summary_importWallet\}\}~imports private keys from a file in wallet dump file format (see the \`dumpwallet\` RPC). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes.~g;" \ +-pe "s~\{\{summary_keepass\}\}~provides commands for configuring and managing KeePass authentication~g;" \ +-pe "s~\{\{summary_keyPoolRefill\}\}~fills the cache of unused pre-generated keys (the keypool).~g;" \ +-pe "s~\{\{summary_listAccounts\}\}~lists accounts and their balances.~g;" \ +-pe "s~\{\{summary_listAddressBalances\}\}~lists addresses of this wallet and their balances~g;" \ +-pe "s~\{\{summary_listAddressGroupings\}\}~lists groups of addresses that may have had their common ownership made public by common use as inputs in the same transaction or from being used as change from a previous transaction.~g;" \ +-pe "s~\{\{summary_listBanned\}\}~lists all banned IPs/Subnets.~g;" \ +-pe "s~\{\{summary_listLockUnspent\}\}~returns a list of temporarily unspendable (locked) outputs.~g;" \ +-pe "s~\{\{summary_listReceivedByAccount\}\}~lists the total number of dash received by each account.~g;" \ +-pe "s~\{\{summary_listReceivedByAddress\}\}~lists the total number of dash received by each address.~g;" \ +-pe "s~\{\{summary_listSinceBlock\}\}~gets all transactions affecting the wallet which have occurred since a particular block, plus the header hash of a block at a particular depth.~g;" \ +-pe "s~\{\{summary_listTransactions\}\}~returns the most recent transactions that affect the wallet.~g;" \ +-pe "s~\{\{summary_listUnspent\}\}~returns an array of unspent transaction outputs belonging to this wallet.~g;" \ +-pe "s~\{\{summary_listWallets\}\}~returns a list of currently loaded wallets.~g;" \ +-pe "s~\{\{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.~g;" \ +-pe "s~\{\{summary_logging\}\}~gets and sets the logging configuration~g;" \ +-pe "s~\{\{summary_masternode\}\}~provides a set of commands for managing masternodes and displaying information about them.~g;" \ +-pe "s~\{\{summary_masternodeBroadcast\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_masternodeList\}\}~returns a list of masternodes in different modes.~g;" \ +-pe "s~\{\{summary_mnSync\}\}~returns the sync status, updates to the next step or resets it entirely.~g;" \ +-pe "s~\{\{summary_move\}\}~moves a specified amount from one account in your wallet to another using an off-block-chain transaction.~g;" \ +-pe "s~\{\{summary_ping-rpc\}\}~sends a P2P ping message to all connected nodes to measure ping time. Results are provided by the \`getpeerinfo\` RPC pingtime and pingwait fields as decimal seconds. The P2P \`ping\` message is handled in a queue with all other commands, so it measures processing backlog, not just network ping.~g;" \ +-pe "s~\{\{summary_preciousBlock\}\}~treats a block as if it were received before others with the same work.~g;" \ +-pe "s~\{\{summary_prioritiseTransaction\}\}~adds virtual priority or fee to a transaction, allowing it to be accepted into blocks mined by this node (or miners which use this node) with a lower priority or fee. (It can also remove virtual priority or fee, requiring the transaction have a higher priority or fee to be accepted into a locally-mined block.)~g;" \ +-pe "s~\{\{summary_privateSend\}\}~controls the mixing process.~g;" \ +-pe "s~\{\{summary_proTx\}\}~provides a set of commands to execute ProTx related actions.~g;" \ +-pe "s~\{\{summary_pruneBlockChain\}\}~prunes the blockchain up to a specified height or timestamp.~g;" \ +-pe "s~\{\{summary_quorum\}\}~provides a set of commands for quorums (LLMQs).~g;" \ +-pe "s~\{\{summary_removePrunedFunds\}\}~deletes the specified transaction from the wallet. Meant for use with pruned wallets and as a companion to importprunedfunds.~g;" \ +-pe "s~\{\{summary_restGetBlock-noTxDetails\}\}~gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. The JSON object includes TXIDs for transactions within the block rather than the complete transactions [GET block][rest get block] returns.~g;" \ +-pe "s~\{\{summary_restGetBlock\}\}~gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.~g;" \ +-pe "s~\{\{summary_restGetChainInfo\}\}~returns information about the current state of the block chain.~g;" \ +-pe "s~\{\{summary_restGetGetUtxos\}\}~returns an UTXO set given a set of outpoints.~g;" \ +-pe "s~\{\{summary_restGetHeaders\}\}~returns a specified amount of block headers in upward direction.~g;" \ +-pe "s~\{\{summary_restGetMemPool-contents\}\}~returns all transaction in the memory pool with detailed information.~g;" \ +-pe "s~\{\{summary_restGetMemPool-info\}\}~returns information about the node's current transaction memory pool.~g;" \ +-pe "s~\{\{summary_restGetTx\}\}~gets a hex-encoded serialized transaction or a JSON object describing the transaction. By default, Dash Core only stores complete transaction data for UTXOs and your own transactions, so this method may fail on historic transactions unless you use the non-default \`txindex=1\` in your Dash Core startup settings.~g;" \ +-pe "s~\{\{summary_sendFrom\}\}~spends an amount from a local account to a dash address.~g;" \ +-pe "s~\{\{summary_sendMany\}\}~creates and broadcasts a transaction which sends outputs to multiple addresses.~g;" \ +-pe "s~\{\{summary_sendRawTransaction\}\}~validates a transaction and broadcasts it to the peer-to-peer network.~g;" \ +-pe "s~\{\{summary_sendToAddress\}\}~spends an amount to a given address.~g;" \ +-pe "s~\{\{summary_sentinelPing\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_setAccount\}\}~puts the specified address in the given account.~g;" \ +-pe "s~\{\{summary_setBan\}\}~attempts add or remove a IP/Subnet from the banned list.~g;" \ +-pe "s~\{\{summary_setGenerate\}\}~was removed in Dash Core 0.12.3.~g;" \ +-pe "s~\{\{summary_setNetworkActive\}\}~disables/enables all P2P network activity.~g;" \ +-pe "s~\{\{summary_setPrivateSendAmount\}\}~sets the amount of DASH to be mixed with PrivateSend~g;" \ +-pe "s~\{\{summary_setPrivateSendRounds\}\}~sets the number of PrivateSend mixing rounds to use~g;" \ +-pe "s~\{\{summary_setTxFee\}\}~sets the transaction fee per kilobyte paid by transactions created by this wallet.~g;" \ +-pe "s~\{\{summary_signMessage\}\}~signs a message with the private key of an address.~g;" \ +-pe "s~\{\{summary_signMessageWithPrivKey\}\}~signs a message with a given private key.~g;" \ +-pe "s~\{\{summary_signRawTransaction\}\}~signs a transaction in the serialized transaction format using private keys stored in the wallet or provided in the call.~g;" \ +-pe "s~\{\{summary_spork-rpc\}\}~reads or updates spork settings on the network.~g;" \ +-pe "s~\{\{summary_stop\}\}~safely shuts down the Dash Core server.~g;" \ +-pe "s~\{\{summary_submitBlock\}\}~accepts a block, verifies it is a valid addition to the block chain, and broadcasts it to the network. Extra parameters are ignored by Dash Core but may be used by mining pools or other programs.~g;" \ +-pe "s~\{\{summary_uptime\}\}~returns the total uptime of the server.~g;" \ +-pe "s~\{\{summary_validateAddress\}\}~returns information about the given Dash address.~g;" \ +-pe "s~\{\{summary_verifyChain\}\}~verifies each entry in the local block chain database.~g;" \ +-pe "s~\{\{summary_verifyMessage\}\}~verifies a signed message.~g;" \ +-pe "s~\{\{summary_verifyTxOutProof\}\}~verifies that a proof points to one or more transactions in a block, returning the transactions the proof commits to and throwing an RPC error if the block is not in our best block chain.~g;" \ +-pe "s~\{\{summary_voteRaw\}\}~compiles and relays a governance vote with provided external signature instead of signing vote internally~g;" \ +-pe "s~\{\{summary_walletLock\}\}~removes the wallet encryption key from memory, locking the wallet. After calling this method, you will need to call \`walletpassphrase\` again before being able to call any methods which require the wallet to be unlocked.~g;" \ +-pe "s~\{\{summary_walletPassphrase\}\}~stores the wallet decryption key in memory for the indicated number of seconds. Issuing the \`walletpassphrase\` command while the wallet is already unlocked will set a new unlock time that overrides the old one.~g;" \ +-pe "s~\{\{summary_walletPassphraseChange\}\}~changes the wallet passphrase from 'old passphrase' to 'new passphrase'.~g;" \ +-pe "s~\{\{summary_clearBanned\}\}~clears list of banned nodes.~g;" \ +-pe "s~\{\{summary_getMerkleBlocks\}\}~returns an array of hex-encoded merkleblocks for blocks starting from which match .~g;" \ +-pe "s~\{\{summary_getAddressUtxos\}\}~returns all unspent outputs for an address.~g;" \ +-pe "s~\{\{summary_getMemPoolEntry\}\}~returns mempool data for given transaction (must be in mempool).~g;" \ +-pe "s~\{\{summary_proTx\}\}~provides a set of commands to execute ProTx related actions.~g;" \ +-pe "s~\{\{summary_getChainTips\}\}~returns information about the highest-height block (tip) of each local block chain.~g;" \ +-pe "s~\{\{summary_getAddressTxids\}\}~returns the txids for an address(es).~g;" \ +-pe "s~\{\{summary_quorum\}\}~provides a set of commands for quorums (LLMQs).~g;" \ +-pe "s~\{\{summary_getMemoryInfo\}\}~returns information about memory usage.~g;" \ +-pe "s~\{\{summary_generateToAddress\}\}~mines blocks immediately to a specified address.~g;" \ +-pe "s~\{\{summary_getTxOutProof\}\}~returns a hex-encoded proof that one or more specified transactions were included in a block.~g;" \ +-pe "s~\{\{summary_getUnconfirmedBalance\}\}~returns the wallet's total unconfirmed balance.~g;" \ +-pe "s~\{\{summary_getNetTotals\}\}~returns information about network traffic, including bytes in, bytes out, and the current time.~g;" \ +-pe "s~\{\{summary_listReceivedByAddress\}\}~lists the total number of dash received by each address.~g;" \ +-pe "s~\{\{summary_getBlockHeader\}\}~gets a block header with a particular header hash from the local block database either as a JSON object or as a serialized block header.~g;" \ +-pe "s~\{\{summary_combineRawTransaction\}\}~combine multiple partially signed transactions into one transaction.~g;" \ +-pe "s~\{\{summary_addMultiSigAddress\}\}~adds a P2SH multisig address to the wallet.~g;" \ +-pe "s~\{\{summary_verifyTxOutProof\}\}~verifies that a proof points to one or more transactions in a block, returning the transactions the proof commits to and throwing an RPC error if the block is not in our best block chain.~g;" \ +-pe "s~\{\{summary_getReceivedByAddress\}\}~returns the total amount received by the specified address in transactions with the specified number of confirmations. It does not count coinbase transactions.~g;" \ +-pe "s~\{\{summary_removePrunedFunds\}\}~deletes the specified transaction from the wallet. Meant for use with pruned wallets and as a companion to importprunedfunds.~g;" \ +-pe "s~\{\{summary_getChainTxStats\}\}~compute statistics about the total number and rate of transactions in the chain.~g;" \ +-pe "s~\{\{summary_getTxOutSetInfo\}\}~returns statistics about the confirmed unspent transaction output (UTXO) set. Note that this call may take some time and that it only counts outputs from confirmed transactions---it does not count outputs from the memory pool.~g;" \ +-pe "s~\{\{summary_listWallets\}\}~returns a list of currently loaded wallets.~g;" \ +-pe "s~\{\{summary_sendMany\}\}~creates and broadcasts a transaction which sends outputs to multiple addresses.~g;" \ +-pe "s~\{\{summary_dumpHDInfo\}\}~returns an object containing sensitive private info about this HD wallet~g;" \ +-pe "s~\{\{summary_fundRawTransaction\}\}~adds inputs to a transaction until it has enough in value to meet its out value.~g;" \ +-pe "s~\{\{summary_importPrivKey\}\}~adds a private key to your wallet. The key should be formatted in the wallet import format created by the \`dumpprivkey\` RPC.~g;" \ +-pe "s~\{\{summary_verifyMessage\}\}~verifies a signed message.~g;" \ +-pe "s~\{\{summary_abandonTransaction\}\}~marks an in-wallet transaction and all its in-wallet descendants as abandoned. This allows their inputs to be respent.~g;" \ +-pe "s~\{\{summary_getBestChainLock\}\}~returns the block hash of the best chainlock.~g;" \ +-pe "s~\{\{summary_decodeRawTransaction\}\}~decodes a serialized transaction hex string into a JSON object describing the transaction.~g;" \ +-pe "s~\{\{summary_createRawTransaction\}\}~creates an unsigned serialized transaction that spends a previous output to a new output with a P2PKH or P2SH address. The transaction is not stored in the wallet or transmitted to the network.~g;" \ +-pe "s~\{\{summary_encryptWallet\}\}~encrypts the wallet with a passphrase. This is only to enable encryption for the first time. After encryption is enabled, you will need to enter the passphrase to use private keys.~g;" \ +-pe "s~\{\{summary_uptime\}\}~returns the total uptime of the server.~g;" \ +-pe "s~\{\{summary_estimateFee\}\}~estimates the transaction fee per kilobyte that needs to be paid for a transaction to begin confirmation within a certain number of blocks.~g;" \ +-pe "s~\{\{summary_voteRaw\}\}~compiles and relays a governance vote with provided external signature instead of signing vote internally~g;" \ +-pe "s~\{\{summary_pruneBlockChain\}\}~prunes the blockchain up to a specified height or timestamp.~g;" \ +-pe "s~\{\{summary_estimateSmartFee\}\}~estimates the transaction fee per kilobyte that needs to be paid for a transaction to begin confirmation within a certain number of blocks and returns the number of blocks for which the estimate is valid.~g;" \ +-pe "s~\{\{summary_getHashesPerSec\}\}~was removed in Bitcoin Core 0.11.0 and is not part of Dash.~g;" \ +-pe "s~\{\{summary_generate\}\}~mines blocks immediately (before the RPC call returns).~g;" \ +-pe "s~\{\{summary_listAccounts\}\}~lists accounts and their balances.~g;" \ +-pe "s~\{\{summary_getReceivedByAccount\}\}~returns the total amount received by addresses in a particular account from transactions with the specified number of confirmations. It does not count coinbase transactions.~g;" \ +-pe "s~\{\{summary_getAddressDeltas\}\}~returns all changes for an address.~g;" \ +-pe "s~\{\{summary_gObject\}\}~provides a set of commands for managing governance objects and displaying information about them.~g;" \ +-pe "s~\{\{summary_sendToAddress\}\}~spends an amount to a given address.~g;" \ +-pe "s~\{\{summary_debug\}\}~changes the debug category from the console.~g;" \ +-pe "s~\{\{summary_prioritiseTransaction\}\}~adds virtual priority or fee to a transaction, allowing it to be accepted into blocks mined by this node (or miners which use this node) with a lower priority or fee. (It can also remove virtual priority or fee, requiring the transaction have a higher priority or fee to be accepted into a locally-mined block.)~g;" \ +-pe "s~\{\{summary_ping-rpc\}\}~sends a P2P ping message to all connected nodes to measure ping time. Results are provided by the \`getpeerinfo\` RPC pingtime and pingwait fields as decimal seconds. The P2P \`ping\` message is handled in a queue with all other commands, so it measures processing backlog, not just network ping.~g;" \ +-pe "s~\{\{summary_getMemPoolAncestors\}\}~returns all in-mempool ancestors for a transaction in the mempool.~g;" \ +-pe "s~\{\{summary_listUnspent\}\}~returns an array of unspent transaction outputs belonging to this wallet.~g;" \ +-pe "s~\{\{summary_getSuperblockBudget\}\}~returns the absolute maximum sum of superblock payments allowed.~g;" \ +-pe "s~\{\{summary_signRawTransaction\}\}~signs a transaction in the serialized transaction format using private keys stored in the wallet or provided in the call.~g;" \ +-pe "s~\{\{summary_logging\}\}~gets and sets the logging configuration~g;" \ +-pe "s~\{\{summary_decodeScript\}\}~decodes a hex-encoded P2SH redeem script.~g;" \ +-pe "s~\{\{summary_getAccount\}\}~returns the name of the account associated with the given address.~g;" \ +-pe "s~\{\{summary_listTransactions\}\}~returns the most recent transactions that affect the wallet.~g;" \ +-pe "s~\{\{summary_move\}\}~moves a specified amount from one account in your wallet to another using an off-block-chain transaction.~g;" \ +-pe "s~\{\{summary_listAddressGroupings\}\}~lists groups of addresses that may have had their common ownership made public by common use as inputs in the same transaction or from being used as change from a previous transaction.~g;" \ +-pe "s~\{\{summary_verifyChain\}\}~verifies each entry in the local block chain database.~g;" \ +-pe "s~\{\{summary_getWalletInfo\}\}~provides information about the wallet.~g;" \ +-pe "s~\{\{summary_getPeerInfo\}\}~returns data about each connected network node.~g;" \ +-pe "s~\{\{summary_signMessage\}\}~signs a message with the private key of an address.~g;" \ +-pe "s~\{\{summary_listReceivedByAccount\}\}~lists the total number of dash received by each account.~g;" \ +-pe "s~\{\{summary_importElectrumWallet\}\}~imports keys from an Electrum wallet export file (.csv or .json)~g;" \ +-pe "s~\{\{summary_getBlockChainInfo\}\}~provides information about the current state of the block chain.~g;" \ +-pe "s~\{\{summary_masternodeBroadcast\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_listBanned\}\}~lists all banned IPs/Subnets.~g;" \ +-pe "s~\{\{summary_importMulti\}\}~imports addresses or scripts (with private keys, public keys, or P2SH redeem scripts) and optionally performs the minimum necessary rescan for all imports.~g;" \ +-pe "s~\{\{summary_getInfo\}\}~prints various information about the node and the network.~g;" \ +-pe "s~\{\{summary_setNetworkActive\}\}~disables/enables all P2P network activity.~g;" \ +-pe "s~\{\{summary_help\}\}~lists all available public RPC commands, or gets help for the specified RPC. Commands which are unavailable will not be listed, such as wallet RPCs if wallet support is disabled.~g;" \ +-pe "s~\{\{summary_validateAddress\}\}~returns information about the given Dash address.~g;" \ +-pe "s~\{\{summary_sendFrom\}\}~spends an amount from a local account to a dash address.~g;" \ +-pe "s~\{\{summary_keepass\}\}~provides commands for configuring and managing KeePass authentication~g;" \ +-pe "s~\{\{summary_getWork\}\}~was removed in Bitcoin Core 0.10.0. and is not part of Dash~g;" \ +-pe "s~\{\{summary_getGenerate\}\}~was removed in Dash Core 0.12.3.~g;" \ +-pe "s~\{\{summary_importWallet\}\}~imports private keys from a file in wallet dump file format (see the \`dumpwallet\` RPC). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes.~g;" \ +-pe "s~\{\{summary_listSinceBlock\}\}~gets all transactions affecting the wallet which have occurred since a particular block, plus the header hash of a block at a particular depth.~g;" \ +-pe "s~\{\{summary_getBlockCount\}\}~returns the number of blocks in the local best block chain.~g;" \ +-pe "s~\{\{summary_getAddressBalance\}\}~returns the balance for address(es).~g;" \ +-pe "s~\{\{summary_getBalance\}\}~gets the balance in decimal dash across all accounts or for a particular account.~g;" \ +-pe "s~\{\{summary_getAddressesByAccount\}\}~returns a list of every address assigned to a particular account.~g;" \ +-pe "s~\{\{summary_getBlockTemplate\}\}~gets a block template or proposal for use with mining software.~g;" \ +-pe "s~\{\{summary_estimateSmartPriority\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_getRawMemPool\}\}~returns all transaction identifiers (TXIDs) in the memory pool as a JSON array, or detailed information about each transaction in the memory pool as a JSON object.~g;" \ +-pe "s~\{\{summary_getBlockHash\}\}~returns the header hash of a block at the given height in the local best block chain.~g;" \ +-pe "s~\{\{summary_setTxFee\}\}~sets the transaction fee per kilobyte paid by transactions created by this wallet.~g;" \ +-pe "s~\{\{summary_importPrunedFunds\}\}~imports funds without the need of a rescan. Meant for use with pruned wallets.~g;" \ +-pe "s~\{\{summary_getNewAddress\}\}~returns a new Dash address for receiving payments. If an account is specified, payments received with the address will be credited to that account.~g;" \ +-pe "s~\{\{summary_getBlock\}\}~gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.~g;" \ +-pe "s~\{\{summary_getMemPoolInfo\}\}~returns information about the node's current transaction memory pool.~g;" \ +-pe "s~\{\{summary_abortRescan\}\}~Stops current wallet rescan~g;" \ +-pe "s~\{\{summary_getTransaction\}\}~gets detailed information about an in-wallet transaction.~g;" \ +-pe "s~\{\{summary_getAccountAddress\}\}~returns the current Dash address for receiving payments to this account. If the account doesn't exist, it creates both the account and a new address for receiving payment. Once a payment has been received to an address, future calls to this RPC for the same account will return a different address.~g;" \ +-pe "s~\{\{summary_dumpWallet\}\}~creates or overwrites a file with all wallet keys in a human-readable format.~g;" \ +-pe "s~\{\{summary_setPrivateSendAmount\}\}~sets the amount of DASH to be mixed with PrivateSend~g;" \ +-pe "s~\{\{summary_stop\}\}~safely shuts down the Dash Core server.~g;" \ +-pe "s~\{\{summary_masternodeList\}\}~returns a list of masternodes in different modes.~g;" \ +-pe "s~\{\{summary_getSpecialTxes\}\}~returns an array of special transactions found in the specified block~g;" \ +-pe "s~\{\{summary_getPoolInfo\}\}~returns an object containing mixing pool related information.~g;" \ +-pe "s~\{\{summary_getDifficulty\}\}~returns the proof-of-work difficulty as a multiple of the minimum difficulty.~g;" \ +-pe "s~\{\{summary_preciousBlock\}\}~treats a block as if it were received before others with the same work.~g;" \ +-pe "s~\{\{summary_getRawTransaction\}\}~gets a hex-encoded serialized transaction or a JSON object describing the transaction. By default, Dash Core only stores complete transaction data for UTXOs and your own transactions, so the RPC may fail on historic transactions unless you use the non-default \`txindex=1\` in your Dash Core startup settings.~g;" \ +-pe "s~\{\{summary_getMemPoolDescendants\}\}~returns all in-mempool descendants for a transaction in the mempool.~g;" \ +-pe "s~\{\{summary_getBlockHeaders\}\}~returns an array of items with information about the requested number of blockheaders starting from the requested hash.~g;" \ +-pe "s~\{\{summary_getConnectionCount\}\}~returns the number of connections to other nodes.~g;" \ +-pe "s~\{\{summary_listLockUnspent\}\}~returns a list of temporarily unspendable (locked) outputs.~g;" \ +-pe "s~\{\{summary_walletLock\}\}~removes the wallet encryption key from memory, locking the wallet. After calling this method, you will need to call \`walletpassphrase\` again before being able to call any methods which require the wallet to be unlocked.~g;" \ +-pe "s~\{\{summary_createMultiSig\}\}~creates a P2SH multi-signature address.~g;" \ +-pe "s~\{\{summary_getAddedNodeInfo\}\}~returns information about the given added node, or all added nodes (except onetry nodes). Only nodes which have been manually added using the \`addnode\` RPC will have their information displayed.~g;" \ +-pe "s~\{\{summary_getSpentInfo\}\}~returns the txid and index where an output is spent (requires \`spentindex\` to be enabled).~g;" \ +-pe "s~\{\{summary_importAddress\}\}~adds an address or pubkey script to the wallet without the associated private key, allowing you to watch for transactions affecting that address or pubkey script without being able to spend any of its outputs.~g;" \ +-pe "s~\{\{summary_submitBlock\}\}~accepts a block, verifies it is a valid addition to the block chain, and broadcasts it to the network. Extra parameters are ignored by Dash Core but may be used by mining pools or other programs.~g;" \ +-pe "s~\{\{summary_getMiningInfo\}\}~returns various mining-related information.~g;" \ +-pe "s~\{\{summary_getNetworkHashPS\}\}~returns the estimated network hashes per second based on the last n blocks.~g;" \ +-pe "s~\{\{summary_backupWallet\}\}~safely copies \`wallet.dat\` to the specified file, which can be a directory or a path with filename.~g;" \ +-pe "s~\{\{summary_masternode\}\}~provides a set of commands for managing masternodes and displaying information about them.~g;" \ +-pe "s~\{\{summary_dumpPrivKey\}\}~returns the wallet-import-format (WIP) private key corresponding to an address. (But does not remove it from the wallet.)~g;" \ +-pe "s~\{\{summary_setBan\}\}~attempts add or remove a IP/Subnet from the banned list.~g;" \ +-pe "s~\{\{summary_spork-rpc\}\}~reads or updates spork settings on the network.~g;" \ +-pe "s~\{\{summary_getRawChangeAddress\}\}~returns a new Dash address for receiving change. This is for use with raw transactions, not normal use.~g;" \ +-pe "s~\{\{summary_setGenerate\}\}~was removed in Dash Core 0.12.3.~g;" \ +-pe "s~\{\{summary_privateSend\}\}~controls the mixing process.~g;" \ +-pe "s~\{\{summary_getAddressMempool\}\}~returns all mempool deltas for an address.~g;" \ +-pe "s~\{\{summary_getTxOut\}\}~returns details about an unspent transaction output (UTXO).~g;" \ +-pe "s~\{\{summary_signMessageWithPrivKey\}\}~signs a message with a given private key.~g;" \ +-pe "s~\{\{summary_walletPassphrase\}\}~stores the wallet decryption key in memory for the indicated number of seconds. Issuing the \`walletpassphrase\` command while the wallet is already unlocked will set a new unlock time that overrides the old one.~g;" \ +-pe "s~\{\{summary_disconnectNode\}\}~immediately disconnects from a specified node.~g;" \ +-pe "s~\{\{summary_estimatePriority\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_walletPassphraseChange\}\}~changes the wallet passphrase from 'old passphrase' to 'new passphrase'.~g;" \ +-pe "s~\{\{summary_getBlockHashes\}\}~returns array of hashes of blocks within the timestamp range provided (requires \`timestampindex\` to be enabled).~g;" \ +-pe "s~\{\{summary_getGovernanceInfo\}\}~returns an object containing governance parameters.~g;" \ +-pe "s~\{\{summary_setAccount\}\}~puts the specified address in the given account.~g;" \ +-pe "s~\{\{summary_bls\}\}~provides a set of commands to execute BLS-related actions.~g;" \ +-pe "s~\{\{summary_listAddressBalances\}\}~lists addresses of this wallet and their balances~g;" \ +-pe "s~\{\{summary_sendRawTransaction\}\}~validates a transaction and broadcasts it to the peer-to-peer network.~g;" \ +-pe "s~\{\{summary_keyPoolRefill\}\}~fills the cache of unused pre-generated keys (the keypool).~g;" \ +-pe "s~\{\{summary_getBlockStats\}\}~computes per block statistics for a given window.~g;" \ +-pe "s~\{\{summary_getNetworkInfo\}\}~returns information about the node's connection to the network.~g;" \ +-pe "s~\{\{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.~g;" \ +-pe "s~\{\{summary_sentinelPing\}\}~was removed in Dash Core 0.14.0.~g;" \ +-pe "s~\{\{summary_setPrivateSendRounds\}\}~sets the number of PrivateSend mixing rounds to use~g;" \ +-pe "s~\{\{summary_addNode\}\}~attempts to add or remove a node from the addnode list, or to try a connection to a node once.~g;" \ +-pe "s~\{\{summary_getBestBlockHash\}\}~returns the header hash of the most recent block on the best block chain.~g;" \ +-pe "s~\{\{summary_importPubKey\}\}~imports a public key (in hex) that can be watched as if it were in your wallet but cannot be used to spend~g;" \ +-pe "s~\{\{summary_mnSync\}\}~returns the sync status, updates to the next step or resets it entirely.~g;" \ +-pe "s~\{\{summary_restGetChainInfo\}\}~returns information about the current state of the block chain.~g;" \ +-pe "s~\{\{summary_restGetTx\}\}~gets a hex-encoded serialized transaction or a JSON object describing the transaction. By default, Dash Core only stores complete transaction data for UTXOs and your own transactions, so this method may fail on historic transactions unless you use the non-default \`txindex=1\` in your Dash Core startup settings.~g;" \ +-pe "s~\{\{summary_restGetGetUtxos\}\}~returns an UTXO set given a set of outpoints.~g;" \ +-pe "s~\{\{summary_restGetMemPool-contents\}\}~returns all transaction in the memory pool with detailed information.~g;" \ +-pe "s~\{\{summary_restGetHeaders\}\}~returns a specified amount of block headers in upward direction.~g;" \ +-pe "s~\{\{summary_restGetBlock\}\}~gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.~g;" \ +-pe "s~\{\{summary_restGetMemPool-info\}\}~returns information about the node's current transaction memory pool.~g;" \ +-pe "s~\{\{summary_restGetBlock-noTxDetails\}\}~gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. The JSON object includes TXIDs for transactions within the block rather than the complete transactions [GET block][rest get block] returns.~g;" diff --git a/scripts/combineRPCs.sh b/scripts/combineRPCs.sh new file mode 100755 index 00000000..2ee38087 --- /dev/null +++ b/scripts/combineRPCs.sh @@ -0,0 +1,183 @@ +#!/usr/bin/env bash + +echo "# Addressindex RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getaddressbalance.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getaddressdeltas.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getaddressmempool.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getaddresstxids.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getaddressutxos.md >> combinedRPCs.md +echo >> combinedRPCs.md +echo "# Block Chain RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getbestblockhash.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getbestchainlock.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getblock.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getblockchaininfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getblockcount.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getblockhash.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getblockhashes.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getblockheader.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getblockheaders.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getblockstats.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getchaintips.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getchaintxstats.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getdifficulty.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getmempoolancestors.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getmempooldescendants.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getmempoolentry.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getmempoolinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getrawmempool.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getmerkleblocks.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getspecialtxes.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getspentinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/gettxout.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/gettxoutproof.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/gettxoutsetinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/preciousblock.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/pruneblockchain.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/verifychain.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/verifytxoutproof.md >> combinedRPCs.md +echo >> combinedRPCs.md +echo "# Control RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/debug.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getmemoryinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/help.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/logging.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/stop.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/uptime.md >> combinedRPCs.md +echo >> combinedRPCs.md +echo "# Dash RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getgovernanceinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getpoolinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getsuperblockbudget.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/gobject.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/masternode.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/masternodelist.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/mnsync.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/privatesend.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/spork.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/voteraw.md >> combinedRPCs.md +echo >> combinedRPCs.md +echo "# Evolution RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/bls.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/protx.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/quorum.md >> combinedRPCs.md +echo >> combinedRPCs.md +echo "# Generating RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/generate.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/generatetoaddress.md >> combinedRPCs.md +echo >> combinedRPCs.md +echo "# Mining RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getblocktemplate.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getmininginfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getnetworkhashps.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/prioritisetransaction.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/submitblock.md >> combinedRPCs.md +echo >> combinedRPCs.md +echo "# Network RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/addnode.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/clearbanned.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/disconnectnode.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getaddednodeinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getconnectioncount.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getnettotals.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getnetworkinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getpeerinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/listbanned.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/ping.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/setban.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/setnetworkactive.md >> combinedRPCs.md +echo >> combinedRPCs.md +echo "# Raw Transaction RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/combinerawtransaction.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/createrawtransaction.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/decoderawtransaction.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/decodescript.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/fundrawtransaction.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getrawtransaction.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/sendrawtransaction.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/signrawtransaction.md >> combinedRPCs.md +echo >> combinedRPCs.md +echo "# Utility RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/createmultisig.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/estimatefee.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartfee.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/signmessagewithprivkey.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/validateaddress.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/verifymessage.md >> combinedRPCs.md +echo >> combinedRPCs.md +echo "# Wallet RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/abandontransaction.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/abortrescan.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/addmultisigaddress.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/backupwallet.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/dumphdinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/dumpprivkey.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/dumpwallet.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/encryptwallet.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getaccount.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getaccountaddress.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getaddressesbyaccount.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getbalance.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getnewaddress.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getrawchangeaddress.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaccount.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getreceivedbyaddress.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/gettransaction.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getunconfirmedbalance.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getwalletinfo.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/importaddress.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/importelectrumwallet.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/importmulti.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/importprivkey.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/importprunedfunds.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/importpubkey.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/importwallet.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/keepass.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/keypoolrefill.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/listaccounts.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/listaddressbalances.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/listaddressgroupings.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/listlockunspent.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaccount.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/listreceivedbyaddress.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/listsinceblock.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/listtransactions.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/listwallets.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/lockunspent.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/move.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/removeprunedfunds.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/sendfrom.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/sendmany.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/sendtoaddress.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/setaccount.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendamount.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/setprivatesendrounds.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/settxfee.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/signmessage.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/walletlock.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/walletpassphrase.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/walletpassphrasechange.md >> combinedRPCs.md +echo >> combinedRPCs.md +echo "# Removed RPCs" >> combinedRPCs.md +echo >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/estimatepriority.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/estimatesmartpriority.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/gethashespersec.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getwork.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/getgenerate.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/masternodebroadcast.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/sentinelping.md >> combinedRPCs.md +cat ./_includes/devdoc/dash-core/rpcs/rpcs/setgenerate.md >> combinedRPCs.md diff --git a/scripts/pipe-convert-for-readme.sh b/scripts/pipe-convert-for-readme.sh index ea3a4b5c..1d6cb057 100755 --- a/scripts/pipe-convert-for-readme.sh +++ b/scripts/pipe-convert-for-readme.sh @@ -25,7 +25,7 @@ perl -0 \ -pe "s/\n+- n: \"(.*?)\"\s+t: \"(.*?)\"\s+p: \"(.*?)\"\s+d: \"(.*?)\"/\n\1 | \2 | \3 | \4/g;" \ -pe "s/{% enditemplate %}/\n\n/g;" \ -pe "s/~~~/\`\`\`/g;" \ --pe "s/([0-9a-zA-Z\(\)\[\],\.\-\`])\n *([0-9a-zA-Z\(\)\[\],\.\-\`<])(?=([^\`]|\`(?!\`))*((\`\`\`[^\`]+\`\`\`)([^\`]|\`(?!\`))*)*$)/\1 \2/g;" \ +-pe "s/^([^\|]*[0-9a-zA-Z\(\)\[\],\.\-\`])\n *([0-9a-zA-Z\(\)\[\],\.\-\`<])(?=([^\`]|\`(?!\`))*((\`\`\`[^\`]+\`\`\`)([^\`]|\`(?!\`))*)*$)/\1 \2/g;" \ -pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|---|---|---|---|---|\n/g;" \ -pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|---|---|---|---|\n/g;" \ -pe "s/(\n\n\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|[^\|\n]+\|?)\n(?!\| *-+ *\|)/\n\n\1\n|---|---|---|---|---|\n/g;" \

    Masternode Payment Guide