From c0197f3c205ee0770d4cd80fca0f176aa36b263a Mon Sep 17 00:00:00 2001 From: thephez Date: Mon, 29 Oct 2018 16:30:25 -0400 Subject: [PATCH] Content - DIP3 - Add ProUpRegTx details --- _includes/devdoc/ref_transactions.md | 72 +++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/_includes/devdoc/ref_transactions.md b/_includes/devdoc/ref_transactions.md index c15362bb..5fd4aedc 100644 --- a/_includes/devdoc/ref_transactions.md +++ b/_includes/devdoc/ref_transactions.md @@ -660,7 +660,77 @@ ProUpServTx Payload *Added in protocol version 70211 of Dash Core as described by DIP3* -Masternode Provider - Update Registrar +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 %}