mirror of
https://github.com/FlipsideCrypto/dcrd.git
synced 2026-02-06 10:56:47 +00:00
This removes the ScriptVerifyMinimalData flag from the txscript package, changes the default semantics to always enforce its behavior, and updates all callers in the repository accordingly. This change is being made to simplify the script engine code since the flag has always been active and required by consensus in Decred, so there is no need to require a flag to conditionally toggle it. It should be noted that the tests removed from script_tests.json specifically dealt with ensuring equivalency of different ways to encode the same numbers when the ScriptVerifyMinimalData flag is not set. Therefore, they are no longer necessary. A few tests which dealt with equivalency that did not already have expected failing counterparts were converted to expected failure. Also, several of the tests which dealt with ensuring the specific encoding of numeric opcodes is being used have been converted to use hashes since the minimal data requirements specifically prevent alternate ways of pushing the same encoding which is necessary for directly checking equality of the raw bytes. Finally, the MINIMALDATA indicator to enable the flag in the test data has been retained for now in order to isolate the logic changes as much as possible.
148 lines
16 KiB
JSON
148 lines
16 KiB
JSON
[
|
|
["The following are deserialized transactions which are valid."],
|
|
["They are in the form"],
|
|
["[[[prevout hash, prevout index, prevout scriptPubKey], [input 2], ...],"],
|
|
["serializedTransaction, verifyFlags]"],
|
|
["Objects that are only a single string (like this one) are ignored"],
|
|
|
|
["Coinbase of size 2"],
|
|
["Note the input is just required to make the tester happy"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000000", -1, "1"]],
|
|
"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00ffffffff0100000000000000000000015100000000000000000100000000000000000000000000000000025151", "NONE"],
|
|
|
|
["Coinbase of size 100"],
|
|
["Note the input is just required to make the tester happy"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000000", -1, "1"]],
|
|
"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00ffffffff01000000000000000000000151000000000000000001000000000000000000000000000000006451515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151", "NONE"],
|
|
|
|
["Empty signature"],
|
|
[[["9ca93cfd8e3806b9d9e2ba1cf64e3cc6946ee0119670b1796a09928d14ea25f7", 0, "0x21 0x028a1d66975dbdf97897e3a4aef450ebeb5b5293e4a0b4a6d3a2daaa0b2b110e02 CHECKSIG NOT"]],
|
|
"0100000001f725ea148d92096a79b1709611e06e94c63c4ef61cbae2d9b906388efd3ca99c0000000000ffffffff01010000000000000000002321028a1d66975dbdf97897e3a4aef450ebeb5b5293e4a0b4a6d3a2daaa0b2b110e02ac000000000000000001000000000000000000000000000000000100", "NONE"],
|
|
|
|
[[["ebbcf4bfce13292bd791d6a65a2a858d59adbf737e387e40370d4e64cc70efb0", 0, "2 0x21 0x033bcaa0a602f0d44cc9d5637c6e515b0471db514c020883830b7cefd73af04194 0x21 0x03a88b326f8767f4f192ce252afe33c94d25ab1d24f27f159b3cb3aa691ffe1423 2 CHECKMULTISIG NOT"]],
|
|
"0100000001b0ef70cc644e0d37407e387e73bfad598d852a5aa6d691d72b2913cebff4bceb0000000000ffffffff01010000000000000000002321033bcaa0a602f0d44cc9d5637c6e515b0471db514c020883830b7cefd73af04194ac000000000000000001000000000000000000000000000000004a00473044022068cd4851fc7f9a892ab910df7a24e616f293bcb5c5fbdfbc304a194b26b60fba022078e6da13d8cb881a22939b952c24f88b97afd06b4c47a47d7f804c9a352a6d6d0100", "NONE"],
|
|
|
|
[[["ba4cd7ae2ad4d4d13ebfc8ab1d93a63e4a6563f25089a18bf0fc68f282aa88c1", 0, "2 0x21 0x037c615d761e71d38903609bf4f46847266edc2fb37532047d747ba47eaae5ffe1 0x21 0x02edc823cd634f2c4033d94f5755207cb6b60c4b1f1f056ad7471c47de5f2e4d50 2 CHECKMULTISIG NOT"]],
|
|
"0100000001c188aa82f268fcf08ba18950f263654a3ea6931dabc8bf3ed1d4d42aaed74cba0000000000ffffffff01010000000000000000002321037c615d761e71d38903609bf4f46847266edc2fb37532047d747ba47eaae5ffe1ac000000000000000001000000000000000000000000000000004b0000483045022100940378576e069aca261a6b26fb38344e4497ca6751bb10905c76bb689f4222b002204833806b014c26fd801727b792b1260003c55710f87c5adbd7a9cb57446dbc9801", "NONE"],
|
|
|
|
["CHECKLOCKTIMEVERIFY tests"],
|
|
|
|
["By-height locks, with argument == 0 and == tx nLockTime"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 NOP2 1"]],
|
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKLOCKTIMEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "499999999 NOP2 1"]],
|
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000ff64cd1d00000000010000000000000000000000000000000000", "CHECKLOCKTIMEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 NOP2 1"]],
|
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000ff64cd1d00000000010000000000000000000000000000000000", "CHECKLOCKTIMEVERIFY"],
|
|
|
|
["By-time locks, with argument just beyond tx nLockTime (but within numerical boundaries)"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000000 NOP2 1"]],
|
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000065cd1d00000000010000000000000000000000000000000000", "CHECKLOCKTIMEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967295 NOP2 1"]],
|
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000ffffffff00000000010000000000000000000000000000000000", "CHECKLOCKTIMEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000000 NOP2 1"]],
|
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000ffffffff00000000010000000000000000000000000000000000", "CHECKLOCKTIMEVERIFY"],
|
|
|
|
["Any non-maxint nSequence is fine"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 NOP2 1"]],
|
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKLOCKTIMEVERIFY"],
|
|
|
|
["The argument can be calculated rather than created directly by a PUSHDATA"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "499999999 1ADD NOP2 1"]],
|
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000065cd1d00000000010000000000000000000000000000000000", "CHECKLOCKTIMEVERIFY"],
|
|
|
|
["Perhaps even by an ADD producing a 5-byte result that is out of bounds for other opcodes"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "1 2147483646 ADD NOP2 1"]],
|
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000feffffff00000000010000000000000000000000000000000000", "CHECKLOCKTIMEVERIFY"],
|
|
|
|
["Valid CHECKLOCKTIMEVERIFY in scriptSig"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "1"]],
|
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000010000000000000001000000000000000000000000000000000251b1", "CHECKLOCKTIMEVERIFY"],
|
|
|
|
["Valid CHECKLOCKTIMEVERIFY in redeemScript"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "HASH160 0x14 0x69780eeb90f65bf4cec3c17aeb3d466b88e7be66 EQUAL"]],
|
|
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000000000000000100000000000000000000000000000000030251b1", "CHECKLOCKTIMEVERIFY"],
|
|
|
|
["CHECKSEQUENCEVERIFY tests"],
|
|
|
|
["By-height locks, with argument == 0 and == txin.sequence"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "65535 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff00000100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "65535 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
|
|
["By-time locks, with argument == 0 and == txin.sequence"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4194304 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4259839 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff40000100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4259839 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4194304 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
|
|
["Upper sequence with upper sequence is fine"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483648 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000800100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967295 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000800100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483648 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967295 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483648 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967295 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
|
|
["Argument 2^31 with various sequence"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483648 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483648 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483648 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
|
|
["Argument 2^32-1 with various sequence"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967295 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967295 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967295 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
|
|
["Argument 3<<31 with various sequence"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "6442450944 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "6442450944 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "6442450944 CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
|
|
["The argument can be calculated rather than created directly by a PUSHDATA"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4194303 1ADD CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4194304 1SUB CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff00000100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
|
|
["An ADD producing a 5-byte result that sets SequenceLockTimeDisabled flag"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483647 65536 ADD CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483647 4259840 ADD CHECKSEQUENCEVERIFY 1"]],
|
|
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000000000000000010000000000000000000000000000000000", "CHECKSEQUENCEVERIFY"],
|
|
|
|
["Valid CHECKSEQUENCEVERIFY in signature script"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "1"]],
|
|
"02000000010001000000000000000000000000000000000000000000000000000000000000000000000001000000010000000000000000000000000000000000000001000000000000000000000000000000000251b2", "CHECKSEQUENCEVERIFY"],
|
|
|
|
["Valid CHECKSEQUENCEVERIFY in redeem script"],
|
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "HASH160 0x14 0x2bdb899598acb78ab63c2113434bbda853220b72 EQUAL"]],
|
|
"0200000001000100000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000000000000000000000000100000000000000000000000000000000030251b2", "CHECKSEQUENCEVERIFY"],
|
|
|
|
["Make diffs cleaner by leaving a comment here without comma at the end"]
|
|
]
|