diff --git a/_autocrossref.yaml b/_autocrossref.yaml index 7db94fe7..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 diff --git a/_config.yml b/_config.yml index 85d553d9..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" diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index 46d8a750..94093e7d 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -550,8 +550,10 @@ to the `getheaders` message will include as many as 2,000 block headers. *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 | | ---------- | ----------- | --------- | -------- | -------- | @@ -899,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.) @@ -937,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 | | @@ -944,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 | | @@ -955,6 +979,8 @@ Masternode List | | de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8 | | c22f4a914a6c5566 ....................... Operator public key (BLS) | | 43ce12751c4ba45dcdfe2c16cefd61461e17a54d Voting pubkey hash (ECDSA) +| | +| | 1 ...................................... Valid (1 - Yes) {% endhighlight %} {% endautocrossref %} diff --git a/_includes/references.md b/_includes/references.md index 03ea93bf..c1484610 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -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,6 +246,7 @@ 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)"