[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
This commit is contained in:
thephez 2018-12-26 14:06:24 -05:00 committed by GitHub
parent 8bde4abc21
commit c779eef1e6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2011,7 +2011,6 @@ queue the remainder of the time.
| Bytes | Name | Data type | Required | Description | | Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- | | ---------- | ----------- | --------- | -------- | -------- |
| 4 | nDenom | int | Required | Denomination that will be exclusively used when submitting inputs into the pool | 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.* <br><br>Number of inputs required to join the queue
| 216+ | txCollateral | `tx` message | Required | Collateral TX that will be charged if this client acts maliciously | 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 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 %} {% highlight text %}
02000000 ................................... Denomination: 1 Dash (2) 02000000 ................................... Denomination: 1 Dash (2)
03000000 ................................... Inputs required: 3
Collateral Transaction Collateral Transaction
| Previous Output | Previous Output
| | | |
@ -2344,11 +2341,10 @@ message.
| Bytes | Name | Data type | Required | Description | | Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- | | ---------- | ----------- | --------- | -------- | -------- |
| 4 | nDenom | int | Required | Denomination allowed in this mixing session | 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.* <br><br>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 | 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 | 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 | 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_<br><br>BLS Signature of this message by masternode verifiable via pubKeyMasternode (Length (1 byte) + Signature (96 bytes))
Denominations (per [`src/privatesend.cpp`][privatesend denominations]) Denominations (per [`src/privatesend.cpp`][privatesend denominations])
@ -2358,32 +2354,32 @@ Denominations (per [`src/privatesend.cpp`][privatesend denominations])
| 2 | 1 Dash | 2 | 1 Dash
| 4 | 0.1 Dash | 4 | 0.1 Dash
| 8 | 0.01 Dash | 8 | 0.01 Dash
| 16 | 0.001 Dash
The following annotated hexdump shows a `dsq` message. (The The following annotated hexdump shows a `dsq` message. (The
message header has been omitted.) Note that the 'Required inputs' bytes will only message header has been omitted.) Note that the 'Required inputs' bytes will only
be preset if Spork 6 is active and protocol version => 70209. be preset if Spork 6 is active and protocol version => 70209.
{% highlight text %} {% highlight text %}
08000000 ............................. Denomination: 0.01 Dash (8) 01000000 ............................. Denomination: 10 Dash (1)
03000000 ............................. Required input(s): 3
Masternode Outpoint Masternode Outpoint
| aeed0e77c6db30a616507a37a129bc88 | a383a2489aedccfab4bb41368d1c8ee3
| 1811f08afc51dd485d5322f36c1f04c5 ... Outpoint TXID | 10d9ee90cb3d181880ce4e0cdb36ecb7
| 01000000 ........................... Outpoint index number: 1 | 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 00 ................................... Ready: 0
41 ................................... Signature length: 65 60 ................................... Signature length: 96
1bd74386ea4e111197f1b4b4660c1415 0409a1349869a02e90e6e1f6d92bf995
13486745ca10ba0632426ed3a644d941 27a72542fed987f6d2719596973d89e6
047e43c988680904d4a4fcf551d8813c 74605a3585b1335650f1555f7576061d
ec12d47ae9b00e870db294cd66708ab7 110fb72b3308e378ac8e8fbebeeffdb4
dc ................................... Masternode Signature 9b2a6562ad965bb3c3fd3f8e68483fdb
0d1401e2264071a74fc01d51e943ce9f ..... Masternode BLS Signature
{% endhighlight %} {% endhighlight %}
{% endautocrossref %} {% endautocrossref %}
@ -2556,7 +2552,7 @@ fees (to provide security in mixing).
| ---------- | ----------- | --------- | -------- | -------- | | ---------- | ----------- | --------- | -------- | -------- |
| # | tx | `tx` message | Required | The transaction | # | tx | `tx` message | Required | The transaction
| 36 | masternodeOutPoint | outPoint | Required | The unspent outpoint of the masternode (holding 1000 DASH) which is signing the message | 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_<br><br>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 | 8 | sigTime | int64_t | Require | Time this message was signed
@ -2565,9 +2561,10 @@ message header has been omitted.)
{% highlight text %} {% highlight text %}
Transaction Message 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 | Transaction input #1
| | | |
@ -2575,51 +2572,54 @@ Transaction Message
| | 74ed8307a566731119b1782362af43ad ......... Outpoint TXID | | 74ed8307a566731119b1782362af43ad ......... Outpoint TXID
| | 05000000 ................................. Outpoint index number: 5 | | 05000000 ................................. Outpoint index number: 5
| | | |
| | 6a ....................................... Bytes in sig. script: 106 | | 6b ....................................... Bytes in sig. script: 107
| | 47304402204ed56f525ae6df707f9cbe | | 483045022100b1243fcba562a0f1d7c4
| | 55c78d82bbcc02daa1fb27b0bf54588a | | cc3b320645dfa96c6412f368ccdbc1b7
| | 446dcc804102200c4e03c4a2b9a90aef | | acb6b0aa1db502201606c81b0d79f52f
| | 9f01de7c28812a0e8b280e6c153b0bd8 | | 47bcb071b64c37f72dd1378efa67a2de
| | 26d2ff660102e18121028c96903b2709 | | dd86c44d393668fa812102d6ff581270
| | 7b331d55abd1f42d2ff6cc7c784ab839 | | 632f5e972b0418ee871867b5c04b6eae
| | 7c232b73a34a149a348e ..................... Secp256k1 signature | | 3458ad135ad8f1daaa4fc2 ................... Secp256k1 signature
| | | |
| | ffffffff ................................. Sequence number: UINT32_MAX | | 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 | Transaction output #1
| | e8e4f50500000000 ......................... Duffs (1.00001000 Dash) | | 10f19a3b00000000 ......................... Duffs (10.0001000 Dash)
| | | |
| | 19 ....................................... Bytes in pubkey script: 25 | | 19 ....................................... Bytes in pubkey script: 25
| | | 76 ..................................... OP_DUP | | | 76 ..................................... OP_DUP
| | | a9 ..................................... OP_HASH160 | | | a9 ..................................... OP_HASH160
| | | 14 ..................................... Push 20 bytes as data | | | 14 ..................................... Push 20 bytes as data
| | | | 0febbeaa8818b2c2f80fb8c98f90bdae | | | | 3eb7ae776b096231de9eca42dd57a677
| | | | 41fe5c26 ............................. PubKey hash | | | | d3b05452 ............................. PubKey hash
| | | 88 ..................................... OP_EQUALVERIFY | | | 88 ..................................... OP_EQUALVERIFY
| | | ac ..................................... OP_CHECKSIG | | | ac ..................................... OP_CHECKSIG
| |
| [...] ...................................... 10 more transaction outputs omitted | [...] ...................................... 4 more transaction outputs omitted
| |
| |
| 00000000 ................................... locktime: 0 (a block height) | 00000000 ................................... locktime: 0 (a block height)
Masternode Unspent Outpoint Masternode Unspent Outpoint
| 387d522def2abfb9bdd15be899f074f3 | ccfbe4e7c220264cb0a8bfa5e91c6957
| 49b414cef078ec642e1d14b42996b9fc ......... Outpoint TXID | 33c255384790e80e891a0d8f56a59d9e ......... Outpoint TXID
| 00000000 ................................. Outpoint index number: 0 | 01000000 ................................. Outpoint index number: 1
1b6fb8f90f0df6e502bc10aab9604e49 60 ......................................... Signature length: 96
2d14214e05331c9761c834d55c7536e3
3369e5909479ea88116aad7ea64587d9
59364326c97d7f249f7b9293e120a5b6
1c ................................... Masternode Signature
ece5a95900000000 ..................... Signature Timestamp 94c8e427f448789f58cda17445e76c64
d0efa7c089addcb378f9b8d04b72f499
a4e8e616b5011886b9cffcce29e17fc1
10ad8609c3ee1a3207b882e7ff58400f
42d6e6544108b349da2cc5e716a5f266
4a2dc96b0f080effd5349f2ae06ac234 .......... Masternode Signature
59b4235c00000000 .......................... Sig Time: 2018-12-26 17:03:21 UTC
{% endhighlight %} {% endhighlight %}
{% endautocrossref %} {% 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) | 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: <br>`0` - Unknown<br>`1` - Proposal<br>`2` - Trigger<br>`3` - Watchdog | 4 | nObjectType | int | Required | Type of governance object: <br>`0` - Unknown<br>`1` - Proposal<br>`2` - Trigger<br>`3` - Watchdog
| 36 | masternodeOutPoint | outPoint | Required* | The unspent outpoint of the masternode (holding 1000 DASH) which is signing this object.<br><br>Set to all zeros for proposals since they can be created by non-masternodes. | 36 | masternodeOutPoint | outPoint | Required* | The unspent outpoint of the masternode (holding 1000 DASH) which is signing this object.<br><br>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))<br><br>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_<br><br>BLS Signature of the masternode (Length (1 byte) + Signature (96 bytes))<br><br>Not required for proposals - they will have a length of 0x00 and no Signature.
Governance Object Types (defined by src/governance-object.h) Governance Object Types (defined by src/governance-object.h)
@ -3224,13 +3224,14 @@ Masternode Unspent Outpoint
| fa7b6e26e25896d8127332bba2419e97 ... Outpoint TXID | fa7b6e26e25896d8127332bba2419e97 ... Outpoint TXID
| 00000000 ........................... Outpoint index number: 0 | 00000000 ........................... Outpoint index number: 0
41 ................................... Signature length: 65 60 ................................... Signature length: 96
1ce3b782f66be8ae9fc4158680128864 06516fa3b38d29fca6194e5d2c929666
341202b6006384083ab2d9cfa73795e2 d59d2d105bbbc30a1e5d144e708a610a
6000668e84af4ef6a284a52b53843524 2e0ab3c759988b13ff098ab3dbd4e01d
72037d51bd9079ffd5c087d9632865ee 129827ef1e1996c211d6d5ecd5199f60
75 ................................... Masternode Signature cf028b1cdb2f7240e33981b16d1270e9
d289fca20905fd453620238a505582fa ..... Masternode BLS Signature
{% endhighlight %} {% endhighlight %}
{% endautocrossref %} {% endautocrossref %}
@ -3271,7 +3272,7 @@ the node being banned.
| 4 | nVoteOutcome | int | Required | None (0), Yes (1), No (2), Abstain (3) | 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) | 4 | nVoteSignal | int | Required | None (0), Funding (1), Valid (2), Delete (3), Endorsed (4)
| 8 | nTime | int64_t | Required | Time the vote was created | 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_<br><br>BLS Signature of the masternode (Length (1 byte) + Signature (96 bytes))
Governance Object Vote Signals (defined by src/governance-object.h) Governance Object Vote Signals (defined by src/governance-object.h)
@ -3287,22 +3288,23 @@ message header has been omitted.)
{% highlight text %} {% highlight text %}
Masternode Unspent Outpoint Masternode Unspent Outpoint
| 57566a0ef85e6cac3415ced67b0b07e1 | 9425afd65ccce1d655d4dd461b8523b8
| 781bafb853650d7c9d56d8bc132cc3b4 ... Outpoint TXID | 2577a8009c25604c65f3e78ea71d65df ... Outpoint TXID
| 00000000 ........................... Outpoint index number: 0 | 01000000 ........................... Outpoint index number: 1
ad9579d5c181eee904156df1c88b050f bc1bb26088161ff07dc09d873faa5573
b8b4d39e5fda71f015996dbf14a51bff...... Parent Hash (0 = root) 9a2fd53121d315b2942f3b9db36cb475...... Parent Hash (0 = root)
01000000 ............................. Vote Outcome: VOTE_OUTCOME_NONE (1) 01000000 ............................. Vote Outcome: VOTE_OUTCOME_NONE (1)
02000000 ............................. Vote Signal: VOTE_SIGNAL_VALID (2) 03000000 ............................. Vote Signal: VOTE_SIGNAL_DELETE (3)
b517a85900000000 ..................... Vote Create Timestamp: 2017-08-31 14:05:41 UTC ec3d235c00000000 ..................... Vote Create Time: 2018-12-26 08:38:04 UTC
41 ................................... Signature length: 65 60 ................................... Signature length: 96
1b049113a81fe913f061ad295561d267 06516fa3b38d29fca6194e5d2c929666
00b8135a021ab0356a1e89b18d663d0b d59d2d105bbbc30a1e5d144e708a610a
dc45e9c09ee0427223e332b52e8d709e 2e0ab3c759988b13ff098ab3dbd4e01d
6d64e86b6435d7bdf207d8f23b6ae0db 129827ef1e1996c211d6d5ecd5199f60
6f ................................... Masternode Signature cf028b1cdb2f7240e33981b16d1270e9
d289fca20905fd453620238a505582fa ..... Masternode BLS Signature
{% endhighlight %} {% endhighlight %}
{% endautocrossref %} {% endautocrossref %}