mirror of
https://github.com/bitcoinj/bitcoinj.git
synced 2025-02-25 15:10:18 +01:00
Add new data-driven tests from the reference client
This commit is contained in:
parent
fad5356bd9
commit
60520ba17a
4 changed files with 153 additions and 3 deletions
|
@ -39,6 +39,9 @@
|
||||||
["1", "RETURN"],
|
["1", "RETURN"],
|
||||||
["1", "DUP IF RETURN ENDIF"],
|
["1", "DUP IF RETURN ENDIF"],
|
||||||
|
|
||||||
|
["1", "RETURN 'data'", "canonical prunable txout format"],
|
||||||
|
["0 IF", "RETURN ENDIF 1", "still prunable because IF/ENDIF can't span scriptSig/scriptPubKey"],
|
||||||
|
|
||||||
["0", "VERIFY 1"],
|
["0", "VERIFY 1"],
|
||||||
["1", "VERIFY"],
|
["1", "VERIFY"],
|
||||||
["1", "VERIFY 0"],
|
["1", "VERIFY 0"],
|
||||||
|
@ -128,13 +131,79 @@
|
||||||
["'NOP_1_to_10' NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_11' EQUAL"],
|
["'NOP_1_to_10' NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_11' EQUAL"],
|
||||||
|
|
||||||
["0x50","1", "opcode 0x50 is reserved"],
|
["0x50","1", "opcode 0x50 is reserved"],
|
||||||
["1", "IF 0xba ELSE 1 ENDIF", "opcodes above NOP10 invalid"],
|
["1", "IF 0xba ELSE 1 ENDIF", "opcodes above NOP10 invalid if executed"],
|
||||||
|
["1", "IF 0xbb ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xbc ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xbd ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xbe ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xbf ELSE 1 ENDIF"],
|
||||||
["1", "IF 0xc0 ELSE 1 ENDIF"],
|
["1", "IF 0xc0 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xc1 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xc2 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xc3 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xc4 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xc5 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xc6 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xc7 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xc8 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xc9 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xca ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xcb ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xcc ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xcd ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xce ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xcf ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xd0 ELSE 1 ENDIF"],
|
||||||
["1", "IF 0xd1 ELSE 1 ENDIF"],
|
["1", "IF 0xd1 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xd2 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xd3 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xd4 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xd5 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xd6 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xd7 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xd8 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xd9 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xda ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xdb ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xdc ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xdd ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xde ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xdf ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xe0 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xe1 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xe2 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xe3 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xe4 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xe5 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xe6 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xe7 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xe8 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xe9 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xea ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xeb ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xec ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xed ELSE 1 ENDIF"],
|
||||||
["1", "IF 0xee ELSE 1 ENDIF"],
|
["1", "IF 0xee ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xef ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xf0 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xf1 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xf2 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xf3 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xf4 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xf5 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xf6 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xf7 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xf8 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xf9 ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xfa ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xfb ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xfc ELSE 1 ENDIF"],
|
||||||
["1", "IF 0xfd ELSE 1 ENDIF"],
|
["1", "IF 0xfd ELSE 1 ENDIF"],
|
||||||
|
["1", "IF 0xfe ELSE 1 ENDIF"],
|
||||||
["1", "IF 0xff ELSE 1 ENDIF"],
|
["1", "IF 0xff ELSE 1 ENDIF"],
|
||||||
|
|
||||||
|
["1 IF 1 ELSE", "0xff ENDIF", "invalid because scriptSig and scriptPubKey are processed separately"],
|
||||||
|
|
||||||
["NOP", "RIPEMD160"],
|
["NOP", "RIPEMD160"],
|
||||||
["NOP", "SHA1"],
|
["NOP", "SHA1"],
|
||||||
["NOP", "SHA256"],
|
["NOP", "SHA256"],
|
||||||
|
|
|
@ -34,6 +34,8 @@
|
||||||
["1 0", "NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF"],
|
["1 0", "NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF"],
|
||||||
["0 1", "NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF"],
|
["0 1", "NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF"],
|
||||||
|
|
||||||
|
["0", "IF RETURN ENDIF 1", "RETURN only works if executed"],
|
||||||
|
|
||||||
["1 1", "VERIFY"],
|
["1 1", "VERIFY"],
|
||||||
|
|
||||||
["10 0 11 TOALTSTACK DROP FROMALTSTACK", "ADD 21 EQUAL"],
|
["10 0 11 TOALTSTACK DROP FROMALTSTACK", "ADD 21 EQUAL"],
|
||||||
|
@ -188,10 +190,74 @@
|
||||||
["'NOP_1_to_10' NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_10' EQUAL"],
|
["'NOP_1_to_10' NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_10' EQUAL"],
|
||||||
|
|
||||||
["0", "IF 0xba ELSE 1 ENDIF", "opcodes above NOP10 invalid if executed"],
|
["0", "IF 0xba ELSE 1 ENDIF", "opcodes above NOP10 invalid if executed"],
|
||||||
|
["0", "IF 0xbb ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xbc ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xbd ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xbe ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xbf ELSE 1 ENDIF"],
|
||||||
["0", "IF 0xc0 ELSE 1 ENDIF"],
|
["0", "IF 0xc0 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xc1 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xc2 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xc3 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xc4 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xc5 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xc6 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xc7 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xc8 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xc9 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xca ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xcb ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xcc ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xcd ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xce ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xcf ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xd0 ELSE 1 ENDIF"],
|
||||||
["0", "IF 0xd1 ELSE 1 ENDIF"],
|
["0", "IF 0xd1 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xd2 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xd3 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xd4 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xd5 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xd6 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xd7 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xd8 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xd9 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xda ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xdb ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xdc ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xdd ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xde ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xdf ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xe0 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xe1 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xe2 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xe3 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xe4 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xe5 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xe6 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xe7 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xe8 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xe9 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xea ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xeb ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xec ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xed ELSE 1 ENDIF"],
|
||||||
["0", "IF 0xee ELSE 1 ENDIF"],
|
["0", "IF 0xee ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xef ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xf0 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xf1 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xf2 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xf3 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xf4 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xf5 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xf6 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xf7 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xf8 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xf9 ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xfa ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xfb ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xfc ELSE 1 ENDIF"],
|
||||||
["0", "IF 0xfd ELSE 1 ENDIF"],
|
["0", "IF 0xfd ELSE 1 ENDIF"],
|
||||||
|
["0", "IF 0xfe ELSE 1 ENDIF"],
|
||||||
["0", "IF 0xff ELSE 1 ENDIF"],
|
["0", "IF 0xff ELSE 1 ENDIF"],
|
||||||
|
|
||||||
["NOP",
|
["NOP",
|
||||||
|
|
|
@ -60,5 +60,10 @@
|
||||||
|
|
||||||
["Null txin"],
|
["Null txin"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000000", -1, "HASH160 0x14 0x02dae7dbbda56097959cba59b1989dd3e47937bf EQUAL"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000000", -1, "HASH160 0x14 0x02dae7dbbda56097959cba59b1989dd3e47937bf EQUAL"]],
|
||||||
"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff6e49304602210086f39e028e46dafa8e1e3be63906465f4cf038fbe5ed6403dc3e74ae876e6431022100c4625c675cfc5c7e3a0e0d7eaec92ac24da20c73a88eb40d09253e51ac6def5201232103a183ddc41e84753aca47723c965d1b5c8b0e2b537963518355e6dd6cf8415e50acffffffff010000000000000000015100000000", true]
|
"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff6e49304602210086f39e028e46dafa8e1e3be63906465f4cf038fbe5ed6403dc3e74ae876e6431022100c4625c675cfc5c7e3a0e0d7eaec92ac24da20c73a88eb40d09253e51ac6def5201232103a183ddc41e84753aca47723c965d1b5c8b0e2b537963518355e6dd6cf8415e50acffffffff010000000000000000015100000000", true],
|
||||||
|
|
||||||
|
["Same as the transactions in valid with one input SIGHASH_ALL and one SIGHASH_ANYONECANPAY, but we set the _ANYONECANPAY sequence number, invalidating the SIGHASH_ALL signature"],
|
||||||
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG"],
|
||||||
|
["0000000000000000000000000000000000000000000000000000000000000200", 0, "0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG"]],
|
||||||
|
"01000000020001000000000000000000000000000000000000000000000000000000000000000000004948304502203a0f5f0e1f2bdbcd04db3061d18f3af70e07f4f467cbc1b8116f267025f5360b022100c792b6e215afc5afc721a351ec413e714305cb749aae3d7fee76621313418df10101000000000200000000000000000000000000000000000000000000000000000000000000000000484730440220201dc2d030e380e8f9cfb41b442d930fa5a685bb2c8db5906671f865507d0670022018d9e7a8d4c8d86a73c2a724ee38ef983ec249827e0e464841735955c707ece98101000000010100000000000000015100000000", true]
|
||||||
]
|
]
|
||||||
|
|
|
@ -67,5 +67,15 @@
|
||||||
["Coinbase of size 100"],
|
["Coinbase of size 100"],
|
||||||
["Note the input is just required to make the tester happy"],
|
["Note the input is just required to make the tester happy"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000000", -1, "1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000000", -1, "1"]],
|
||||||
"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff6451515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151ffffffff010000000000000000015100000000", true]
|
"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff6451515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151ffffffff010000000000000000015100000000", true],
|
||||||
|
|
||||||
|
["Simple transaction with first input is signed with SIGHASH_ALL, second with SIGHASH_ANYONECANPAY"],
|
||||||
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG"],
|
||||||
|
["0000000000000000000000000000000000000000000000000000000000000200", 0, "0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG"]],
|
||||||
|
"010000000200010000000000000000000000000000000000000000000000000000000000000000000049483045022100d180fd2eb9140aeb4210c9204d3f358766eb53842b2a9473db687fa24b12a3cc022079781799cd4f038b85135bbe49ec2b57f306b2bb17101b17f71f000fcab2b6fb01ffffffff0002000000000000000000000000000000000000000000000000000000000000000000004847304402205f7530653eea9b38699e476320ab135b74771e1c48b81a5d041e2ca84b9be7a802200ac8d1f40fb026674fe5a5edd3dea715c27baa9baca51ed45ea750ac9dc0a55e81ffffffff010100000000000000015100000000", true],
|
||||||
|
|
||||||
|
["Same as above, but we change the sequence number of the first input to check that SIGHASH_ANYONECANPAY is being followed"],
|
||||||
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG"],
|
||||||
|
["0000000000000000000000000000000000000000000000000000000000000200", 0, "0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG"]],
|
||||||
|
"01000000020001000000000000000000000000000000000000000000000000000000000000000000004948304502203a0f5f0e1f2bdbcd04db3061d18f3af70e07f4f467cbc1b8116f267025f5360b022100c792b6e215afc5afc721a351ec413e714305cb749aae3d7fee76621313418df101010000000002000000000000000000000000000000000000000000000000000000000000000000004847304402205f7530653eea9b38699e476320ab135b74771e1c48b81a5d041e2ca84b9be7a802200ac8d1f40fb026674fe5a5edd3dea715c27baa9baca51ed45ea750ac9dc0a55e81ffffffff010100000000000000015100000000", true]
|
||||||
]
|
]
|
||||||
|
|
Loading…
Add table
Reference in a new issue