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