mirror of
https://github.com/FlipsideCrypto/dcrd.git
synced 2026-02-06 10:56:47 +00:00
3031 lines
248 KiB
JSON
3031 lines
248 KiB
JSON
[
|
|
["Format is: [scriptSig, scriptPubKey, flags, expectedScriptError, ... comments]"],
|
|
["It is evaluated as if there was a crediting coinbase transaction with two 0"],
|
|
["pushes as scriptSig, and one output of 0 atoms and given scriptPubKey,"],
|
|
["followed by a spending transaction which spends this output as only input (and"],
|
|
["correct prevout hash), using the given scriptSig. All lock times are 0 and" ],
|
|
["all sequences are max."],
|
|
|
|
["Tests for test harness itself"],
|
|
["", "DEPTH 0 EQUAL", "NONE", "OK", "There should be an empty stack after scriptSig evaluation"],
|
|
[" ", "DEPTH 0 EQUAL", "NONE", "OK", "and multiple spaces should not change that"],
|
|
[" ", "DEPTH 0 EQUAL", "NONE", "OK"],
|
|
[" ", "DEPTH 0 EQUAL", "NONE", "OK"],
|
|
["1 2", "2 EQUALVERIFY 1 EQUAL", "NONE", "OK", "Similarly whitespace around and between symbols"],
|
|
["1 2", "2 EQUALVERIFY 1 EQUAL", "NONE", "OK"],
|
|
[" 1 2", "2 EQUALVERIFY 1 EQUAL", "NONE", "OK"],
|
|
["1 2 ", "2 EQUALVERIFY 1 EQUAL", "NONE", "OK"],
|
|
[" 1 2 ", "2 EQUALVERIFY 1 EQUAL", "NONE", "OK"],
|
|
["", "DEPTH", "NONE", "ERR_EVAL_FALSE", "There should be an empty stack after scriptSig evaluation"],
|
|
[" ", "DEPTH", "NONE", "ERR_EVAL_FALSE", "and multiple spaces should not change that"],
|
|
[" ", "DEPTH", "NONE", "ERR_EVAL_FALSE"],
|
|
[" ", "DEPTH", "NONE", "ERR_EVAL_FALSE"],
|
|
["", "", "NONE", "ERR_EVAL_FALSE"],
|
|
["", "NOP", "NONE", "ERR_EMPTY_STACK"],
|
|
["", "NOP DEPTH", "NONE", "ERR_EVAL_FALSE"],
|
|
["NOP", "", "NONE", "ERR_EMPTY_STACK"],
|
|
["NOP", "DEPTH", "NONE", "ERR_EVAL_FALSE"],
|
|
["NOP","NOP", "NONE", "ERR_EMPTY_STACK"],
|
|
["NOP","NOP DEPTH", "NONE", "ERR_EVAL_FALSE"],
|
|
["DEPTH", "", "NONE", "ERR_EVAL_FALSE"],
|
|
["0x51", "", "NONE", "OK", "Entries with hex notation are treated as raw bytes (OP_TRUE)"],
|
|
["OP_FALSE", "FALSE EQUAL", "NONE", "OK", "Both OP_NAME and NAME are valid"],
|
|
["0x00", "", "NONE", "ERR_EVAL_FALSE", "Entries with hex notation are treated as raw bytes (OP_FALSE)"],
|
|
["'abc'", "0x03 0x616263 EQUAL", "NONE", "OK", "Single quoted strings are pushed as data"],
|
|
["'12'", "12 EQUAL", "NONE", "ERR_EVAL_FALSE", "Single quoted numeric strings are pushed as data"],
|
|
["'abc'{3}", "'abcabcabc' EQUAL", "NONE", "OK", "Single quoted strings with brace suffix are repeated"],
|
|
["0x02aabb{2}", "DATA_2 0xaabb EQUALVERIFY DATA_2 0xaabb EQUAL", "NONE", "OK", "Raw bytes in hex notation with brace suffix are repeated"],
|
|
["<DATA_3 0xaabbcc>{2}", "DATA_3 0xaabbcc EQUALVERIFY DATA_3 0xaabbcc EQUAL", "NONE", "OK", "Multiple tokens in angular brackets with with brace suffix are repeated"],
|
|
["<'abc'{3}>{2}", "<'abcabcabc'>{2} EQUALVERIFY EQUAL", "NONE", "OK", "'abc'{3} results in a single push of 9 bytes while <'abcabcabc'>{2} is 2 pushes of 9 bytes each"],
|
|
["0x00", "SIZE 0 EQUAL", "NONE", "OK", "Basic OP_0 execution"],
|
|
|
|
["1", "", "NONE", "OK", "Execution result with non-zero value is success"],
|
|
["0x02 0x01 0x00", "", "NONE", "OK", "All bytes are significant, not only the last one"],
|
|
["0x09 0x0000000000000000 0x10", "", "NONE", "OK", "Result is based on raw bytes, not numeric interpretation (equals zero when cast to int64, which would be OP_FALSE)"],
|
|
|
|
["Data push opcode tests"],
|
|
|
|
["DATA_[1..75] test coverage"],
|
|
["DATA_1 0x4c", "76 EQUAL", "NONE", "OK", "Push 1 byte"],
|
|
["DATA_2 0x417a", "'Az' EQUAL", "NONE", "OK", "Push 2 bytes"],
|
|
["DATA_3 0x7a{3}", "'z'{3} EQUAL", "NONE", "OK", "Push 3 bytes"],
|
|
["DATA_4 0x7a{4}", "'z'{4} EQUAL", "NONE", "OK", "Push 4 bytes"],
|
|
["DATA_5 0x7a{5}", "'z'{5} EQUAL", "NONE", "OK", "Push 5 bytes"],
|
|
["DATA_6 0x7a{6}", "'z'{6} EQUAL", "NONE", "OK", "Push 6 bytes"],
|
|
["DATA_7 0x7a{7}", "'z'{7} EQUAL", "NONE", "OK", "Push 7 bytes"],
|
|
["DATA_8 0x7a{8}", "'z'{8} EQUAL", "NONE", "OK", "Push 8 bytes"],
|
|
["DATA_9 0x7a{9}", "'z'{9} EQUAL", "NONE", "OK", "Push 9 bytes"],
|
|
["DATA_10 0x7a{10}", "'z'{10} EQUAL", "NONE", "OK", "Push 10 bytes"],
|
|
["DATA_11 0x7a{11}", "'z'{11} EQUAL", "NONE", "OK", "Push 11 bytes"],
|
|
["DATA_12 0x7a{12}", "'z'{12} EQUAL", "NONE", "OK", "Push 12 bytes"],
|
|
["DATA_13 0x7a{13}", "'z'{13} EQUAL", "NONE", "OK", "Push 13 bytes"],
|
|
["DATA_14 0x7a{14}", "'z'{14} EQUAL", "NONE", "OK", "Push 14 bytes"],
|
|
["DATA_15 0x7a{15}", "'z'{15} EQUAL", "NONE", "OK", "Push 15 bytes"],
|
|
["DATA_16 0x7a{16}", "'z'{16} EQUAL", "NONE", "OK", "Push 16 bytes"],
|
|
["DATA_17 0x7a{17}", "'z'{17} EQUAL", "NONE", "OK", "Push 17 bytes"],
|
|
["DATA_18 0x7a{18}", "'z'{18} EQUAL", "NONE", "OK", "Push 18 bytes"],
|
|
["DATA_19 0x7a{19}", "'z'{19} EQUAL", "NONE", "OK", "Push 19 bytes"],
|
|
["DATA_20 0x7a{20}", "'z'{20} EQUAL", "NONE", "OK", "Push 20 bytes"],
|
|
["DATA_21 0x7a{21}", "'z'{21} EQUAL", "NONE", "OK", "Push 21 bytes"],
|
|
["DATA_22 0x7a{22}", "'z'{22} EQUAL", "NONE", "OK", "Push 22 bytes"],
|
|
["DATA_23 0x7a{23}", "'z'{23} EQUAL", "NONE", "OK", "Push 23 bytes"],
|
|
["DATA_24 0x7a{24}", "'z'{24} EQUAL", "NONE", "OK", "Push 24 bytes"],
|
|
["DATA_25 0x7a{25}", "'z'{25} EQUAL", "NONE", "OK", "Push 25 bytes"],
|
|
["DATA_26 0x7a{26}", "'z'{26} EQUAL", "NONE", "OK", "Push 26 bytes"],
|
|
["DATA_27 0x7a{27}", "'z'{27} EQUAL", "NONE", "OK", "Push 27 bytes"],
|
|
["DATA_28 0x7a{28}", "'z'{28} EQUAL", "NONE", "OK", "Push 28 bytes"],
|
|
["DATA_29 0x7a{29}", "'z'{29} EQUAL", "NONE", "OK", "Push 29 bytes"],
|
|
["DATA_30 0x7a{30}", "'z'{30} EQUAL", "NONE", "OK", "Push 30 bytes"],
|
|
["DATA_31 0x7a{31}", "'z'{31} EQUAL", "NONE", "OK", "Push 31 bytes"],
|
|
["DATA_32 0x7a{32}", "'z'{32} EQUAL", "NONE", "OK", "Push 32 bytes"],
|
|
["DATA_33 0x7a{33}", "'z'{33} EQUAL", "NONE", "OK", "Push 33 bytes"],
|
|
["DATA_34 0x7a{34}", "'z'{34} EQUAL", "NONE", "OK", "Push 34 bytes"],
|
|
["DATA_35 0x7a{35}", "'z'{35} EQUAL", "NONE", "OK", "Push 35 bytes"],
|
|
["DATA_36 0x7a{36}", "'z'{36} EQUAL", "NONE", "OK", "Push 36 bytes"],
|
|
["DATA_37 0x7a{37}", "'z'{37} EQUAL", "NONE", "OK", "Push 37 bytes"],
|
|
["DATA_38 0x7a{38}", "'z'{38} EQUAL", "NONE", "OK", "Push 38 bytes"],
|
|
["DATA_39 0x7a{39}", "'z'{39} EQUAL", "NONE", "OK", "Push 39 bytes"],
|
|
["DATA_40 0x7a{40}", "'z'{40} EQUAL", "NONE", "OK", "Push 40 bytes"],
|
|
["DATA_41 0x7a{41}", "'z'{41} EQUAL", "NONE", "OK", "Push 41 bytes"],
|
|
["DATA_42 0x7a{42}", "'z'{42} EQUAL", "NONE", "OK", "Push 42 bytes"],
|
|
["DATA_43 0x7a{43}", "'z'{43} EQUAL", "NONE", "OK", "Push 43 bytes"],
|
|
["DATA_44 0x7a{44}", "'z'{44} EQUAL", "NONE", "OK", "Push 44 bytes"],
|
|
["DATA_45 0x7a{45}", "'z'{45} EQUAL", "NONE", "OK", "Push 45 bytes"],
|
|
["DATA_46 0x7a{46}", "'z'{46} EQUAL", "NONE", "OK", "Push 46 bytes"],
|
|
["DATA_47 0x7a{47}", "'z'{47} EQUAL", "NONE", "OK", "Push 47 bytes"],
|
|
["DATA_48 0x7a{48}", "'z'{48} EQUAL", "NONE", "OK", "Push 48 bytes"],
|
|
["DATA_49 0x7a{49}", "'z'{49} EQUAL", "NONE", "OK", "Push 49 bytes"],
|
|
["DATA_50 0x7a{50}", "'z'{50} EQUAL", "NONE", "OK", "Push 50 bytes"],
|
|
["DATA_51 0x7a{51}", "'z'{51} EQUAL", "NONE", "OK", "Push 51 bytes"],
|
|
["DATA_52 0x7a{52}", "'z'{52} EQUAL", "NONE", "OK", "Push 52 bytes"],
|
|
["DATA_53 0x7a{53}", "'z'{53} EQUAL", "NONE", "OK", "Push 53 bytes"],
|
|
["DATA_54 0x7a{54}", "'z'{54} EQUAL", "NONE", "OK", "Push 54 bytes"],
|
|
["DATA_55 0x7a{55}", "'z'{55} EQUAL", "NONE", "OK", "Push 55 bytes"],
|
|
["DATA_56 0x7a{56}", "'z'{56} EQUAL", "NONE", "OK", "Push 56 bytes"],
|
|
["DATA_57 0x7a{57}", "'z'{57} EQUAL", "NONE", "OK", "Push 57 bytes"],
|
|
["DATA_58 0x7a{58}", "'z'{58} EQUAL", "NONE", "OK", "Push 58 bytes"],
|
|
["DATA_59 0x7a{59}", "'z'{59} EQUAL", "NONE", "OK", "Push 59 bytes"],
|
|
["DATA_60 0x7a{60}", "'z'{60} EQUAL", "NONE", "OK", "Push 60 bytes"],
|
|
["DATA_61 0x7a{61}", "'z'{61} EQUAL", "NONE", "OK", "Push 61 bytes"],
|
|
["DATA_62 0x7a{62}", "'z'{62} EQUAL", "NONE", "OK", "Push 62 bytes"],
|
|
["DATA_63 0x7a{63}", "'z'{63} EQUAL", "NONE", "OK", "Push 63 bytes"],
|
|
["DATA_64 0x7a{64}", "'z'{64} EQUAL", "NONE", "OK", "Push 64 bytes"],
|
|
["DATA_65 0x7a{65}", "'z'{65} EQUAL", "NONE", "OK", "Push 65 bytes"],
|
|
["DATA_66 0x7a{66}", "'z'{66} EQUAL", "NONE", "OK", "Push 66 bytes"],
|
|
["DATA_67 0x7a{67}", "'z'{67} EQUAL", "NONE", "OK", "Push 67 bytes"],
|
|
["DATA_68 0x7a{68}", "'z'{68} EQUAL", "NONE", "OK", "Push 68 bytes"],
|
|
["DATA_69 0x7a{69}", "'z'{69} EQUAL", "NONE", "OK", "Push 69 bytes"],
|
|
["DATA_70 0x7a{70}", "'z'{70} EQUAL", "NONE", "OK", "Push 70 bytes"],
|
|
["DATA_71 0x7a{71}", "'z'{71} EQUAL", "NONE", "OK", "Push 71 bytes"],
|
|
["DATA_72 0x7a{72}", "'z'{72} EQUAL", "NONE", "OK", "Push 72 bytes"],
|
|
["DATA_73 0x7a{73}", "'z'{73} EQUAL", "NONE", "OK", "Push 73 bytes"],
|
|
["DATA_74 0x7a{74}", "'z'{74} EQUAL", "NONE", "OK", "Push 74 bytes"],
|
|
["DATA_75 0x7a{75}", "'z'{75} EQUAL", "NONE", "OK", "Push 75 bytes"],
|
|
|
|
["DATA_2 DATA_1 0x7a", "HASH160 DATA_20 0x9b390663e7076ab452845556630d7206c909c6ca EQUAL", "NONE", "OK", "Push 1 bytes (P2SH)"],
|
|
["DATA_3 DATA_2 0x7a{2}", "HASH160 DATA_20 0x00e9107b0f792a9aef7b0202b546ff5d40e47336 EQUAL", "NONE", "OK", "Push 2 bytes (P2SH)"],
|
|
["DATA_4 DATA_3 0x7a{3}", "HASH160 DATA_20 0x246bda0f2b9aba6dc78c6259970e45e6af960d46 EQUAL", "NONE", "OK", "Push 3 bytes (P2SH)"],
|
|
["DATA_5 DATA_4 0x7a{4}", "HASH160 DATA_20 0xdd7ee688263f0b60a51599dd4c42428f9be7362a EQUAL", "NONE", "OK", "Push 4 bytes (P2SH)"],
|
|
["DATA_6 DATA_5 0x7a{5}", "HASH160 DATA_20 0x61570f1563ccbe61c5176fa23d3701028a21f2d0 EQUAL", "NONE", "OK", "Push 5 bytes (P2SH)"],
|
|
["DATA_7 DATA_6 0x7a{6}", "HASH160 DATA_20 0x152cab3b021c3c3889fb60b2139885267ce92888 EQUAL", "NONE", "OK", "Push 6 bytes (P2SH)"],
|
|
["DATA_8 DATA_7 0x7a{7}", "HASH160 DATA_20 0x5d3ea70416ebdc36c121f2bd9a5c477d03120f3f EQUAL", "NONE", "OK", "Push 7 bytes (P2SH)"],
|
|
["DATA_9 DATA_8 0x7a{8}", "HASH160 DATA_20 0x1b7626f1454ff8d95bfa66182da3afbcbc018d6e EQUAL", "NONE", "OK", "Push 8 bytes (P2SH)"],
|
|
["DATA_10 DATA_9 0x7a{9}", "HASH160 DATA_20 0x3b6636819f9200c90e355afb8076771de5ed9aba EQUAL", "NONE", "OK", "Push 9 bytes (P2SH)"],
|
|
["DATA_11 DATA_10 0x7a{10}", "HASH160 DATA_20 0xaa0e33227abf43d6c06ca17ca62b79c2964f09ff EQUAL", "NONE", "OK", "Push 10 bytes (P2SH)"],
|
|
["DATA_12 DATA_11 0x7a{11}", "HASH160 DATA_20 0xb7c317e44748743b0919398a7fbe3b68b89059bf EQUAL", "NONE", "OK", "Push 11 bytes (P2SH)"],
|
|
["DATA_13 DATA_12 0x7a{12}", "HASH160 DATA_20 0x44a4243c766ede73150efb3d5b32e87bd212907a EQUAL", "NONE", "OK", "Push 12 bytes (P2SH)"],
|
|
["DATA_14 DATA_13 0x7a{13}", "HASH160 DATA_20 0x73c1058d14eac88fe930399aec6e53900ab64e59 EQUAL", "NONE", "OK", "Push 13 bytes (P2SH)"],
|
|
["DATA_15 DATA_14 0x7a{14}", "HASH160 DATA_20 0xc884baf927dc11acaa241d13ee3a78ed0427211f EQUAL", "NONE", "OK", "Push 14 bytes (P2SH)"],
|
|
["DATA_16 DATA_15 0x7a{15}", "HASH160 DATA_20 0xa1c3624d7d0e158768247c02aa6ed26476912158 EQUAL", "NONE", "OK", "Push 15 bytes (P2SH)"],
|
|
["DATA_17 DATA_16 0x7a{16}", "HASH160 DATA_20 0xfa8a4bf9742dc4e4c60e65f5b8a5e3eb4d5835f1 EQUAL", "NONE", "OK", "Push 16 bytes (P2SH)"],
|
|
["DATA_18 DATA_17 0x7a{17}", "HASH160 DATA_20 0xec25017eb01083f3653cd505f401322132e32174 EQUAL", "NONE", "OK", "Push 17 bytes (P2SH)"],
|
|
["DATA_19 DATA_18 0x7a{18}", "HASH160 DATA_20 0xf4ffaacebe27db74e9625b7d7453c064f93dd66f EQUAL", "NONE", "OK", "Push 18 bytes (P2SH)"],
|
|
["DATA_20 DATA_19 0x7a{19}", "HASH160 DATA_20 0x7eb74447180d393452e00719203f572ee6ab542c EQUAL", "NONE", "OK", "Push 19 bytes (P2SH)"],
|
|
["DATA_21 DATA_20 0x7a{20}", "HASH160 DATA_20 0xc70b5d3255201bf4bf28f04bfe7342db29db6a56 EQUAL", "NONE", "OK", "Push 20 bytes (P2SH)"],
|
|
["DATA_22 DATA_21 0x7a{21}", "HASH160 DATA_20 0x83bc77403939e728104f21dddebe36694a965279 EQUAL", "NONE", "OK", "Push 21 bytes (P2SH)"],
|
|
["DATA_23 DATA_22 0x7a{22}", "HASH160 DATA_20 0xe1fd392129e09da5141c742078483957002a2613 EQUAL", "NONE", "OK", "Push 22 bytes (P2SH)"],
|
|
["DATA_24 DATA_23 0x7a{23}", "HASH160 DATA_20 0x56f1d32ea440c04da9d40d7a2e4236a6fdbf3104 EQUAL", "NONE", "OK", "Push 23 bytes (P2SH)"],
|
|
["DATA_25 DATA_24 0x7a{24}", "HASH160 DATA_20 0xb226ec1952032719701a65f82315a15043463a6d EQUAL", "NONE", "OK", "Push 24 bytes (P2SH)"],
|
|
["DATA_26 DATA_25 0x7a{25}", "HASH160 DATA_20 0x58e95739e06095b94eabf201785c2a32fe2827cc EQUAL", "NONE", "OK", "Push 25 bytes (P2SH)"],
|
|
["DATA_27 DATA_26 0x7a{26}", "HASH160 DATA_20 0xef1d6766953c1f6a0d2a85ab442e0b50548565b0 EQUAL", "NONE", "OK", "Push 26 bytes (P2SH)"],
|
|
["DATA_28 DATA_27 0x7a{27}", "HASH160 DATA_20 0x532e1c9851f0fd629366b87e2218631c9808b6fb EQUAL", "NONE", "OK", "Push 27 bytes (P2SH)"],
|
|
["DATA_29 DATA_28 0x7a{28}", "HASH160 DATA_20 0x2ce7c28d4ed080031fe473b8c11941d9267585e3 EQUAL", "NONE", "OK", "Push 28 bytes (P2SH)"],
|
|
["DATA_30 DATA_29 0x7a{29}", "HASH160 DATA_20 0xeefe2fb54138983cf73d32f410c6fc2ccd5397be EQUAL", "NONE", "OK", "Push 29 bytes (P2SH)"],
|
|
["DATA_31 DATA_30 0x7a{30}", "HASH160 DATA_20 0xf0377577bd5d5e4cac0fe6712b3d1383cec706da EQUAL", "NONE", "OK", "Push 30 bytes (P2SH)"],
|
|
["DATA_32 DATA_31 0x7a{31}", "HASH160 DATA_20 0xab97eff4e0d2ec409b3434acd52496fd5c9f8a74 EQUAL", "NONE", "OK", "Push 31 bytes (P2SH)"],
|
|
["DATA_33 DATA_32 0x7a{32}", "HASH160 DATA_20 0x0dbe738cd9bef2da2dc0e6924f302f55905adcd5 EQUAL", "NONE", "OK", "Push 32 bytes (P2SH)"],
|
|
["DATA_34 DATA_33 0x7a{33}", "HASH160 DATA_20 0x777772d7ede4a8408d86f515a79bf422cf41f020 EQUAL", "NONE", "OK", "Push 33 bytes (P2SH)"],
|
|
["DATA_35 DATA_34 0x7a{34}", "HASH160 DATA_20 0x1e9aa0723faef4c16a235fd9531f185689f90a2b EQUAL", "NONE", "OK", "Push 34 bytes (P2SH)"],
|
|
["DATA_36 DATA_35 0x7a{35}", "HASH160 DATA_20 0x4c6d02d0042864b9af4e79879cb4b48884f4b099 EQUAL", "NONE", "OK", "Push 35 bytes (P2SH)"],
|
|
["DATA_37 DATA_36 0x7a{36}", "HASH160 DATA_20 0xde0ea477f8acde11499169af6f449e5a25c70f22 EQUAL", "NONE", "OK", "Push 36 bytes (P2SH)"],
|
|
["DATA_38 DATA_37 0x7a{37}", "HASH160 DATA_20 0xeb7233713b4d06c35a97153fb3179ac30a3929f3 EQUAL", "NONE", "OK", "Push 37 bytes (P2SH)"],
|
|
["DATA_39 DATA_38 0x7a{38}", "HASH160 DATA_20 0x5113af8b11188347835c46da600b417e43b63fcd EQUAL", "NONE", "OK", "Push 38 bytes (P2SH)"],
|
|
["DATA_40 DATA_39 0x7a{39}", "HASH160 DATA_20 0x972205fcc0d6b51aa1cf28c733ca03820b05189b EQUAL", "NONE", "OK", "Push 39 bytes (P2SH)"],
|
|
["DATA_41 DATA_40 0x7a{40}", "HASH160 DATA_20 0xac6bdd64b2b382925ae728a2c7594fe014659748 EQUAL", "NONE", "OK", "Push 40 bytes (P2SH)"],
|
|
["DATA_42 DATA_41 0x7a{41}", "HASH160 DATA_20 0x50f22edf0b3bb570929290ce7e667a76d223b532 EQUAL", "NONE", "OK", "Push 41 bytes (P2SH)"],
|
|
["DATA_43 DATA_42 0x7a{42}", "HASH160 DATA_20 0xed21c6131b24fb81822e4680443616ffe34fd233 EQUAL", "NONE", "OK", "Push 42 bytes (P2SH)"],
|
|
["DATA_44 DATA_43 0x7a{43}", "HASH160 DATA_20 0x40df8baa31ea447f2b14330df3929eecde0666ee EQUAL", "NONE", "OK", "Push 43 bytes (P2SH)"],
|
|
["DATA_45 DATA_44 0x7a{44}", "HASH160 DATA_20 0xa974ef555c38feae07e9cc04f1c083655919ad73 EQUAL", "NONE", "OK", "Push 44 bytes (P2SH)"],
|
|
["DATA_46 DATA_45 0x7a{45}", "HASH160 DATA_20 0x63c1f802278d405cc83b064e72d1c04b8e06287a EQUAL", "NONE", "OK", "Push 45 bytes (P2SH)"],
|
|
["DATA_47 DATA_46 0x7a{46}", "HASH160 DATA_20 0xd3191b050f51110760a7b54a2e6e0d96f8ebf909 EQUAL", "NONE", "OK", "Push 46 bytes (P2SH)"],
|
|
["DATA_48 DATA_47 0x7a{47}", "HASH160 DATA_20 0x16ae1c6d3406424cbd41d08c6ef8e2919613e644 EQUAL", "NONE", "OK", "Push 47 bytes (P2SH)"],
|
|
["DATA_49 DATA_48 0x7a{48}", "HASH160 DATA_20 0xb0b614d6d7773f1df181bf34d6bc5446ace6a043 EQUAL", "NONE", "OK", "Push 48 bytes (P2SH)"],
|
|
["DATA_50 DATA_49 0x7a{49}", "HASH160 DATA_20 0xe96831a0af69c89deb1a279e683fd0a50f700b50 EQUAL", "NONE", "OK", "Push 49 bytes (P2SH)"],
|
|
["DATA_51 DATA_50 0x7a{50}", "HASH160 DATA_20 0x8fd2c6dcf2531a412c5a8498a4f699b7513f0ec5 EQUAL", "NONE", "OK", "Push 50 bytes (P2SH)"],
|
|
["DATA_52 DATA_51 0x7a{51}", "HASH160 DATA_20 0x68fe3c5eda314387915fda8d1e6057384b85a0a0 EQUAL", "NONE", "OK", "Push 51 bytes (P2SH)"],
|
|
["DATA_53 DATA_52 0x7a{52}", "HASH160 DATA_20 0x2cbd968bee5a08b26c82680c2e921f21fc6b2c30 EQUAL", "NONE", "OK", "Push 52 bytes (P2SH)"],
|
|
["DATA_54 DATA_53 0x7a{53}", "HASH160 DATA_20 0x0dd26caddbebfbebec911760933597572e263a96 EQUAL", "NONE", "OK", "Push 53 bytes (P2SH)"],
|
|
["DATA_55 DATA_54 0x7a{54}", "HASH160 DATA_20 0x3217b43d9e4545aee791c1d81798a53a6781b96c EQUAL", "NONE", "OK", "Push 54 bytes (P2SH)"],
|
|
["DATA_56 DATA_55 0x7a{55}", "HASH160 DATA_20 0x294e4f7f972b207ca28577b87e6259cf9003fb5b EQUAL", "NONE", "OK", "Push 55 bytes (P2SH)"],
|
|
["DATA_57 DATA_56 0x7a{56}", "HASH160 DATA_20 0x98fc7199501aa174dd8a1e39c500a0accfd80754 EQUAL", "NONE", "OK", "Push 56 bytes (P2SH)"],
|
|
["DATA_58 DATA_57 0x7a{57}", "HASH160 DATA_20 0xd8dfd0d553a10a78495e1eb1bce3f26816c2c106 EQUAL", "NONE", "OK", "Push 57 bytes (P2SH)"],
|
|
["DATA_59 DATA_58 0x7a{58}", "HASH160 DATA_20 0x877d17b5530551914ea6e0bc4ebdecb2af9d171e EQUAL", "NONE", "OK", "Push 58 bytes (P2SH)"],
|
|
["DATA_60 DATA_59 0x7a{59}", "HASH160 DATA_20 0x6ec38be2155bb81bbedff2e705df5c1947569f67 EQUAL", "NONE", "OK", "Push 59 bytes (P2SH)"],
|
|
["DATA_61 DATA_60 0x7a{60}", "HASH160 DATA_20 0x284e4fc970a69f259959b7f04a8d6e6db97fea1b EQUAL", "NONE", "OK", "Push 60 bytes (P2SH)"],
|
|
["DATA_62 DATA_61 0x7a{61}", "HASH160 DATA_20 0x8aa203320bc7abb4f835afdae9ee45c43194ec08 EQUAL", "NONE", "OK", "Push 61 bytes (P2SH)"],
|
|
["DATA_63 DATA_62 0x7a{62}", "HASH160 DATA_20 0x79b37d3a698bdafbee928cda498a6d4a52c3250d EQUAL", "NONE", "OK", "Push 62 bytes (P2SH)"],
|
|
["DATA_64 DATA_63 0x7a{63}", "HASH160 DATA_20 0xa3e2725619ccce07ef12526ba492543c3ef68911 EQUAL", "NONE", "OK", "Push 63 bytes (P2SH)"],
|
|
["DATA_65 DATA_64 0x7a{64}", "HASH160 DATA_20 0xf11687ba6ad3b90aceae1895b6a186449e9d0de8 EQUAL", "NONE", "OK", "Push 64 bytes (P2SH)"],
|
|
["DATA_66 DATA_65 0x7a{65}", "HASH160 DATA_20 0xb62e10eae2a904964e85c3fc5909a9e8be8a896f EQUAL", "NONE", "OK", "Push 65 bytes (P2SH)"],
|
|
["DATA_67 DATA_66 0x7a{66}", "HASH160 DATA_20 0xd2170a5bd18e483f604219613aeba9977bf51928 EQUAL", "NONE", "OK", "Push 66 bytes (P2SH)"],
|
|
["DATA_68 DATA_67 0x7a{67}", "HASH160 DATA_20 0xccb5ef0498dedfb1d4bad9f4b4fab1b4e2b89d64 EQUAL", "NONE", "OK", "Push 67 bytes (P2SH)"],
|
|
["DATA_69 DATA_68 0x7a{68}", "HASH160 DATA_20 0x4baff4b1aa2229614b862b79d7f61b165d1e111e EQUAL", "NONE", "OK", "Push 68 bytes (P2SH)"],
|
|
["DATA_70 DATA_69 0x7a{69}", "HASH160 DATA_20 0xc722c86414ade5933aa658fe56c3872672cef17e EQUAL", "NONE", "OK", "Push 69 bytes (P2SH)"],
|
|
["DATA_71 DATA_70 0x7a{70}", "HASH160 DATA_20 0x2916ffa25ee42c80aa797e9c302721ab7f353ee6 EQUAL", "NONE", "OK", "Push 70 bytes (P2SH)"],
|
|
["DATA_72 DATA_71 0x7a{71}", "HASH160 DATA_20 0xcd95eb89742f76cee819619adbcdfd6746efa2fc EQUAL", "NONE", "OK", "Push 71 bytes (P2SH)"],
|
|
["DATA_73 DATA_72 0x7a{72}", "HASH160 DATA_20 0x17e504317931c0a1d96051a81320f98e85a2076c EQUAL", "NONE", "OK", "Push 72 bytes (P2SH)"],
|
|
["DATA_74 DATA_73 0x7a{73}", "HASH160 DATA_20 0xfb3244ca600f4d40ec81c46ef5dd7b884211b653 EQUAL", "NONE", "OK", "Push 73 bytes (P2SH)"],
|
|
["DATA_75 DATA_74 0x7a{74}", "HASH160 DATA_20 0x9ec7b2342425877cdd51991997cf24a2d8499a75 EQUAL", "NONE", "OK", "Push 74 bytes (P2SH)"],
|
|
["PUSHDATA1 0x4c DATA_75 0x7a{75}", "HASH160 DATA_20 0xcf4e7eec2b1a36bfec14f8da68f769bd8ec5aa2d EQUAL", "NONE", "OK", "Push 75 bytes (P2SH)"],
|
|
["PUSHDATA1 0x4e PUSHDATA1 0x4c 0x7a{76}", "HASH160 DATA_20 0x96ad995d104a81b6b6b9a6f877e71ebef158775a EQUAL", "NONE", "OK", "Push 76 bytes (P2SH)"],
|
|
["PUSHDATA2 0x0301 PUSHDATA2 0x0001 0x7a{256}", "HASH160 DATA_20 0x1267da9e5500cb47f4e8acff217f4de2552a591e EQUAL", "NONE", "OK", "Push 256 bytes (P2SH)"],
|
|
|
|
["DATA_2 0x7a", "0x7a 'z'{2} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_2 push"],
|
|
["DATA_3 0x7a{2}", "0x7a 'z'{3} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_3 push"],
|
|
["DATA_4 0x7a{2}", "0x7a{2} 'z'{4} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_4 push"],
|
|
["DATA_5 0x7a{3}", "0x7a{2} 'z'{5} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_5 push"],
|
|
["DATA_6 0x7a{3}", "0x7a{3} 'z'{6} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_6 push"],
|
|
["DATA_7 0x7a{4}", "0x7a{3} 'z'{7} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_7 push"],
|
|
["DATA_8 0x7a{4}", "0x7a{4} 'z'{8} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_8 push"],
|
|
["DATA_9 0x7a{5}", "0x7a{4} 'z'{9} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_9 push"],
|
|
["DATA_10 0x7a{5}", "0x7a{5} 'z'{10} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_10 push"],
|
|
["DATA_11 0x7a{6}", "0x7a{5} 'z'{11} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_11 push"],
|
|
["DATA_12 0x7a{6}", "0x7a{6} 'z'{12} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_12 push"],
|
|
["DATA_13 0x7a{7}", "0x7a{6} 'z'{13} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_13 push"],
|
|
["DATA_14 0x7a{7}", "0x7a{7} 'z'{14} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_14 push"],
|
|
["DATA_15 0x7a{8}", "0x7a{7} 'z'{15} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_15 push"],
|
|
["DATA_16 0x7a{8}", "0x7a{8} 'z'{16} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_16 push"],
|
|
["DATA_17 0x7a{9}", "0x7a{8} 'z'{17} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_17 push"],
|
|
["DATA_18 0x7a{9}", "0x7a{9} 'z'{18} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_18 push"],
|
|
["DATA_19 0x7a{10}", "0x7a{9} 'z'{19} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_19 push"],
|
|
["DATA_20 0x7a{10}", "0x7a{10} 'z'{20} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_20 push"],
|
|
["DATA_21 0x7a{11}", "0x7a{10} 'z'{21} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_21 push"],
|
|
["DATA_22 0x7a{11}", "0x7a{11} 'z'{22} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_22 push"],
|
|
["DATA_23 0x7a{12}", "0x7a{11} 'z'{23} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_23 push"],
|
|
["DATA_24 0x7a{12}", "0x7a{12} 'z'{24} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_24 push"],
|
|
["DATA_25 0x7a{13}", "0x7a{12} 'z'{25} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_25 push"],
|
|
["DATA_26 0x7a{13}", "0x7a{13} 'z'{26} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_26 push"],
|
|
["DATA_27 0x7a{14}", "0x7a{13} 'z'{27} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_27 push"],
|
|
["DATA_28 0x7a{14}", "0x7a{14} 'z'{28} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_28 push"],
|
|
["DATA_29 0x7a{15}", "0x7a{14} 'z'{29} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_29 push"],
|
|
["DATA_30 0x7a{15}", "0x7a{15} 'z'{30} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_30 push"],
|
|
["DATA_31 0x7a{16}", "0x7a{15} 'z'{31} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_31 push"],
|
|
["DATA_32 0x7a{16}", "0x7a{16} 'z'{32} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_32 push"],
|
|
["DATA_33 0x7a{17}", "0x7a{16} 'z'{33} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_33 push"],
|
|
["DATA_34 0x7a{17}", "0x7a{17} 'z'{34} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_34 push"],
|
|
["DATA_35 0x7a{18}", "0x7a{17} 'z'{35} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_35 push"],
|
|
["DATA_36 0x7a{18}", "0x7a{18} 'z'{36} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_36 push"],
|
|
["DATA_37 0x7a{19}", "0x7a{18} 'z'{37} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_37 push"],
|
|
["DATA_38 0x7a{19}", "0x7a{19} 'z'{38} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_38 push"],
|
|
["DATA_39 0x7a{20}", "0x7a{19} 'z'{39} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_39 push"],
|
|
["DATA_40 0x7a{20}", "0x7a{20} 'z'{40} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_40 push"],
|
|
["DATA_41 0x7a{21}", "0x7a{20} 'z'{41} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_41 push"],
|
|
["DATA_42 0x7a{21}", "0x7a{21} 'z'{42} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_42 push"],
|
|
["DATA_43 0x7a{22}", "0x7a{21} 'z'{43} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_43 push"],
|
|
["DATA_44 0x7a{22}", "0x7a{22} 'z'{44} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_44 push"],
|
|
["DATA_45 0x7a{23}", "0x7a{22} 'z'{45} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_45 push"],
|
|
["DATA_46 0x7a{23}", "0x7a{23} 'z'{46} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_46 push"],
|
|
["DATA_47 0x7a{24}", "0x7a{23} 'z'{47} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_47 push"],
|
|
["DATA_48 0x7a{24}", "0x7a{24} 'z'{48} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_48 push"],
|
|
["DATA_49 0x7a{25}", "0x7a{24} 'z'{49} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_49 push"],
|
|
["DATA_50 0x7a{25}", "0x7a{25} 'z'{50} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_50 push"],
|
|
["DATA_51 0x7a{26}", "0x7a{25} 'z'{51} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_51 push"],
|
|
["DATA_52 0x7a{26}", "0x7a{26} 'z'{52} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_52 push"],
|
|
["DATA_53 0x7a{27}", "0x7a{26} 'z'{53} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_53 push"],
|
|
["DATA_54 0x7a{27}", "0x7a{27} 'z'{54} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_54 push"],
|
|
["DATA_55 0x7a{28}", "0x7a{27} 'z'{55} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_55 push"],
|
|
["DATA_56 0x7a{28}", "0x7a{28} 'z'{56} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_56 push"],
|
|
["DATA_57 0x7a{29}", "0x7a{28} 'z'{57} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_57 push"],
|
|
["DATA_58 0x7a{29}", "0x7a{29} 'z'{58} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_58 push"],
|
|
["DATA_59 0x7a{30}", "0x7a{29} 'z'{59} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_59 push"],
|
|
["DATA_60 0x7a{30}", "0x7a{30} 'z'{60} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_60 push"],
|
|
["DATA_61 0x7a{31}", "0x7a{30} 'z'{61} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_61 push"],
|
|
["DATA_62 0x7a{31}", "0x7a{31} 'z'{62} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_62 push"],
|
|
["DATA_63 0x7a{32}", "0x7a{31} 'z'{63} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_63 push"],
|
|
["DATA_64 0x7a{32}", "0x7a{32} 'z'{64} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_64 push"],
|
|
["DATA_65 0x7a{33}", "0x7a{32} 'z'{65} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_65 push"],
|
|
["DATA_66 0x7a{33}", "0x7a{33} 'z'{66} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_66 push"],
|
|
["DATA_67 0x7a{34}", "0x7a{33} 'z'{67} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_67 push"],
|
|
["DATA_68 0x7a{34}", "0x7a{34} 'z'{68} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_68 push"],
|
|
["DATA_69 0x7a{35}", "0x7a{34} 'z'{69} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_69 push"],
|
|
["DATA_70 0x7a{35}", "0x7a{35} 'z'{70} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_70 push"],
|
|
["DATA_71 0x7a{36}", "0x7a{35} 'z'{71} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_71 push"],
|
|
["DATA_72 0x7a{36}", "0x7a{36} 'z'{72} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_72 push"],
|
|
["DATA_73 0x7a{37}", "0x7a{36} 'z'{73} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_73 push"],
|
|
["DATA_74 0x7a{37}", "0x7a{37} 'z'{74} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_74 push"],
|
|
["DATA_75 0x7a{38}", "0x7a{37} 'z'{75} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "Straddled DATA_75 push"],
|
|
|
|
["DATA_1", "DROP 1", "NONE", "ERR_MALFORMED_PUSH", "DATA_1 push with insufficient bytes"],
|
|
["DATA_2 0x7a", "'z' EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_2 push with insufficient bytes"],
|
|
["DATA_3 0x7a{2}", "'z'{2} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_3 push with insufficient bytes"],
|
|
["DATA_4 0x7a{3}", "'z'{3} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_4 push with insufficient bytes"],
|
|
["DATA_5 0x7a{4}", "'z'{4} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_5 push with insufficient bytes"],
|
|
["DATA_6 0x7a{5}", "'z'{5} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_6 push with insufficient bytes"],
|
|
["DATA_7 0x7a{6}", "'z'{6} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_7 push with insufficient bytes"],
|
|
["DATA_8 0x7a{7}", "'z'{7} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_8 push with insufficient bytes"],
|
|
["DATA_9 0x7a{8}", "'z'{8} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_9 push with insufficient bytes"],
|
|
["DATA_10 0x7a{9}", "'z'{9} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_10 push with insufficient bytes"],
|
|
["DATA_11 0x7a{10}", "'z'{10} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_11 push with insufficient bytes"],
|
|
["DATA_12 0x7a{11}", "'z'{11} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_12 push with insufficient bytes"],
|
|
["DATA_13 0x7a{12}", "'z'{12} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_13 push with insufficient bytes"],
|
|
["DATA_14 0x7a{13}", "'z'{13} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_14 push with insufficient bytes"],
|
|
["DATA_15 0x7a{14}", "'z'{14} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_15 push with insufficient bytes"],
|
|
["DATA_16 0x7a{15}", "'z'{15} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_16 push with insufficient bytes"],
|
|
["DATA_17 0x7a{16}", "'z'{16} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_17 push with insufficient bytes"],
|
|
["DATA_18 0x7a{17}", "'z'{17} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_18 push with insufficient bytes"],
|
|
["DATA_19 0x7a{18}", "'z'{18} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_19 push with insufficient bytes"],
|
|
["DATA_20 0x7a{19}", "'z'{19} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_20 push with insufficient bytes"],
|
|
["DATA_21 0x7a{20}", "'z'{20} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_21 push with insufficient bytes"],
|
|
["DATA_22 0x7a{21}", "'z'{21} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_22 push with insufficient bytes"],
|
|
["DATA_23 0x7a{22}", "'z'{22} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_23 push with insufficient bytes"],
|
|
["DATA_24 0x7a{23}", "'z'{23} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_24 push with insufficient bytes"],
|
|
["DATA_25 0x7a{24}", "'z'{24} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_25 push with insufficient bytes"],
|
|
["DATA_26 0x7a{25}", "'z'{25} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_26 push with insufficient bytes"],
|
|
["DATA_27 0x7a{26}", "'z'{26} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_27 push with insufficient bytes"],
|
|
["DATA_28 0x7a{27}", "'z'{27} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_28 push with insufficient bytes"],
|
|
["DATA_29 0x7a{28}", "'z'{28} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_29 push with insufficient bytes"],
|
|
["DATA_30 0x7a{29}", "'z'{29} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_30 push with insufficient bytes"],
|
|
["DATA_31 0x7a{30}", "'z'{30} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_31 push with insufficient bytes"],
|
|
["DATA_32 0x7a{31}", "'z'{31} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_32 push with insufficient bytes"],
|
|
["DATA_33 0x7a{32}", "'z'{32} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_33 push with insufficient bytes"],
|
|
["DATA_34 0x7a{33}", "'z'{33} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_34 push with insufficient bytes"],
|
|
["DATA_35 0x7a{34}", "'z'{34} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_35 push with insufficient bytes"],
|
|
["DATA_36 0x7a{35}", "'z'{35} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_36 push with insufficient bytes"],
|
|
["DATA_37 0x7a{36}", "'z'{36} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_37 push with insufficient bytes"],
|
|
["DATA_38 0x7a{37}", "'z'{37} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_38 push with insufficient bytes"],
|
|
["DATA_39 0x7a{38}", "'z'{38} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_39 push with insufficient bytes"],
|
|
["DATA_40 0x7a{39}", "'z'{39} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_40 push with insufficient bytes"],
|
|
["DATA_41 0x7a{40}", "'z'{40} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_41 push with insufficient bytes"],
|
|
["DATA_42 0x7a{41}", "'z'{41} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_42 push with insufficient bytes"],
|
|
["DATA_43 0x7a{42}", "'z'{42} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_43 push with insufficient bytes"],
|
|
["DATA_44 0x7a{43}", "'z'{43} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_44 push with insufficient bytes"],
|
|
["DATA_45 0x7a{44}", "'z'{44} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_45 push with insufficient bytes"],
|
|
["DATA_46 0x7a{45}", "'z'{45} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_46 push with insufficient bytes"],
|
|
["DATA_47 0x7a{46}", "'z'{46} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_47 push with insufficient bytes"],
|
|
["DATA_48 0x7a{47}", "'z'{47} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_48 push with insufficient bytes"],
|
|
["DATA_49 0x7a{48}", "'z'{48} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_49 push with insufficient bytes"],
|
|
["DATA_50 0x7a{49}", "'z'{49} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_50 push with insufficient bytes"],
|
|
["DATA_51 0x7a{50}", "'z'{50} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_51 push with insufficient bytes"],
|
|
["DATA_52 0x7a{51}", "'z'{51} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_52 push with insufficient bytes"],
|
|
["DATA_53 0x7a{52}", "'z'{52} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_53 push with insufficient bytes"],
|
|
["DATA_54 0x7a{53}", "'z'{53} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_54 push with insufficient bytes"],
|
|
["DATA_55 0x7a{54}", "'z'{54} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_55 push with insufficient bytes"],
|
|
["DATA_56 0x7a{55}", "'z'{55} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_56 push with insufficient bytes"],
|
|
["DATA_57 0x7a{56}", "'z'{56} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_57 push with insufficient bytes"],
|
|
["DATA_58 0x7a{57}", "'z'{57} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_58 push with insufficient bytes"],
|
|
["DATA_59 0x7a{58}", "'z'{58} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_59 push with insufficient bytes"],
|
|
["DATA_60 0x7a{59}", "'z'{59} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_60 push with insufficient bytes"],
|
|
["DATA_61 0x7a{60}", "'z'{60} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_61 push with insufficient bytes"],
|
|
["DATA_62 0x7a{61}", "'z'{61} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_62 push with insufficient bytes"],
|
|
["DATA_63 0x7a{62}", "'z'{62} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_63 push with insufficient bytes"],
|
|
["DATA_64 0x7a{63}", "'z'{63} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_64 push with insufficient bytes"],
|
|
["DATA_65 0x7a{64}", "'z'{64} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_65 push with insufficient bytes"],
|
|
["DATA_66 0x7a{65}", "'z'{65} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_66 push with insufficient bytes"],
|
|
["DATA_67 0x7a{66}", "'z'{66} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_67 push with insufficient bytes"],
|
|
["DATA_68 0x7a{67}", "'z'{67} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_68 push with insufficient bytes"],
|
|
["DATA_69 0x7a{68}", "'z'{68} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_69 push with insufficient bytes"],
|
|
["DATA_70 0x7a{69}", "'z'{69} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_70 push with insufficient bytes"],
|
|
["DATA_71 0x7a{70}", "'z'{70} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_71 push with insufficient bytes"],
|
|
["DATA_72 0x7a{71}", "'z'{71} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_72 push with insufficient bytes"],
|
|
["DATA_73 0x7a{72}", "'z'{72} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_73 push with insufficient bytes"],
|
|
["DATA_74 0x7a{73}", "'z'{73} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_74 push with insufficient bytes"],
|
|
["DATA_75 0x7a{74}", "'z'{74} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "DATA_75 push with insufficient bytes"],
|
|
|
|
["Numeric pushes"],
|
|
["NOTE: Hashing is used here instead of a basic EQUAL check because minimal"],
|
|
["data encoding requirements intentionally prevent pushing the expected "],
|
|
["encodings via non-minimally-encoded means"],
|
|
["0x4f BLAKE256", "DATA_32 0x4d027c9c59526f03215b5f0f0cefdc84cc60d8cc810e4139e6d9c9a431525fbd EQUAL", "NONE", "OK", "OP1_NEGATE pushes 0x81"],
|
|
["0x51 BLAKE256", "DATA_32 0x4a6c419a1e25c85327115c4ace586decddfe2990ed8f3d4d801871158338501d EQUAL", "NONE", "OK", "OP_1 pushes 0x01"],
|
|
["0x52 BLAKE256", "DATA_32 0x49af37ab5270015fe25276ea5a3bb159d852943df23919522a202205fb7d175c EQUAL", "NONE", "OK", "OP_2 pushes 0x02"],
|
|
["0x53 BLAKE256", "DATA_32 0xb706d561742ad3671703c247eb927ee8a386369c79644131cdeb2c5c26bf6c5d EQUAL", "NONE", "OK", "OP_3 pushes 0x03"],
|
|
["0x54 BLAKE256", "DATA_32 0x4c6eb9e38415034f4c93d3304d10bef38bf0ad420eefd0f72f940f11c5857786 EQUAL", "NONE", "OK", "OP_4 pushes 0x04"],
|
|
["0x55 BLAKE256", "DATA_32 0xbdd15db13448905791a70b68137445e607cca06cc71c7a58b9b2e84a06c54d08 EQUAL", "NONE", "OK", "OP_5 pushes 0x05"],
|
|
["0x56 BLAKE256", "DATA_32 0x19b7506ad9c189a9f8b063d2aee15953d335f5c88480f8515d7d848e7771c4ae EQUAL", "NONE", "OK", "OP_6 pushes 0x06"],
|
|
["0x57 BLAKE256", "DATA_32 0x53d661e71e47a0a7e416591200175122d83f8af31be6a70af7417ad6f54d0038 EQUAL", "NONE", "OK", "OP_7 pushes 0x07"],
|
|
["0x58 BLAKE256", "DATA_32 0x9bff7982eab6f7883322edf7bdc86a23c87ca1c07906fbb1584f57b197dc6253 EQUAL", "NONE", "OK", "OP_8 pushes 0x08"],
|
|
["0x59 BLAKE256", "DATA_32 0x4c2231813064f8500edae05b40195416bd543fd3e76c16d6efb10c816d92e8b6 EQUAL", "NONE", "OK", "OP_9 pushes 0x09"],
|
|
["0x5a BLAKE256", "DATA_32 0xe81db4f0d76e02805155441f50c861a8f86374f3ae34c7a3ff4111d3a634ecb1 EQUAL", "NONE", "OK", "OP_10 pushes 0x0a"],
|
|
["0x5b BLAKE256", "DATA_32 0x7b527886ee0077f7b9de295e0b26274a674e9f12dca3742e03dfe78f5bf12857 EQUAL", "NONE", "OK", "OP_11 pushes 0x0b"],
|
|
["0x5c BLAKE256", "DATA_32 0x61a3403f9ab5bc334aedf2a2c37ad4c0775253931f73570cb1678c7de19a1a80 EQUAL", "NONE", "OK", "OP_12 pushes 0x0c"],
|
|
["0x5d BLAKE256", "DATA_32 0x6092ac5feb62cad3907a91676021b4c460a272b40e0b3f57f88cef11c7d25e58 EQUAL", "NONE", "OK", "OP_13 pushes 0x0d"],
|
|
["0x5e BLAKE256", "DATA_32 0x092d2a458ec34dbe2a94ab0825bba9f8a07cbcef9985b6785bb064973927e928 EQUAL", "NONE", "OK", "OP_14 pushes 0x0e"],
|
|
["0x5f BLAKE256", "DATA_32 0x9d5d7e592b9ca7b007b344445adb47dbb64f15a9223640156d1bedbfd2d5e577 EQUAL", "NONE", "OK", "OP_15 pushes 0x0f"],
|
|
["0x60 BLAKE256", "DATA_32 0x7d9ae6d1056b2848f21a77227e2e3b66e3d42acf1a62da6c6f9670568d76968b EQUAL", "NONE", "OK", "OP_16 pushes 0x10"],
|
|
|
|
["PUSHDATA1 test coverage"],
|
|
["PUSHDATA1 0x4c 0x61{76}","'a'{76} EQUAL", "NONE", "OK", "Push 76 bytes"],
|
|
["PUSHDATA1 0x05 0x61{4}","'a'{5} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "PUSHDATA1 with insufficient bytes"],
|
|
["PUSHDATA1 0x01 0x61{1}","'a'{1} EQUAL", "NONE", "ERR_MINIMAL_DATA", "PUSHDATA1 instead of OP_DATA_1"],
|
|
["0x4c 0x4c 0x61{76}","'a'{76} EQUAL", "NONE", "OK", "0x4c is OP_PUSHDATA1"],
|
|
["0x40 0x42{64}", "0x4d 0x4000 0x42{64} EQUAL", "NONE", "ERR_MINIMAL_DATA", "Basic PUSH signedness check rejected by minimal data encoding requirements"],
|
|
["0x4c 0x40 0x42{64}", "0x4d 0x4000 0x42{64} EQUAL", "NONE", "ERR_MINIMAL_DATA", "Basic PUSHDATA1 signedness check rejected by minimal data encoding requirements"],
|
|
["0x4c 0x4b 0x11{75}", "0x4b 0x11{75} EQUAL", "NONE", "ERR_MINIMAL_DATA", "PUSHDATA1 of 75 bytes equals direct push of it but rejected by minimal data encoding requirements"],
|
|
["PUSHDATA1 0x4c 0x61{38}", "0x61{38}", "NONE", "ERR_MALFORMED_PUSH", "Straddled PUSHDATA1"],
|
|
|
|
["PUSHDATA2 test coverage"],
|
|
["PUSHDATA2 0x0001 0x62{256}","'b'{256} EQUAL", "NONE", "OK", "Push 256 bytes"],
|
|
["PUSHDATA2 0x0500 0x61{4}","'a'{5} EQUAL", "NONE", "ERR_MALFORMED_PUSH", "PUSHDATA1 with insufficient bytes"],
|
|
["PUSHDATA2 0x0100 0x62{1}","'b'{1} EQUAL", "NONE", "ERR_MINIMAL_DATA", "PUSHDATA2 instead of DATA_1"],
|
|
["0x4d 0x0001 0x62{256}","'b'{256} EQUAL", "NONE", "OK", "0x4d is OP_PUSHDATA2"],
|
|
["0x4d 0xff00 0x11{255}", "0x4c 0xff 0x11{255} EQUAL", "NONE", "ERR_MINIMAL_DATA", "PUSHDATA2 instead of PUSHDATA1"],
|
|
["OP_PUSHDATA2 0x0001 0x61{128}","0x61{128}", "NONE", "ERR_MALFORMED_PUSH", "Straddled PUSHDATA2"],
|
|
|
|
["PUSHDATA4 test coverage"],
|
|
["NOTE: OP_PUSHDATA4 is not possible to use without error due to the minimal"],
|
|
["data requirements enforcing a smallest data push with it of 65,536 which is"],
|
|
["greater than the max script size of 16,384"],
|
|
|
|
["PUSHDATA4 0x00010000 0x62{256}","'b'{256} EQUAL", "NONE", "ERR_MINIMAL_DATA", "PUSHDATA4 instead of PUSHDATA2"],
|
|
["PUSHDATA4 0x01000000 0x62{1}","'b'{1} EQUAL", "NONE", "ERR_MINIMAL_DATA", "PUSHDATA4 instead of DATA_1"],
|
|
["PUSHDATA4 0x4c000000 0x62{76}","'b'{76} EQUAL", "NONE", "ERR_MINIMAL_DATA", "PUSHDATA4 instead of PUSHDATA1"],
|
|
|
|
["MINIMALDATA enforcement for PUSHDATAs"],
|
|
["0x4c 0x00", "DROP 1", "NONE", "ERR_MINIMAL_DATA", "Empty vector minimally represented by OP_0 (OP_PUSHDATA1)"],
|
|
["0x4d 0x0000", "DROP 1", "NONE", "ERR_MINIMAL_DATA", "Empty vector minimally represented by OP_0 (OP_PUSHDATA2)"],
|
|
["0x4e 0x00000000", "DROP 1", "NONE", "ERR_MINIMAL_DATA", "Empty vector minimally represented by OP_0 (OP_PUSHDATA4)"],
|
|
["0x01 0x81", "DROP 1", "NONE", "ERR_MINIMAL_DATA", "-1 minimally represented by OP_1NEGATE"],
|
|
["0x01 0x01", "DROP 1", "NONE", "ERR_MINIMAL_DATA", "1 to 16 minimally represented by OP_1 to OP_16"],
|
|
["0x01 0x02", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x03", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x04", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x05", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x06", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x07", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x08", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x09", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x0a", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x0b", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x0c", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x0d", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x0e", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x0f", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x01 0x10", "DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x4c 0x48 0x11{72}", "DROP 1", "NONE", "ERR_MINIMAL_DATA", "PUSHDATA1 of 72 bytes minimally represented by direct push"],
|
|
["0x4d 0xFF00 0x11{255}", "DROP 1", "NONE", "ERR_MINIMAL_DATA", "PUSHDATA2 of 255 bytes minimally represented by PUSHDATA1"],
|
|
["0x4e 0x00010000 0x11{256}", "DROP 1", "NONE", "ERR_MINIMAL_DATA", "PUSHDATA4 of 256 bytes minimally represented by PUSHDATA2"],
|
|
|
|
["Numeric MINIMALDATA rules are only applied when a stack item is numerically evaluated; the push itself is allowed"],
|
|
["0x01 0x00", "1", "NONE", "OK"],
|
|
["0x01 0x80", "1", "NONE", "OK"],
|
|
["0x02 0x0180", "1", "NONE", "OK"],
|
|
["0x02 0x0100", "1", "NONE", "OK"],
|
|
["0x02 0x0200", "1", "NONE", "OK"],
|
|
["0x02 0x0300", "1", "NONE", "OK"],
|
|
["0x02 0x0400", "1", "NONE", "OK"],
|
|
["0x02 0x0500", "1", "NONE", "OK"],
|
|
["0x02 0x0600", "1", "NONE", "OK"],
|
|
["0x02 0x0700", "1", "NONE", "OK"],
|
|
["0x02 0x0800", "1", "NONE", "OK"],
|
|
["0x02 0x0900", "1", "NONE", "OK"],
|
|
["0x02 0x0a00", "1", "NONE", "OK"],
|
|
["0x02 0x0b00", "1", "NONE", "OK"],
|
|
["0x02 0x0c00", "1", "NONE", "OK"],
|
|
["0x02 0x0d00", "1", "NONE", "OK"],
|
|
["0x02 0x0e00", "1", "NONE", "OK"],
|
|
["0x02 0x0f00", "1", "NONE", "OK"],
|
|
["0x02 0x1000", "1", "NONE", "OK"],
|
|
|
|
["MINIMALDATA enforcement for numeric arguments"],
|
|
["0x01 0x00", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "numequals 0"],
|
|
["0x02 0x0000", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "numequals 0"],
|
|
["0x01 0x80", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "0x80 (negative zero) numequals 0"],
|
|
["0x02 0x0080", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "numequals 0"],
|
|
["0x02 0x0500", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "numequals 5"],
|
|
["0x03 0x050000", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "numequals 5"],
|
|
["0x02 0x0580", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "numequals -5"],
|
|
["0x03 0x050080", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "numequals -5"],
|
|
["0x03 0xff7f80", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "Minimal encoding is 0xffff"],
|
|
["0x03 0xff7f00", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "Minimal encoding is 0xff7f"],
|
|
["0x04 0xffff7f80", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "Minimal encoding is 0xffffff"],
|
|
["0x04 0xffff7f00", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "Minimal encoding is 0xffff7f"],
|
|
|
|
["1NEGATE test coverage"],
|
|
["1NEGATE", "-1 EQUAL", "NONE", "OK", "Push -1 to the stack"],
|
|
["DATA_3 1NEGATE -1 EQUAL", "HASH160 DATA_20 0x26668528b1e2a23cdbaf143f30399fcff13b7290 EQUAL", "NONE", "OK", "1NEGATE P2SH"],
|
|
|
|
["RESERVED test coverage"],
|
|
["RESERVED", "RESERVED EQUAL", "NONE", "ERR_RESERVED_OPCODE", "RESERVED is a reserved opcode"],
|
|
["0", "IF 0x50{255} ENDIF 1", "NONE", "OK", ">255 opcodes, but RESERVED (0x50) doesn't count towards opcode limit"],
|
|
["0 0x01 0x50", "HASH160 0x14 0x77c33ee1f1892b124f2c9aaed62114c23cffe2da EQUAL", "NONE", "ERR_RESERVED_OPCODE", "OP_RESERVED in P2SH should fail"],
|
|
|
|
["TRUE test coverage"],
|
|
["TRUE", "1 EQUAL", "NONE", "OK"],
|
|
["TRUE", "0 EQUAL", "NONE", "ERR_EVAL_FALSE"],
|
|
["DATA_1 OP_TRUE", "HASH160 DATA_20 0xf5a8302ee8695bf836258b8f2b57b38a0be14e47 EQUAL", "NONE", "OK", "OP_TRUE P2SH"],
|
|
|
|
["OP_[2...16] test coverage"],
|
|
["OP_2", "2 EQUAL", "NONE", "OK", "Push 2"],
|
|
["DATA_3 OP_2 2 EQUAL", "HASH160 DATA_20 0x100bd7a771b231693d4efcd86a33cac9e25e67ca EQUAL", "NONE", "OK", "OP_2 P2SH"],
|
|
["OP_3", "3 EQUAL", "NONE", "OK", "Push 3"],
|
|
["DATA_3 OP_3 3 EQUAL", "HASH160 DATA_20 0x28709532a7a00de1bb7c70e8bdc114bfb13c5a44 EQUAL", "NONE", "OK", "OP_3 P2SH"],
|
|
["OP_4", "4 EQUAL", "NONE", "OK", "Push 4"],
|
|
["DATA_3 OP_4 4 EQUAL", "HASH160 DATA_20 0x1bc2034f824cecb73ff0bcbc2bdbc96c4ad96f75 EQUAL", "NONE", "OK", "OP_4 P2SH"],
|
|
["OP_5", "5 EQUAL", "NONE", "OK", "Push 5"],
|
|
["DATA_3 OP_5 5 EQUAL", "HASH160 DATA_20 0x99c898d0e6460d901c06c089774c3f1c40101171 EQUAL", "NONE", "OK", "OP_5 P2SH"],
|
|
["OP_6", "6 EQUAL", "NONE", "OK", "Push 6"],
|
|
["DATA_3 OP_6 6 EQUAL", "HASH160 DATA_20 0xc2f8e02d241d52dfe19248495d0fddfd42bda287 EQUAL", "NONE", "OK", "OP_6 P2SH"],
|
|
["OP_7", "7 EQUAL", "NONE", "OK", "Push 7"],
|
|
["DATA_3 OP_7 7 EQUAL", "HASH160 DATA_20 0x20a892106ac63a10976899eb7783f997236ae9fa EQUAL", "NONE", "OK", "OP_7 P2SH"],
|
|
["OP_8", "8 EQUAL", "NONE", "OK", "Push 8"],
|
|
["DATA_3 OP_8 8 EQUAL", "HASH160 DATA_20 0x123722d2f009cf2895e81e9ce0c80f11b68f0158 EQUAL", "NONE", "OK", "OP_8 P2SH"],
|
|
["OP_9", "9 EQUAL", "NONE", "OK", "Push 9"],
|
|
["DATA_3 OP_9 9 EQUAL", "HASH160 DATA_20 0xbda0fe899d36a847e9d9907a926a009a2d702b12 EQUAL", "NONE", "OK", "OP_9 P2SH"],
|
|
["OP_10", "10 EQUAL", "NONE", "OK", "Push 10"],
|
|
["DATA_3 OP_10 10 EQUAL", "HASH160 DATA_20 0xc05f91a40d29ad14b998064b0cf48cc016e75492 EQUAL", "NONE", "OK", "OP_10 P2SH"],
|
|
["OP_11", "11 EQUAL", "NONE", "OK", "Push 11"],
|
|
["DATA_3 OP_11 11 EQUAL", "HASH160 DATA_20 0x4b461684ed1c062834019313e68a5e7ae84f47dc EQUAL", "NONE", "OK", "OP_11 P2SH"],
|
|
["OP_12", "12 EQUAL", "NONE", "OK", "Push 12"],
|
|
["DATA_3 OP_12 12 EQUAL", "HASH160 DATA_20 0x3b5e03a3b31c924c02b0e522924872ab97f87603 EQUAL", "NONE", "OK", "OP_12 P2SH"],
|
|
["OP_13", "13 EQUAL", "NONE", "OK", "Push 13"],
|
|
["DATA_3 OP_13 13 EQUAL", "HASH160 DATA_20 0x638583eb0cba2112aa3d1171904d8a9c467eb3d9 EQUAL", "NONE", "OK", "OP_13 P2SH"],
|
|
["OP_14", "14 EQUAL", "NONE", "OK", "Push 14"],
|
|
["DATA_3 OP_14 14 EQUAL", "HASH160 DATA_20 0x0a5e97386b5356310f6cec3ba13cceed957490c1 EQUAL", "NONE", "OK", "OP_14 P2SH"],
|
|
["OP_15", "15 EQUAL", "NONE", "OK", "Push 15"],
|
|
["DATA_3 OP_15 15 EQUAL", "HASH160 DATA_20 0xe962badd554dde0343bceba56dd53fa9f53cab57 EQUAL", "NONE", "OK", "OP_15 P2SH"],
|
|
["OP_16", "16 EQUAL", "NONE", "OK", "Push 16"],
|
|
["DATA_3 OP_16 16 EQUAL", "HASH160 DATA_20 0xbefc815ce6c3d1e10f1756d7055b24aec5931de9 EQUAL", "NONE", "OK", "OP_16 P2SH"],
|
|
|
|
["Control opcode tests"],
|
|
|
|
["NOP test coverage"],
|
|
["NOP", "NOP 1", "NONE", "OK"],
|
|
["1 DATA_1 NOP", "HASH160 DATA_20 0x8704ae49993a1b72b8a8b28decc7f9e58be752ce EQUAL", "NONE", "OK", "NOP P2SH"],
|
|
["0","NOP", "NONE", "ERR_EVAL_FALSE"],
|
|
["1","NOP", "NONE", "OK"],
|
|
|
|
["VER test coverage"],
|
|
["1","VER", "NONE", "ERR_RESERVED_OPCODE", "OP_VER is reserved"],
|
|
["1", "IF VER ELSE 1 ENDIF", "NONE", "ERR_RESERVED_OPCODE", "VER non-functional"],
|
|
["0 0x01 VER", "HASH160 0x14 0xe682277f7669fe986d315d52b56df3d244da11a0 EQUAL", "NONE", "ERR_RESERVED_OPCODE", "OP_VER in P2SH should fail"],
|
|
|
|
["IF test coverage"],
|
|
["NOP", "IF 1 ENDIF", "NONE", "ERR_INVALID_STACK_OPERATION", "IF requires an item on the stack and NOP must not be treated as one"],
|
|
["1", "DUP IF ENDIF", "NONE", "OK"],
|
|
["1", "IF 1 ENDIF", "NONE", "OK"],
|
|
["1", "DUP IF ELSE ENDIF", "NONE", "OK"],
|
|
["1", "IF 1 ELSE ENDIF", "NONE", "OK"],
|
|
["0", "IF ELSE 1 ENDIF", "NONE", "OK"],
|
|
["1 1", "IF IF 1 ELSE 0 ENDIF ENDIF", "NONE", "OK"],
|
|
["1 0", "IF IF 1 ELSE 0 ENDIF ENDIF", "NONE", "OK"],
|
|
["1 1", "IF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF", "NONE", "OK"],
|
|
["0 0", "IF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF", "NONE", "OK"],
|
|
["0", "IF 0 ELSE 1 ELSE 0 ENDIF", "NONE", "OK", "Multiple ELSE's are valid and executed inverts on each ELSE encountered"],
|
|
["1", "IF 1 ELSE 0 ELSE ENDIF", "NONE", "OK"],
|
|
["1", "IF ELSE 0 ELSE 1 ENDIF", "NONE", "OK"],
|
|
["1", "IF 1 ELSE 0 ELSE 1 ENDIF ADD 2 EQUAL", "NONE", "OK"],
|
|
["1 2 0 IF AND ELSE 1 ENDIF", "NOP", "NONE", "OK"],
|
|
["1 2 0 IF OR ELSE 1 ENDIF", "NOP", "NONE", "OK"],
|
|
["1 2 0 IF XOR ELSE 1 ENDIF", "NOP", "NONE", "OK"],
|
|
["2 0 IF 2MUL ELSE 1 ENDIF", "NOP", "NONE", "OK"],
|
|
["2 0 IF 2DIV ELSE 1 ENDIF", "NOP", "NONE", "OK"],
|
|
["2 2 0 IF MUL ELSE 1 ENDIF", "NOP", "NONE", "OK"],
|
|
["2 2 0 IF DIV ELSE 1 ENDIF", "NOP", "NONE", "OK"],
|
|
["2 2 0 IF MOD ELSE 1 ENDIF", "NOP", "NONE", "OK"],
|
|
["2 2 0 IF LSHIFT ELSE 1 ENDIF", "NOP", "NONE", "OK"],
|
|
["2 2 0 IF RSHIFT ELSE 1 ENDIF", "NOP", "NONE", "OK"],
|
|
["'' 1", "IF SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ENDIF 0x14 0x68ca4fec736264c13b859bac43d5173df6871682 EQUAL", "NONE", "OK"],
|
|
["0", "IF 1 IF RETURN ELSE RETURN ELSE RETURN ENDIF ELSE 1 IF 1 ELSE RETURN ELSE 1 ENDIF ELSE RETURN ENDIF ADD 2 EQUAL", "NONE", "OK", "Nested ELSE ELSE"],
|
|
["1 0x01 0x80", "IF 0 ENDIF", "NONE", "OK", "negative 0 is false"],
|
|
["0 DATA_4 IF ELSE 1 ENDIF", "HASH160 DATA_20 0x019810664cc457334fd8ddbd4b357d67e6205925 EQUAL", "NONE", "OK", "IF P2SH"],
|
|
["1", "IF 0x50 ENDIF 1", "NONE", "ERR_RESERVED_OPCODE", "0x50 is reserved"],
|
|
["0", "DUP IF ENDIF", "NONE", "ERR_EVAL_FALSE"],
|
|
["0", "IF 1 ENDIF", "NONE", "ERR_EMPTY_STACK"],
|
|
["0", "DUP IF ELSE ENDIF", "NONE", "ERR_EVAL_FALSE"],
|
|
["0", "IF 1 ELSE ENDIF", "NONE", "ERR_EMPTY_STACK"],
|
|
["1", "IF ELSE ENDIF ELSE", "NONE", "ERR_UNBALANCED_CONDITIONAL"],
|
|
["1", "IF ELSE ENDIF ELSE ENDIF", "NONE", "ERR_UNBALANCED_CONDITIONAL"],
|
|
["1", "IF ENDIF ENDIF", "NONE", "ERR_UNBALANCED_CONDITIONAL"],
|
|
["1", "IF ELSE ELSE ENDIF ENDIF", "NONE", "ERR_UNBALANCED_CONDITIONAL"],
|
|
["0 1", "IF IF 1 ELSE 0 ENDIF ENDIF", "NONE", "ERR_EVAL_FALSE"],
|
|
["0 0", "IF IF 1 ELSE 0 ENDIF ENDIF", "NONE", "ERR_EVAL_FALSE"],
|
|
["1 0", "IF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF", "NONE", "ERR_EVAL_FALSE"],
|
|
["0 1", "IF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF", "NONE", "ERR_EVAL_FALSE"],
|
|
["1", "IF 1", "NONE", "ERR_UNBALANCED_CONDITIONAL", "IF without ENDIF"],
|
|
["1 IF 1", "ENDIF", "NONE", "ERR_UNBALANCED_CONDITIONAL", "IFs don't carry over"],
|
|
["0", "IF 'b'{2049} ENDIF 1", "NONE", "ERR_PUSH_SIZE", ">2048 byte push in non-executed IF branch"],
|
|
["0", "IF <NOP>{256} ENDIF 1", "NONE", "ERR_OP_COUNT", ">255 opcodes including non-executed IF branch"],
|
|
["1 IF", "1 ENDIF", "NONE", "ERR_UNBALANCED_CONDITIONAL", "IF/ENDIF can't span scriptSig/scriptPubKey"],
|
|
["1 IF 0 ENDIF", "1 ENDIF", "NONE", "ERR_UNBALANCED_CONDITIONAL"],
|
|
["1 IF 1 ELSE", "0xff ENDIF", "NONE", "ERR_UNBALANCED_CONDITIONAL", "Invalid because scriptSig and scriptPubKey are processed separately"],
|
|
|
|
["Unevaluated non-minimal pushes are ignored"],
|
|
["0 IF 0x4c 0x00 ENDIF 1", "", "NONE", "OK", "non-minimal PUSHDATA1 ignored"],
|
|
["0 IF 0x4d 0x0000 ENDIF 1", "", "NONE", "OK", "non-minimal PUSHDATA2 ignored"],
|
|
["0 IF 0x4c 0x00000000 ENDIF 1", "", "NONE", "OK", "non-minimal PUSHDATA4 ignored"],
|
|
["0 IF 0x01 0x81 ENDIF 1", "", "NONE", "OK", "1NEGATE equiv"],
|
|
["0 IF 0x01 0x01 ENDIF 1", "", "NONE", "OK", "OP_1 equiv"],
|
|
["0 IF 0x01 0x02 ENDIF 1", "", "NONE", "OK", "OP_2 equiv"],
|
|
["0 IF 0x01 0x03 ENDIF 1", "", "NONE", "OK", "OP_3 equiv"],
|
|
["0 IF 0x01 0x04 ENDIF 1", "", "NONE", "OK", "OP_4 equiv"],
|
|
["0 IF 0x01 0x05 ENDIF 1", "", "NONE", "OK", "OP_5 equiv"],
|
|
["0 IF 0x01 0x06 ENDIF 1", "", "NONE", "OK", "OP_6 equiv"],
|
|
["0 IF 0x01 0x07 ENDIF 1", "", "NONE", "OK", "OP_7 equiv"],
|
|
["0 IF 0x01 0x08 ENDIF 1", "", "NONE", "OK", "OP_8 equiv"],
|
|
["0 IF 0x01 0x09 ENDIF 1", "", "NONE", "OK", "OP_9 equiv"],
|
|
["0 IF 0x01 0x0a ENDIF 1", "", "NONE", "OK", "OP_10 equiv"],
|
|
["0 IF 0x01 0x0b ENDIF 1", "", "NONE", "OK", "OP_11 equiv"],
|
|
["0 IF 0x01 0x0c ENDIF 1", "", "NONE", "OK", "OP_12 equiv"],
|
|
["0 IF 0x01 0x0d ENDIF 1", "", "NONE", "OK", "OP_13 equiv"],
|
|
["0 IF 0x01 0x0e ENDIF 1", "", "NONE", "OK", "OP_14 equiv"],
|
|
["0 IF 0x01 0x0f ENDIF 1", "", "NONE", "OK", "OP_15 equiv"],
|
|
["0 IF 0x01 0x10 ENDIF 1", "", "NONE", "OK", "OP_16 equiv"],
|
|
|
|
["NOTIF test coverage"],
|
|
["NOP", "NOTIF 1 ENDIF", "NONE", "ERR_INVALID_STACK_OPERATION", "NOTIF requires an item on the stack, the stack has no items"],
|
|
["NOP", "NOTIF 1 ENDIF", "NONE", "ERR_INVALID_STACK_OPERATION", "NOTIF requires an item on the stack and NOP must not be treated as one"],
|
|
["1 0", "NOTIF IF 1 ELSE 0 ENDIF ENDIF", "NONE", "OK"],
|
|
["1 1", "NOTIF IF 1 ELSE 0 ENDIF ENDIF", "NONE", "OK"],
|
|
["1 0", "NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF", "NONE", "OK"],
|
|
["0 1", "NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF", "NONE", "OK"],
|
|
["1", "NOTIF 0 NOTIF RETURN ELSE RETURN ELSE RETURN ENDIF ELSE 0 NOTIF 1 ELSE RETURN ELSE 1 ENDIF ELSE RETURN ENDIF ADD 2 EQUAL", "NONE", "OK"],
|
|
["1", "NOTIF 0 ELSE 1 ELSE 0 ENDIF", "NONE", "OK", "Multiple ELSE's are valid and execution inverts on each ELSE encountered"],
|
|
["0", "NOTIF 1 ELSE 0 ELSE ENDIF", "NONE", "OK"],
|
|
["0", "NOTIF ELSE 0 ELSE 1 ENDIF", "NONE", "OK"],
|
|
["0", "NOTIF 1 ENDIF", "NONE", "OK"],
|
|
["0", "NOTIF 1 ELSE 0 ELSE 1 ENDIF ADD 2 EQUAL", "NONE", "OK"],
|
|
["'' 0", "NOTIF SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ELSE ELSE SHA1 ENDIF 0x14 0x68ca4fec736264c13b859bac43d5173df6871682 EQUAL", "NONE", "OK"],
|
|
["0 DATA_3 NOTIF 1 ENDIF", "HASH160 DATA_20 0x50ecaee87d180ab804aa579dab0480ceb4621d8d EQUAL", "NONE", "OK", "NOTIF P2SH"],
|
|
["0", "NOTIF ELSE 1 ENDIF", "NONE", "ERR_EMPTY_STACK"],
|
|
["0 0", "NOTIF IF 1 ELSE 0 ENDIF ENDIF", "NONE", "ERR_EVAL_FALSE"],
|
|
["0 1", "NOTIF IF 1 ELSE 0 ENDIF ENDIF", "NONE", "ERR_EVAL_FALSE"],
|
|
["1 1", "NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF", "NONE", "ERR_EVAL_FALSE"],
|
|
["0 0", "NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF", "NONE", "ERR_EVAL_FALSE"],
|
|
["0 NOTIF", "123", "NONE", "ERR_UNBALANCED_CONDITIONAL"],
|
|
|
|
["VERIF test coverage"],
|
|
["0", "IF ELSE 1 ELSE VERIF ENDIF", "NONE", "ERR_RESERVED_OPCODE", "VERIF illegal everywhere"],
|
|
["1","VERIF", "NONE", "ERR_RESERVED_OPCODE", "OP_VERIF is reserved"],
|
|
["0", "IF VERIF ELSE 1 ENDIF", "NONE", "ERR_RESERVED_OPCODE", "VERIF illegal everywhere"],
|
|
|
|
["VERNOTIF test coverage"],
|
|
["0", "IF ELSE 1 ELSE VERNOTIF ENDIF", "NONE", "ERR_RESERVED_OPCODE", "VERNOTIF illegal everywhere"],
|
|
["1","VERNOTIF", "NONE", "ERR_RESERVED_OPCODE", "OP_VERNOTIF is reserved"],
|
|
["0", "IF VERNOTIF ELSE 1 ENDIF", "NONE", "ERR_RESERVED_OPCODE", "VERNOTIF illegal everywhere"],
|
|
|
|
["ENDIF test coverage"],
|
|
["1", "1 ENDIF", "NONE", "ERR_UNBALANCED_CONDITIONAL", "ENDIF without IF"],
|
|
["1 ELSE 0 ENDIF", "1", "NONE", "ERR_UNBALANCED_CONDITIONAL"],
|
|
["1", "ELSE ENDIF", "NONE", "ERR_UNBALANCED_CONDITIONAL"],
|
|
["1", "ENDIF", "NONE", "ERR_UNBALANCED_CONDITIONAL", "Malformed IF/ELSE/ENDIF sequence"],
|
|
["1", "ENDIF ELSE", "NONE", "ERR_UNBALANCED_CONDITIONAL"],
|
|
["1", "ENDIF ELSE IF", "NONE", "ERR_UNBALANCED_CONDITIONAL"],
|
|
|
|
["VERIFY test coverage"],
|
|
["1 1", "VERIFY", "NONE", "OK"],
|
|
["1", "VERIFY 1", "NONE", "OK"],
|
|
["1 0x05 0x01 0x00 0x00 0x00 0x00", "VERIFY", "NONE", "OK", "values >4 bytes can be cast to boolean"],
|
|
["DATA_3 1 1 VERIFY", "HASH160 DATA_20 0x61730cd7ffc6c9b4664131aff18734a714579fd4 EQUAL", "NONE", "OK", "VERIFY P2SH"],
|
|
["0", "VERIFY 1", "NONE", "ERR_VERIFY"],
|
|
["1", "VERIFY", "NONE", "ERR_EMPTY_STACK"],
|
|
["1", "VERIFY 0", "NONE", "ERR_EVAL_FALSE"],
|
|
["NOP", "VERIFY 1", "NONE", "ERR_INVALID_STACK_OPERATION", "VERIFY requires an input"],
|
|
|
|
["RETURN test coverage"],
|
|
["0", "IF RETURN ENDIF 1", "NONE", "OK", "RETURN only works if executed"],
|
|
["0 DATA_4 IF RETURN ENDIF 1", "HASH160 DATA_20 0xf9218a11857242f0045c265b13d18bfffd591031 EQUAL", "NONE", "OK", "RETURN P2SH"],
|
|
["1", "IF RETURN ELSE ELSE 1 ENDIF", "NONE", "ERR_EARLY_RETURN", "Multiple ELSEs"],
|
|
["1", "IF 1 ELSE ELSE RETURN ENDIF", "NONE", "ERR_EARLY_RETURN"],
|
|
["1", "RETURN", "NONE", "ERR_EARLY_RETURN"],
|
|
["1", "DUP IF RETURN ENDIF", "NONE", "ERR_EARLY_RETURN"],
|
|
["1", "RETURN 'data'", "NONE", "ERR_EARLY_RETURN", "canonical prunable txout format"],
|
|
["0 IF", "RETURN ENDIF 1", "NONE", "ERR_UNBALANCED_CONDITIONAL", "still prunable because IF/ENDIF can't span scriptSig/scriptPubKey"],
|
|
|
|
["NOTE: most CHECKLOCKTIMEVERIFY tests reside in transaction tests"],
|
|
["since they rely on fields in a transaction"],
|
|
|
|
["CHECKLOCKTIMEVERIFY test coverage"],
|
|
["", "CHECKLOCKTIMEVERIFY", "NONE", "ERR_EMPTY_STACK", "CHECKLOCKTIMEVERIFY requires a transaction and a stack item"],
|
|
|
|
["NOTE: most CHECKSEQUENCEVERIFY tests reside in transaction tests"],
|
|
["since they rely on fields in a transaction"],
|
|
|
|
["CHECKSEQUENCEVERIFY test coverage"],
|
|
["", "CHECKSEQUENCEVERIFY", "NONE", "ERR_EMPTY_STACK", "CHECKSEQUENCEVERIFY requires a transaction and a stack item"],
|
|
|
|
["STACK opcode tests"],
|
|
|
|
["TOALTSTACK/FROMALTSTACK test coverage"],
|
|
["10 0 11 TOALTSTACK DROP FROMALTSTACK", "ADD 21 EQUAL", "NONE", "OK"],
|
|
["1 TOALTSTACK 2 TOALTSTACK 3 4 5 0x6f{172}", "1 2 3 4 5 6 7 0x6f{166}", "NONE", "OK", "1,024 stack size (altstack cleared between scriptSig/scriptPubKey)"],
|
|
["'gavin_was_here' TOALTSTACK 11 FROMALTSTACK", "'gavin_was_here' EQUALVERIFY 11 EQUAL", "NONE", "OK"],
|
|
["0", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK 0 EQUAL", "NONE", "OK", "OP_0 must be able to round trip alt data stack"],
|
|
["DATA_1 0x7a", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_1 0x7a EQUAL", "NONE", "OK", "1-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_2 0x7a{2}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_2 0x7a{2} EQUAL", "NONE", "OK", "2-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_3 0x7a{3}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_3 0x7a{3} EQUAL", "NONE", "OK", "3-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_4 0x7a{4}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_4 0x7a{4} EQUAL", "NONE", "OK", "4-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_5 0x7a{5}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_5 0x7a{5} EQUAL", "NONE", "OK", "5-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_6 0x7a{6}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_6 0x7a{6} EQUAL", "NONE", "OK", "6-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_7 0x7a{7}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_7 0x7a{7} EQUAL", "NONE", "OK", "7-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_8 0x7a{8}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_8 0x7a{8} EQUAL", "NONE", "OK", "8-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_9 0x7a{9}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_9 0x7a{9} EQUAL", "NONE", "OK", "9-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_10 0x7a{10}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_10 0x7a{10} EQUAL", "NONE", "OK", "10-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_11 0x7a{11}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_11 0x7a{11} EQUAL", "NONE", "OK", "11-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_12 0x7a{12}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_12 0x7a{12} EQUAL", "NONE", "OK", "12-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_13 0x7a{13}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_13 0x7a{13} EQUAL", "NONE", "OK", "13-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_14 0x7a{14}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_14 0x7a{14} EQUAL", "NONE", "OK", "14-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_15 0x7a{15}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_15 0x7a{15} EQUAL", "NONE", "OK", "15-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_16 0x7a{16}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_16 0x7a{16} EQUAL", "NONE", "OK", "16-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_17 0x7a{17}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_17 0x7a{17} EQUAL", "NONE", "OK", "17-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_18 0x7a{18}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_18 0x7a{18} EQUAL", "NONE", "OK", "18-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_19 0x7a{19}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_19 0x7a{19} EQUAL", "NONE", "OK", "19-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_20 0x7a{20}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_20 0x7a{20} EQUAL", "NONE", "OK", "20-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_21 0x7a{21}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_21 0x7a{21} EQUAL", "NONE", "OK", "21-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_22 0x7a{22}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_22 0x7a{22} EQUAL", "NONE", "OK", "22-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_23 0x7a{23}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_23 0x7a{23} EQUAL", "NONE", "OK", "23-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_24 0x7a{24}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_24 0x7a{24} EQUAL", "NONE", "OK", "24-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_25 0x7a{25}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_25 0x7a{25} EQUAL", "NONE", "OK", "25-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_26 0x7a{26}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_26 0x7a{26} EQUAL", "NONE", "OK", "26-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_27 0x7a{27}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_27 0x7a{27} EQUAL", "NONE", "OK", "27-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_28 0x7a{28}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_28 0x7a{28} EQUAL", "NONE", "OK", "28-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_29 0x7a{29}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_29 0x7a{29} EQUAL", "NONE", "OK", "29-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_30 0x7a{30}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_30 0x7a{30} EQUAL", "NONE", "OK", "30-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_31 0x7a{31}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_31 0x7a{31} EQUAL", "NONE", "OK", "31-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_32 0x7a{32}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_32 0x7a{32} EQUAL", "NONE", "OK", "32-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_33 0x7a{33}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_33 0x7a{33} EQUAL", "NONE", "OK", "33-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_34 0x7a{34}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_34 0x7a{34} EQUAL", "NONE", "OK", "34-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_35 0x7a{35}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_35 0x7a{35} EQUAL", "NONE", "OK", "35-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_36 0x7a{36}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_36 0x7a{36} EQUAL", "NONE", "OK", "36-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_37 0x7a{37}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_37 0x7a{37} EQUAL", "NONE", "OK", "37-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_38 0x7a{38}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_38 0x7a{38} EQUAL", "NONE", "OK", "38-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_39 0x7a{39}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_39 0x7a{39} EQUAL", "NONE", "OK", "39-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_40 0x7a{40}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_40 0x7a{40} EQUAL", "NONE", "OK", "40-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_41 0x7a{41}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_41 0x7a{41} EQUAL", "NONE", "OK", "41-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_42 0x7a{42}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_42 0x7a{42} EQUAL", "NONE", "OK", "42-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_43 0x7a{43}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_43 0x7a{43} EQUAL", "NONE", "OK", "43-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_44 0x7a{44}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_44 0x7a{44} EQUAL", "NONE", "OK", "44-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_45 0x7a{45}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_45 0x7a{45} EQUAL", "NONE", "OK", "45-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_46 0x7a{46}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_46 0x7a{46} EQUAL", "NONE", "OK", "46-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_47 0x7a{47}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_47 0x7a{47} EQUAL", "NONE", "OK", "47-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_48 0x7a{48}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_48 0x7a{48} EQUAL", "NONE", "OK", "48-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_49 0x7a{49}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_49 0x7a{49} EQUAL", "NONE", "OK", "49-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_50 0x7a{50}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_50 0x7a{50} EQUAL", "NONE", "OK", "50-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_51 0x7a{51}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_51 0x7a{51} EQUAL", "NONE", "OK", "51-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_52 0x7a{52}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_52 0x7a{52} EQUAL", "NONE", "OK", "52-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_53 0x7a{53}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_53 0x7a{53} EQUAL", "NONE", "OK", "53-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_54 0x7a{54}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_54 0x7a{54} EQUAL", "NONE", "OK", "54-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_55 0x7a{55}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_55 0x7a{55} EQUAL", "NONE", "OK", "55-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_56 0x7a{56}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_56 0x7a{56} EQUAL", "NONE", "OK", "56-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_57 0x7a{57}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_57 0x7a{57} EQUAL", "NONE", "OK", "57-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_58 0x7a{58}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_58 0x7a{58} EQUAL", "NONE", "OK", "58-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_59 0x7a{59}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_59 0x7a{59} EQUAL", "NONE", "OK", "59-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_60 0x7a{60}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_60 0x7a{60} EQUAL", "NONE", "OK", "60-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_61 0x7a{61}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_61 0x7a{61} EQUAL", "NONE", "OK", "61-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_62 0x7a{62}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_62 0x7a{62} EQUAL", "NONE", "OK", "62-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_63 0x7a{63}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_63 0x7a{63} EQUAL", "NONE", "OK", "63-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_64 0x7a{64}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_64 0x7a{64} EQUAL", "NONE", "OK", "64-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_65 0x7a{65}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_65 0x7a{65} EQUAL", "NONE", "OK", "65-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_66 0x7a{66}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_66 0x7a{66} EQUAL", "NONE", "OK", "66-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_67 0x7a{67}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_67 0x7a{67} EQUAL", "NONE", "OK", "67-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_68 0x7a{68}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_68 0x7a{68} EQUAL", "NONE", "OK", "68-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_69 0x7a{69}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_69 0x7a{69} EQUAL", "NONE", "OK", "69-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_70 0x7a{70}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_70 0x7a{70} EQUAL", "NONE", "OK", "70-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_71 0x7a{71}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_71 0x7a{71} EQUAL", "NONE", "OK", "71-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_72 0x7a{72}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_72 0x7a{72} EQUAL", "NONE", "OK", "72-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_73 0x7a{73}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_73 0x7a{73} EQUAL", "NONE", "OK", "73-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_74 0x7a{74}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_74 0x7a{74} EQUAL", "NONE", "OK", "74-byte pushes must be able to round trip alt data stack"],
|
|
["DATA_75 0x7a{75}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK DATA_75 0x7a{75} EQUAL", "NONE", "OK", "75-byte pushes must be able to round trip alt data stack"],
|
|
["PUSHDATA1 0x4c 0x7a{76}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK PUSHDATA1 0x4c 0x7a{76} EQUAL", "NONE", "OK", "76-byte pushes must be able to round trip alt data stack"],
|
|
["PUSHDATA2 0x0001 0x7a{256}", "TOALTSTACK DEPTH 0 EQUALVERIFY FROMALTSTACK PUSHDATA2 0x0001 0x7a{256} EQUAL", "NONE", "OK", "256-byte pushes must be able to round trip alt data stack"],
|
|
["10 0 11 DATA_7 TOALTSTACK DROP FROMALTSTACK ADD 21 EQUAL", "HASH160 DATA_20 0xced991712e97801d6757e7461635c3ed02f776a8 EQUAL", "NONE", "OK", "FROMALTSTACK/TOALTSTACK P2SH"],
|
|
|
|
["DATA_2 0x7a{2} TOALTSTACK", "FROMALTSTACK DATA_2 0x7a{2} EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "ALTSTACK is cleared in between sigScript execution and pkScript execution"],
|
|
|
|
["2DROP test coverage"],
|
|
["", "2DROP DEPTH 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "2DROP requires two items on the stack, the stack has no items"],
|
|
["1", "2DROP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2DROP requires two items on the stack, the stack has no items"],
|
|
["DATA_7 0x7a{7}", "2DROP DEPTH 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "2DROP requires two items on the stack, the stack has one item"],
|
|
["0 0", "2DROP 1", "NONE", "OK"],
|
|
["0 0 DATA_2 2DROP 1", "HASH160 DATA_20 0xdf12ec37800e3501b34209f11c72c839aef3de9e EQUAL", "NONE", "OK", "2DROP P2SH"],
|
|
["2 4", "2DROP 1", "NONE", "OK", "2DROP should remove the top two stack items"],
|
|
["DATA_15 0x7a{15} DATA_7 0x7a{7}", "2DROP DEPTH 0 EQUAL", "NONE", "OK", "2DROP must remove top two stack items"],
|
|
|
|
["2DUP test coverage"],
|
|
["", "2DUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2DUP requires two items on the stack, the stack has no items"],
|
|
["NOP", "2DUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2DUP requires two items on the stack and NOP must not be treated as one"],
|
|
["1", "2DUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2DUP requires two items on the stack, the stack has one item"],
|
|
["DATA_7 0x7a{7}", "2DUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2DUP requires two stack items, the stack has one item"],
|
|
["0 1", "2DUP", "NONE", "OK"],
|
|
["DATA_3 0 1 2DUP", "HASH160 DATA_20 0x245520506ec24abe34e0dbc93ac6c1b148688b23 EQUAL", "NONE", "OK", "2DUP P2SH"],
|
|
["2 4", "2DUP ADD 6 EQUALVERIFY 2DROP 1", "NONE", "OK", "2DUP must duplicate top two stack items to the top of the stack"],
|
|
["2 3", "2DUP <ADD>{3} 10 EQUAL", "NONE", "OK", "2DUP must duplicate top two stack items"],
|
|
["13 14", "2DUP ROT EQUALVERIFY EQUAL", "NONE", "OK"],
|
|
|
|
["3DUP test coverage"],
|
|
["NOP", "3DUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "3DUP requires three items on the stack and NOP must not be treated as one"],
|
|
["", "3DUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "3DUP requires three items on the stack, the stack has no items"],
|
|
["1", "3DUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "3DUP requires three items on the stack, the stack has one item"],
|
|
["1 2", "3DUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "3DUP requires three items on the stack, the stack has two items"],
|
|
["DATA_7 0x7a{7} DATA_15 0x7a{15}", "3DUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "3DUP requires three items on the stack, the stack has two items"],
|
|
["1 1", "3DUP", "NONE", "ERR_INVALID_STACK_OPERATION", "3DUP requires three items on the stack, the stack has two items"],
|
|
["0 0 1", "3DUP", "NONE", "OK"],
|
|
["DATA_4 0 0 1 3DUP", "HASH160 DATA_20 0xff28c3031b78c21810c78464320a6adc739ce336 EQUAL", "NONE", "OK", "3DUP P2SH"],
|
|
["1 2 3", "3DUP <ADD>{5} 18 EQUAL 1", "NONE", "OK", "3DUP must duplicate top three stack items"],
|
|
["-1 0 1 2", "3DUP DEPTH 7 EQUALVERIFY <ADD>{2} 3 EQUALVERIFY 2DROP 0 EQUALVERIFY", "NONE", "OK"],
|
|
["1 2 3 4 5 <3DUP>{173}", "1 2 3 4 5 6 <3DUP>{165}", "NONE", "ERR_STACK_SIZE", ">1,024 stack size"],
|
|
["1 2 3 4 5 <3DUP>{172}", "1 TOALTSTACK 2 TOALTSTACK 3 4 5 6 <3DUP>{166}", "NONE", "ERR_STACK_SIZE", ">1,024 stack+altstack size"],
|
|
["1 2 3 4 5 0x6f{172}", "1 2 3 4 5 0x6f{166}", "NONE", "OK", "1,024 stack size (0x6f is 3DUP)"],
|
|
|
|
["2OVER test coverage"],
|
|
["NOP", "2OVER 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2OVER requires four items on the stack and NOP must not be treated as one"],
|
|
["", "2OVER 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2OVER requires four items on the stack, the stack has no items"],
|
|
["1", "2OVER 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2OVER requires four items on the stack, the stack has one item"],
|
|
["1 2", "2OVER 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2OVER requires four items on the stack, the stack has two items"],
|
|
["1 1 1", "2OVER", "NONE", "ERR_INVALID_STACK_OPERATION", "2OVER requires four items on the stack, the stack has three items"],
|
|
["1", "2 3 2OVER 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2OVER requires four items on the stack, the stack has three items"],
|
|
["0 1 0 0", "2OVER", "NONE", "OK"],
|
|
["DATA_5 0 1 0 0 2OVER", "HASH160 DATA_20 0x246cb0da72799c91700b00b39f3dac503931246c EQUAL", "NONE", "OK", "2OVER P2SH"],
|
|
["0 1 0 0", "2OVER DEPTH 6 EQUALVERIFY 2DROP 2DROP 0 EQUAL 0 EQUAL 1", "NONE", "OK", "2OVER must copy the top two stack items to the back of the stack"],
|
|
["1 2 3 5", "2OVER ADD ADD 8 EQUALVERIFY ADD ADD 6 EQUAL", "NONE", "OK"],
|
|
|
|
["2ROT test coverage"],
|
|
["NOP", "2ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2ROT requires six items on the stack and NOP must not be treated as one"],
|
|
["", "2ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2ROT requires six items on the stack, the stack has no items"],
|
|
["1", "2ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2ROT requires six items on the stack, the stack has one item"],
|
|
["0 1", "2ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2ROT requires six items on the stack, the stack has two items"],
|
|
["0 1 0", "2ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2ROT requires six items on the stack, the stack has three items"],
|
|
["0 1 0 0", "2ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2ROT requires six items on the stack, the stack has four items"],
|
|
["1 1 1 1 1", "2ROT", "NONE", "ERR_INVALID_STACK_OPERATION", "2ROT requires six items on the stack, the stack has five items"],
|
|
["0 1 0 0 0 0", "2ROT", "NONE", "OK"],
|
|
["DATA_7 0 1 0 0 0 0 2ROT", "HASH160 DATA_20 0x86d0d3a60292ebaf0396be6596849ac631998818 EQUAL", "NONE", "OK", "2ROT P2SH"],
|
|
["25 24 23 22 21 20", "2ROT 24 EQUAL <2DROP>{3} 1", "CLEANSTACK", "OK"],
|
|
["25 24 23 22 21 20", "2ROT DROP 25 EQUAL <2DROP>{2} DROP 1", "CLEANSTACK", "OK"],
|
|
["25 24 23 22 21 20", "2ROT 2DROP 20 EQUAL <2DROP>{2} 1", "CLEANSTACK", "OK"],
|
|
["25 24 23 22 21 20", "2ROT 2DROP DROP 21 EQUAL 2DROP DROP 1", "CLEANSTACK", "OK"],
|
|
["25 24 23 22 21 20", "2ROT 2DROP 2DROP 22 EQUAL 2DROP 1", "CLEANSTACK", "OK"],
|
|
["25 24 23 22 21 20", "2ROT 2DROP 2DROP DROP 23 EQUAL DROP 1", "CLEANSTACK", "OK"],
|
|
["25 24 23 22 21 20", "2ROT 2ROT 22 EQUAL <2DROP>{3} 1", "CLEANSTACK", "OK"],
|
|
["25 24 23 22 21 20", "2ROT 2ROT 2ROT 20 EQUAL <2DROP>{3} 1", "CLEANSTACK", "OK"],
|
|
["DATA_2 0x7a{2} DATA_3 0x6c{3} DATA_5 0xff{5} DATA_6 0x1c{6} DATA_10 0xcc{10} DATA_12 0xfc{12}", "2ROT DATA_3 0x6c{3} EQUAL <2DROP>{3} 1", "CLEANSTACK", "OK"],
|
|
["DATA_2 0x7a{2} DATA_3 0x6c{3} DATA_5 0xff{5} DATA_6 0x1c{6} DATA_10 0xcc{10} DATA_12 0xfc{12}", "2ROT DROP DATA_2 0x7a{2} EQUAL <2DROP>{2} DROP 1", "CLEANSTACK", "OK"],
|
|
["DATA_2 0x7a{2} DATA_3 0x6c{3} DATA_5 0xff{5} DATA_6 0x1c{6} DATA_10 0xcc{10} DATA_12 0xfc{12}", "2ROT 2ROT 2ROT DATA_12 0xfc{12} EQUAL <2DROP>{3} 1", "CLEANSTACK", "OK"],
|
|
|
|
["2SWAP test coverage"],
|
|
["", "2SWAP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2SWAP requires four items on the stack, the stack has no items"],
|
|
["NOP", "2SWAP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2SWAP requires four items on the stack and NOP must not be treated as one"],
|
|
["1", "2 3 2SWAP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2SWAP requires four items on the stack, the stack has one item"],
|
|
["0 1", "2SWAP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "2SWAP requires four items on the stack, the stack has has two items"],
|
|
["1 1 1", "2SWAP", "NONE", "ERR_INVALID_STACK_OPERATION", "2SWAP requires four items on the stack, the stack has three items"],
|
|
["0 1 0 0", "2SWAP <2DROP>{2} 1", "CLEANSTACK", "OK"],
|
|
["DATA_8 0 1 0 0 2SWAP <2DROP>{2} 1", " HASH160 DATA_20 0xb3e4f3da89ffc239d6958d5a20a69852ae603f81 EQUAL", "CLEANSTACK", "OK", "2SWAP P2SH"],
|
|
["1 3 5 7", "2SWAP ADD 4 EQUALVERIFY ADD 12 EQUAL", "CLEANSTACK", "OK"],
|
|
|
|
["IFDUP test coverage"],
|
|
["NOP", "IFDUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "IFDUP requires an item on the stack and NOP must not be treated as one"],
|
|
["", "IFDUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "IFDUP requires an item on the stack, the stack has no items"],
|
|
["1", "IFDUP", "NONE", "OK"],
|
|
["0 IFDUP", "DEPTH 1 EQUALVERIFY 0 EQUAL", "CLEANSTACK", "OK"],
|
|
["1 IFDUP", "DEPTH 2 EQUALVERIFY 1 EQUALVERIFY 1 EQUAL", "CLEANSTACK", "OK"],
|
|
["0x05 0x0100000000 IFDUP", "DEPTH 2 EQUALVERIFY 0x05 0x0100000000 EQUAL DROP", "CLEANSTACK", "OK", "IFDUP dups non ints"],
|
|
["0 DATA_6 IFDUP DEPTH 1 EQUALVERIFY 0 EQUAL", "HASH160 DATA_20 0x763f55208b71ee8db49fae12bf8f36385974c2f7 EQUAL", "CLEANSTACK", "OK", "IFDUP P2SH"],
|
|
["IFDUP", "DEPTH 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION"],
|
|
|
|
["DEPTH test coverage"],
|
|
["NOP", "DEPTH 1", "NONE", "OK"],
|
|
["NOP", "DEPTH 0 EQUAL", "NONE", "OK"],
|
|
["DATA_5 0x7a{5}", "DEPTH 1 EQUALVERIFY DROP 1", "CLEANSTACK", "OK"],
|
|
["", "DEPTH 0 EQUAL", "CLEANSTACK", "OK"],
|
|
["DATA_3 DEPTH 0 EQUAL", "HASH160 DATA_20 0xce03d682308b99e9b362c680375abc12d4580d35 EQUAL", "CLEANSTACK", "OK", "DEPTH P2SH"],
|
|
|
|
["DROP test coverage"],
|
|
["NOP", "DROP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "DROP requires an item on the stack and NOP must not be treated as one"],
|
|
["", "DROP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "DROP requires an item on the stack, the stack has no items"],
|
|
["DROP", "DEPTH 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "DROP requires an item on the stack, the stack has no items"],
|
|
["0", "DROP 1", "CLEANSTACK", "OK"],
|
|
["0 DROP", "DEPTH 0 EQUAL", "CLEANSTACK", "OK"],
|
|
["0", "DUP 1 ADD 1 EQUALVERIFY 0 EQUAL", "CLEANSTACK", "OK"],
|
|
["DATA_3 0 DROP 1", "HASH160 DATA_20 0xe9fc6ab1427ac4474405584b02c58fb2fbabddf7 EQUAL", "CLEANSTACK", "OK", "DROP P2SH"],
|
|
|
|
["DUP test coverage"],
|
|
["", "DUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "DUP requires an item on the stack, the stack has no items"],
|
|
["NOP", "DUP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "DUP requires an item on the stack and NOP must not be treated as one"],
|
|
["DUP", "DEPTH 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "DUP requires an item on the stack, the stack has no items"],
|
|
["1", "DUP 2DROP 1", "NONE", "OK"],
|
|
["1", "DUP ADD 2 EQUALVERIFY 1", "NONE", "OK", "DUP must duplicate the top stack item"],
|
|
["1", "DUP 1 ADD 2 EQUALVERIFY 0 EQUAL", "NONE", "ERR_EVAL_FALSE"],
|
|
["DATA_4 1 DUP 2DROP 1", "HASH160 DATA_20 0x59015872d15a0658493d937955b572803837b920 EQUAL", "NONE", "OK", "DUP P2SH"],
|
|
|
|
["NIP test coverage"],
|
|
["NOP", "NIP", "NONE", "ERR_INVALID_STACK_OPERATION", "NIP requires at least two items on the stack and NOP must not be treated as one"],
|
|
["", "NIP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "NIP requires at least two items on the stack, the stack has no items"],
|
|
["1", "NIP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "NIP requires at least two items on the stack, the stack is one item"],
|
|
["0 1", "NIP DROP 1", "CLEANSTACK", "OK"],
|
|
["1 2", "NIP 2 EQUAL DROP 1", "CLEANSTACK", "OK", "NIP must remove the item before the top item on the stack"],
|
|
["NOP", "1 0 NIP", "NONE", "ERR_EVAL_FALSE"],
|
|
["DATA_5 0 1 NIP DROP 1", "HASH160 DATA_20 0x2dea38fd71654bae1a2663ee47f9f2cd7dfc29ca EQUAL", "CLEANSTACK", "OK", "NIP P2SH"],
|
|
|
|
["OVER test coverage"],
|
|
["NOP", "OVER 1", "NONE", "ERR_INVALID_STACK_OPERATION", "OVER requires at least two items on the stack and NOP must not be treated as one"],
|
|
["", "OVER 1", "NONE", "ERR_INVALID_STACK_OPERATION", "OVER requires a least two items on the stack, the stack has no items"],
|
|
["1", "OVER 1", "NONE", "ERR_INVALID_STACK_OPERATION", "OVER requires at least two items on the stack, the stack has one item"],
|
|
["0 1", "OVER DEPTH 3 EQUALVERIFY", "NONE", "ERR_EVAL_FALSE"],
|
|
["1 0", "OVER 2DROP DROP 1", "CLEANSTACK", "OK"],
|
|
["1 0", "OVER ADD ADD 2 EQUALVERIFY 1", "CLEANSTACK", "OK", "OVER must duplicate the item before the top item on the data stack."],
|
|
["1 0", "OVER DEPTH 3 EQUALVERIFY 2DROP DROP 1", "CLEANSTACK", "OK"],
|
|
["DATA_6 1 0 OVER 2DROP DROP 1", "HASH160 DATA_20 0x7ebfbccb70569ac8d8b3f9aea6cf48cad65bd22d EQUAL", "CLEANSTACK", "OK", "OVER P2SH"],
|
|
|
|
["PICK test coverage"],
|
|
["NOP", "0 PICK", "NONE", "ERR_INVALID_STACK_OPERATION", "PICK requires two items on the stack and NOP must not be treated as one"],
|
|
["", "PICK 1", "NONE", "ERR_INVALID_STACK_OPERATION", "PICK requires two items on the stack, the stack has no items"],
|
|
["0", "PICK 1", "NONE", "ERR_INVALID_STACK_OPERATION", "PICK requires two items on the stack, the stack has one item"],
|
|
["1 1", "PICK ADD 2 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "PICK index of 1 is out of bounds"],
|
|
["19 20 21", "PICK 19 EQUALVERIFY DEPTH 2 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "PICK index of 21 is out of bounds"],
|
|
["1", "-1 PICK", "NONE", "ERR_INVALID_STACK_OPERATION", "PICK index of -1 is out of bounds"],
|
|
["1 0 0 0 3", "PICK <2DROP>{2} DROP 1", "CLEANSTACK", "OK"],
|
|
["1 0", "PICK 2DROP 1", "CLEANSTACK", "OK"],
|
|
["1 0", "PICK DEPTH 2 EQUALVERIFY 2DROP 1", "CLEANSTACK", "OK", "the stack depth should equal the initial since PICK pops the index"],
|
|
["1 0", "PICK ADD 2 EQUALVERIFY 1", "CLEANSTACK", "OK", "PICK must duplicate the stack item at the supplied index to the top of the stack."],
|
|
["19 20 21", "0 PICK 20 EQUALVERIFY DEPTH 3 EQUAL", "NONE", "ERR_EQUAL_VERIFY"],
|
|
["19 20 21", "1 PICK 21 EQUALVERIFY DEPTH 3 EQUAL", "NONE", "ERR_EQUAL_VERIFY"],
|
|
["19 20 21", "2 PICK 22 EQUALVERIFY DEPTH 3 EQUAL", "NONE", "ERR_EQUAL_VERIFY"],
|
|
["22 21 20", "0 PICK 20 EQUALVERIFY 2DROP DROP 1", "CLEANSTACK", "OK"],
|
|
["22 21 20", "1 PICK 21 EQUALVERIFY 2DROP DROP 1", "CLEANSTACK", "OK"],
|
|
["22 21 20", "2 PICK 22 EQUALVERIFY 2DROP DROP 1", "CLEANSTACK", "OK"],
|
|
["1 0x02 0x0000", "PICK DROP", "NONE", "ERR_MINIMAL_DATA", "PICK must adhere to the numeric minimal encoding rule for its inputs"],
|
|
["1 1 1 3", "PICK", "NONE", "ERR_INVALID_STACK_OPERATION"],
|
|
["DATA_5 1 0 PICK 2DROP 1", "HASH160 DATA_20 0xfd49dd2e6c5d836b70a857572516194ce8f446d3 EQUAL", "CLEANSTACK", "OK", "PICK P2SH"],
|
|
|
|
["ROLL test coverage"],
|
|
["", "ROLL 1", "NONE", "ERR_INVALID_STACK_OPERATION", "ROLL requires at least two items on the stack, the stack has no items"],
|
|
["NOP", "0 ROLL", "NONE", "ERR_INVALID_STACK_OPERATION", "ROLL requires two at least items on the stack and NOP must not be treated as one"],
|
|
["1", "ROLL 1", "NONE", "ERR_INVALID_STACK_OPERATION", "ROLL requires at least two items on the stack, the stack has one item"],
|
|
["1", "-1 ROLL", "NONE", "ERR_INVALID_STACK_OPERATION", "ROLL index is out of bounds"],
|
|
["1 0", "ROLL DROP 1", "CLEANSTACK", "OK"],
|
|
["1 0 0 0 3", "ROLL 2DROP DROP 1", "NONE", "OK"],
|
|
["1 1 1 3", "ROLL", "NONE", "ERR_INVALID_STACK_OPERATION"],
|
|
["0", "ROLL 1", "NONE", "ERR_INVALID_STACK_OPERATION"],
|
|
["19 20 21", "0 ROLL 20 EQUALVERIFY DEPTH 2 EQUAL", "NONE", "ERR_EQUAL_VERIFY"],
|
|
["19 20 21", "1 ROLL 21 EQUALVERIFY DEPTH 2 EQUAL", "NONE", "ERR_EQUAL_VERIFY"],
|
|
["19 20 21", "2 ROLL 22 EQUALVERIFY DEPTH 2 EQUAL", "NONE", "ERR_EQUAL_VERIFY"],
|
|
["22 21 20", "0 ROLL 20 EQUALVERIFY 2DROP 1", "CLEANSTACK", "OK"],
|
|
["22 21 20", "1 ROLL 21 EQUALVERIFY 2DROP 1", "CLEANSTACK", "OK"],
|
|
["22 21 20", "2 ROLL 22 EQUALVERIFY 2DROP 1", "CLEANSTACK", "OK"],
|
|
["1 0x02 0x0000", "ROLL DROP 1", "NONE", "ERR_MINIMAL_DATA", "ROLL must adhere to the numeric minimal encoding rule for its inputs"],
|
|
["DATA_5 1 0 ROLL DROP 1", "HASH160 DATA_20 0x58766760a4d602763d86008addf0b383ca40497e EQUAL", "CLEANSTACK", "OK", "ROLL P2SH"],
|
|
|
|
["ROT test coverage"],
|
|
["NOP", "ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "ROT requires three items on the stack and NOP must not be treated as one"],
|
|
["", "ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "ROT requires three items on the stack, the stack has no items"],
|
|
["NOP", "1 ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "ROT requires three items on the stack, the stack has one item disregarding NOP"],
|
|
["1", "ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "ROT requires three items on the stack, the stack has one item"],
|
|
["1 0", "ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "ROT requires three items on the stack, the stack has two items"],
|
|
["NOP", "1 2 ROT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "ROT requires three items on the stack, the stack has two items disregarding NOP"],
|
|
["1 0 0", "ROT 2DROP DROP 1", "CLEANSTACK", "OK"],
|
|
["22 21 20", "ROT 22 EQUALVERIFY 2DROP 1", "CLEANSTACK", "OK"],
|
|
["22 21 20", "ROT DROP 20 EQUALVERIFY DROP 1", "CLEANSTACK", "OK"],
|
|
["22 21 20", "ROT DROP DROP 21 EQUALVERIFY 1", "CLEANSTACK", "OK"],
|
|
["22 21 20", "ROT ROT 21 EQUALVERIFY 2DROP 1", "CLEANSTACK", "OK"],
|
|
["22 21 20", "ROT ROT ROT 20 EQUALVERIFY 2DROP 1", "CLEANSTACK", "OK"],
|
|
["NOP", "0 1 2 ROT", "NONE", "ERR_EVAL_FALSE"],
|
|
["DATA_7 1 0 0 ROT 2DROP DROP 1", "HASH160 DATA_20 0x7f7f675ad713f005094b4c8c08db17b3dca4cc2f EQUAL", "CLEANSTACK", "OK", "ROT P2SH"],
|
|
|
|
["SWAP test coverage"],
|
|
["NOP", "SWAP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "SWAP requires two items on the stack and NOP must not be treated as one"],
|
|
["", "SWAP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "SWAP requires two items on the stack, the stack has no items"],
|
|
["1", "SWAP 1", "NONE", "ERR_INVALID_STACK_OPERATION", "SWAP requires two items on the stack, the stack has one item"],
|
|
["1 0", "SWAP 2DROP 1", "CLEANSTACK", "OK"],
|
|
["1 0", "SWAP 1 EQUALVERIFY DROP 1", "CLEANSTACK", "OK"],
|
|
["0 1", "SWAP 1 EQUALVERIFY", "NONE", "ERR_EQUAL_VERIFY"],
|
|
["DATA_5 1 0 SWAP 2DROP 1", "HASH160 DATA_20 0x5fd7b1277187de9b074653a8a6b3afaa133e7528 EQUAL", "CLEANSTACK", "OK", "SWAP P2SH"],
|
|
|
|
["TUCK test coverage"],
|
|
["NOP", "TUCK 1", "NONE", "ERR_INVALID_STACK_OPERATION", "TUCK requires two items on the stack and NOP must not be treated as one"],
|
|
["", "TUCK 1", "NONE", "ERR_INVALID_STACK_OPERATION", "TUCK requires two items on the stack, the stack has no items"],
|
|
["1", "TUCK 1", "NONE", "ERR_INVALID_STACK_OPERATION", "TUCK requires two items on the stack, the stack has one item"],
|
|
["0 1", "TUCK 2DROP DROP 1", "CLEANSTACK", "OK"],
|
|
["0 1", "TUCK ADD ADD 2 EQUALVERIFY 1", "CLEANSTACK", "OK"],
|
|
["0 1", "TUCK DEPTH 3 EQUALVERIFY 2DROP DROP 1", "CLEANSTACK", "OK"],
|
|
["1 0", "TUCK DEPTH 3 EQUALVERIFY SWAP 2DROP", "NONE", "ERR_EVAL_FALSE"],
|
|
["DATA_6 0 1 TUCK 2DROP DROP 1", "HASH160 DATA_20 0x01ecfa9a2820e4399f3d9ff6f4d86612868c415b EQUAL", "CLEANSTACK", "OK", "TUCK P2SH"],
|
|
|
|
["CAT related test coverage"],
|
|
["'a' 'b'", "CAT 'ab' EQUAL", "NONE", "OK", "CAT concatenates two input args"],
|
|
["'a' 2147483648", "CAT 0x06 0x610000008000 EQUAL", "NONE", "OK", "CAT must treat arguments as bytes as opposed to numeric"],
|
|
["'' ''", "CAT '' EQUAL", "NONE", "OK", "CAT with two empty args must result in a single empty item on the stack"],
|
|
["'a' ''", "CAT 'a' EQUAL", "NONE", "OK", "CAT with empty right-hand side must return left-hand side"],
|
|
["'' 'b'", "CAT 'b' EQUAL", "NONE", "OK", "CAT with empty left-hand side must return right-hand side"],
|
|
["'a' 'b' 1", "IF CAT ELSE 1 ENDIF 'ab' EQUAL", "NONE", "OK", "CAT works in a conditional branch"],
|
|
["'a' 'b' 0", "IF CAT ELSE 2DROP 1 ENDIF 1 EQUAL", "NONE", "OK", "CAT must not modify the stack if in an unexecuted branch"],
|
|
["'a' 'b' BLAKE256", "CAT 0x21 0x61522ba694353828d1d4076ddc64abe920fd28eddf578d50793169dce196db7886 EQUAL", "NONE", "OK", "CAT must concatenate arbitrary bytes"],
|
|
["'a' 'b' 0x25 BLAKE256 CAT 0x21 0x61522ba694353828d1d4076ddc64abe920fd28eddf578d50793169dce196db7886 EQUAL",
|
|
"HASH160 0x14 0x1433a4999c484f9d7001cebd5990b902d54fb0c6 EQUAL", "NONE", "OK", "CAT must work in a P2SH script"],
|
|
["", "CAT TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "CAT requires an input arg"],
|
|
["'ab'", "CAT TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "CAT requires a second input arg"],
|
|
["'a' 'abcdefghijklmnop' DUP CAT DUP CAT DUP CAT DUP CAT DUP CAT DUP CAT DUP CAT", "CAT", "NONE", "ERR_PUSH_SIZE", "CAT must fail if the result would exceed max allowed stack item size"],
|
|
["DATA_9 'a' 'b' CAT 'ab' EQUAL", "HASH160 DATA_20 0x425e556423b21bc12c79cac723ca9b07cb022665 EQUAL", "NONE", "OK", "CAT P2SH"],
|
|
|
|
["SUBSTR test coverage"],
|
|
["'abcd' 1 0", "SUBSTR 'a' EQUAL", "NONE", "OK", "SUBSTR uses 0-based indices"],
|
|
["'abcd' 3 1", "SUBSTR 'bc' EQUAL", "NONE", "OK", "SUBSTR end index is exclusive"],
|
|
["'abcd' 1 1", "SUBSTR NOT", "NONE", "OK", "SUBSTR same index must produce empty byte push which is equivalent to FALSE"],
|
|
["'abcd' 4 4", "SUBSTR '' EQUAL", "NONE", "OK", "SUBSTR start and end index at exact length produces empty byte push"],
|
|
["'abcd' 2 1 1", "IF SUBSTR ELSE 0 ENDIF 'b' EQUAL", "NONE", "OK", "SUBSTR works in a conditional branch"],
|
|
["'abcd' 1 1 0", "IF SUBSTR ELSE 1 ENDIF", "NONE", "OK", "SUBSTR must not modify the stack if in an unexecuted branch"],
|
|
["'' 2147483647 2147483646", "SUBSTR '' EQUAL", "NONE", "OK", "SUBSTR of an empty string produces an empty byte push regardless of out of bounds indices <=4 bytes"],
|
|
["'abcd' 3 3 1SUB", "SUBSTR 'c' EQUAL", "NONE", "OK", "SUBSTR start index must work with the result of math operations"],
|
|
["'abcd' 4 1 SUB 2", "SUBSTR 'c' EQUAL", "NONE", "OK", "SUBSTR end index must work with the result of math operations"],
|
|
["", "SUBSTR NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "SUBSTR requires a string to operate on"],
|
|
["'abcd'", "SUBSTR NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "SUBSTR requires an end index"],
|
|
["'abcd' 2", "SUBSTR NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "SUBSTR requires a start index"],
|
|
["NOP 2 1", "SUBSTR NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "SUBSTR must only operate on byte pushes"],
|
|
["'abcd' 2 NOP", "SUBSTR NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "SUBSTR start index must be numeric"],
|
|
["'abcd' NOP 1", "SUBSTR NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "SUBSTR end index must be numeric"],
|
|
["'abcd' 2 1", "SUBSTR 'a' EQUAL", "NONE", "ERR_EVAL_FALSE", "SUBSTR uses 0-based indices"],
|
|
["'abcd' 2 1", "SUBSTR 'bc' EQUAL", "NONE", "ERR_EVAL_FALSE", "SUBSTR end index is exclusive"],
|
|
["'abcd' 1 1", "SUBSTR", "NONE", "ERR_EVAL_FALSE", "SUBSTR same index must produce empty byte push which is equivalent to FALSE"],
|
|
["'abcd' 1 -1", "SUBSTR NOT", "NONE", "ERR_NEGATIVE_SUBSTR_INDEX", "SUBSTR must fail with negative start index"],
|
|
["'abcd' -1 0", "SUBSTR NOT", "NONE", "ERR_NEGATIVE_SUBSTR_INDEX", "SUBSTR must fail with negative end index"],
|
|
["'abc' 4 4", "SUBSTR NOT", "NONE", "ERR_OVERFLOW_SUBSTR_INDEX", "SUBSTR must fail with start index too large"],
|
|
["'abc' 4 1", "SUBSTR NOT", "NONE", "ERR_OVERFLOW_SUBSTR_INDEX", "SUBSTR must fail with end index too large"],
|
|
["'abcd' 1 2", "SUBSTR 'b' EQUAL", "NONE", "ERR_OVERFLOW_SUBSTR_INDEX", "SUBSTR start index must be <= end index"],
|
|
["'' 4 2147483648", "SUBSTR NOT", "NONE", "ERR_OUT_OF_RANGE", "SUBSTR with empty string must fail with start index >4 bytes"],
|
|
["'' 2147483648 4", "SUBSTR NOT", "NONE", "ERR_OUT_OF_RANGE", "SUBSTR with empty string must fail with end index >4 bytes"],
|
|
["'abcd' DATA_6 1 0 SUBSTR 'a' EQUAL", "HASH160 DATA_20 0xd531792ac7a3c16640d6d1e9010d863cd26e64e7 EQUAL", "NONE", "OK", "SUBSTR P2SH"],
|
|
|
|
["LEFT test coverage"],
|
|
["'abcd' 0", "LEFT NOT", "NONE", "OK", "LEFT index of zero must produce empty byte push which is equivalent to FALSE"],
|
|
["'abcd' 1", "LEFT 'a' EQUAL", "NONE", "OK", "LEFT uses 0-based end index"],
|
|
["'abcd' 4", "LEFT 'abcd' EQUAL", "NONE", "OK", "LEFT produces entire string when end index equals string length"],
|
|
["'abcd' 2 1", "IF LEFT ELSE 0 ENDIF 'ab' EQUAL", "NONE", "OK", "LEFT works in a conditional branch"],
|
|
["'abcd' 0 0", "IF LEFT ELSE 1 ENDIF", "NONE", "OK", "LEFT must not modify the stack if in an unexecuted branch"],
|
|
["'' 2147483647", "LEFT '' EQUAL", "NONE", "OK", "LEFT of an empty string produces an empty byte push regardless of out of bounds index <=4 bytes"],
|
|
["", "LEFT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "LEFT requires a string to operate on"],
|
|
["'abcd'", "LEFT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "LEFT requires an index"],
|
|
["NOP 0", "LEFT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "LEFT must only operate on byte pushes"],
|
|
["'abcd' NOP", "LEFT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "LEFT index must be numeric"],
|
|
["'abcd' 0", "LEFT", "NONE", "ERR_EVAL_FALSE", "LEFT index of zero must produce empty byte push which is equivalent to FALSE"],
|
|
["'abcd' -1", "LEFT NOT", "NONE", "ERR_NEGATIVE_SUBSTR_INDEX", "LEFT must fail with negative index"],
|
|
["'abc' 4", "LEFT NOT", "NONE", "ERR_OVERFLOW_SUBSTR_INDEX", "LEFT must fail with index too large"],
|
|
["'' 2147483648", "LEFT NOT", "NONE", "ERR_OUT_OF_RANGE", "LEFT with empty string must fail with index >4 bytes"],
|
|
["'abcd' DATA_3 0 LEFT NOT", "HASH160 DATA_20 0xe3cf248275a98da03d3bb06ce2ed3674a6625748 EQUAL", "NONE", "OK", "LEFT P2SH"],
|
|
|
|
["RIGHT test coverage"],
|
|
["'abcd' 4", "RIGHT NOT", "NONE", "OK", "RIGHT index equal to length must produce empty byte push which is equivalent to FALSE"],
|
|
["'abcd' 3", "RIGHT 'd' EQUAL", "NONE", "OK", "RIGHT uses 0-based start index"],
|
|
["'abcd' 0", "RIGHT 'abcd' EQUAL", "NONE", "OK", "RIGHT produces entire string when start index is zero"],
|
|
["'abcd' 2 1", "IF RIGHT ELSE 0 ENDIF 'cd' EQUAL", "NONE", "OK", "RIGHT works in a conditional branch"],
|
|
["'abcd' 4 0", "IF RIGHT ELSE 1 ENDIF", "NONE", "OK", "RIGHT must not modify the stack if in an unexecuted branch"],
|
|
["'' 2147483647", "RIGHT '' EQUAL", "NONE", "OK", "RIGHT of an empty string produces an empty byte push regardless of out of bounds index <=4 bytes"],
|
|
["", "RIGHT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "RIGHT requires a string to operate on"],
|
|
["'abcd'", "RIGHT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "RIGHT requires an index"],
|
|
["NOP 0", "RIGHT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "RIGHT must only operate on byte pushes"],
|
|
["'abcd' NOP", "RIGHT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "RIGHT index must be numeric"],
|
|
["'abcd' 4", "RIGHT", "NONE", "ERR_EVAL_FALSE", "RIGHT index of same length must produce empty byte push which is equivalent to FALSE"],
|
|
["'abcd' -1", "RIGHT NOT", "NONE", "ERR_NEGATIVE_SUBSTR_INDEX", "RIGHT must fail with negative index"],
|
|
["'abc' 4", "RIGHT NOT", "NONE", "ERR_OVERFLOW_SUBSTR_INDEX", "RIGHT must fail with index too large"],
|
|
["'' 2147483648", "RIGHT NOT", "NONE", "ERR_OUT_OF_RANGE", "RIGHT with empty string must fail with index >4 bytes"],
|
|
["'abcd' DATA_3 4 RIGHT NOT", "HASH160 DATA_20 0x3edb4220d3a493ef8d77dbc871a0fa2c56ee1520 EQUAL", "NONE", "OK", "RIGHT P2SH"],
|
|
|
|
["SIZE test coverage"],
|
|
["0", "SIZE 0 EQUAL", "NONE", "OK"],
|
|
["1", "SIZE 1 EQUAL", "NONE", "OK"],
|
|
["127", "SIZE 1 EQUAL", "NONE", "OK"],
|
|
["128", "SIZE 2 EQUAL", "NONE", "OK"],
|
|
["32767", "SIZE 2 EQUAL", "NONE", "OK"],
|
|
["32768", "SIZE 3 EQUAL", "NONE", "OK"],
|
|
["8388607", "SIZE 3 EQUAL", "NONE", "OK"],
|
|
["8388608", "SIZE 4 EQUAL", "NONE", "OK"],
|
|
["2147483647", "SIZE 4 EQUAL", "NONE", "OK"],
|
|
["2147483648", "SIZE 5 EQUAL", "NONE", "OK"],
|
|
["549755813887", "SIZE 5 EQUAL", "NONE", "OK"],
|
|
["549755813888", "SIZE 6 EQUAL", "NONE", "OK"],
|
|
["9223372036854775807", "SIZE 8 EQUAL", "NONE", "OK"],
|
|
["-1", "SIZE 1 EQUAL", "NONE", "OK"],
|
|
["-127", "SIZE 1 EQUAL", "NONE", "OK"],
|
|
["-128", "SIZE 2 EQUAL", "NONE", "OK"],
|
|
["-32767", "SIZE 2 EQUAL", "NONE", "OK"],
|
|
["-32768", "SIZE 3 EQUAL", "NONE", "OK"],
|
|
["-8388607", "SIZE 3 EQUAL", "NONE", "OK"],
|
|
["-8388608", "SIZE 4 EQUAL", "NONE", "OK"],
|
|
["-2147483647", "SIZE 4 EQUAL", "NONE", "OK"],
|
|
["-2147483648", "SIZE 5 EQUAL", "NONE", "OK"],
|
|
["-549755813887", "SIZE 5 EQUAL", "NONE", "OK"],
|
|
["-549755813888", "SIZE 6 EQUAL", "NONE", "OK"],
|
|
["-9223372036854775807", "SIZE 8 EQUAL", "NONE", "OK"],
|
|
["'abcdefghijklmnopqrstuvwxyz'", "SIZE 26 EQUAL", "NONE", "OK"],
|
|
["42", "SIZE 1 EQUALVERIFY 42 EQUAL", "NONE", "OK", "SIZE does not consume argument"],
|
|
["NOP", "SIZE 1", "NONE", "ERR_INVALID_STACK_OPERATION"],
|
|
["DATA_4 1 SIZE 1 EQUAL", "HASH160 DATA_20 0x615ea3308ec7743b7df42a6db9ba43e15ebc5ff5 EQUAL", "NONE", "OK", "SIZE P2SH"],
|
|
|
|
["Bitwise logic opcode tests"],
|
|
|
|
["INVERT test coverage"],
|
|
["", "INVERT 1", "NONE", "ERR_INVALID_STACK_OPERATION", "INVERT requires an item on the stack, the stack has no items"],
|
|
["0", "INVERT -1 EQUAL", "NONE", "OK", "INVERT 0x00000000"],
|
|
["1", "INVERT -2 EQUAL", "NONE", "OK", "INVERT 0x00000001"],
|
|
["2", "INVERT -3 EQUAL", "NONE", "OK", "INVERT 0x00000002"],
|
|
["4", "INVERT -5 EQUAL", "NONE", "OK", "INVERT 0x00000004"],
|
|
["8", "INVERT -9 EQUAL", "NONE", "OK", "INVERT 0x00000008"],
|
|
["16", "INVERT -17 EQUAL", "NONE", "OK", "INVERT 0x00000010"],
|
|
["32", "INVERT -33 EQUAL", "NONE", "OK", "INVERT 0x00000020"],
|
|
["64", "INVERT -65 EQUAL", "NONE", "OK", "INVERT 0x00000040"],
|
|
["128", "INVERT -129 EQUAL", "NONE", "OK", "INVERT 0x00000080"],
|
|
["256", "INVERT -257 EQUAL", "NONE", "OK", "INVERT 0x00000100"],
|
|
["512", "INVERT -513 EQUAL", "NONE", "OK", "INVERT 0x00000200"],
|
|
["1024", "INVERT -1025 EQUAL", "NONE", "OK", "INVERT 0x00000400"],
|
|
["2048", "INVERT -2049 EQUAL", "NONE", "OK", "INVERT 0x00000800"],
|
|
["4096", "INVERT -4097 EQUAL", "NONE", "OK", "INVERT 0x00001000"],
|
|
["8192", "INVERT -8193 EQUAL", "NONE", "OK", "INVERT 0x00002000"],
|
|
["16384", "INVERT -16385 EQUAL", "NONE", "OK", "INVERT 0x00004000"],
|
|
["32768", "INVERT -32769 EQUAL", "NONE", "OK", "INVERT 0x00008000"],
|
|
["65536", "INVERT -65537 EQUAL", "NONE", "OK", "INVERT 0x00010000"],
|
|
["131072", "INVERT -131073 EQUAL", "NONE", "OK", "INVERT 0x00020000"],
|
|
["262144", "INVERT -262145 EQUAL", "NONE", "OK", "INVERT 0x00040000"],
|
|
["524288", "INVERT -524289 EQUAL", "NONE", "OK", "INVERT 0x00080000"],
|
|
["1048576", "INVERT -1048577 EQUAL", "NONE", "OK", "INVERT 0x00100000"],
|
|
["2097152", "INVERT -2097153 EQUAL", "NONE", "OK", "INVERT 0x00200000"],
|
|
["4194304", "INVERT -4194305 EQUAL", "NONE", "OK", "INVERT 0x00400000"],
|
|
["8388608", "INVERT -8388609 EQUAL", "NONE", "OK", "INVERT 0x00800000"],
|
|
["16777216", "INVERT -16777217 EQUAL", "NONE", "OK", "INVERT 0x01000000"],
|
|
["33554432", "INVERT -33554433 EQUAL", "NONE", "OK", "INVERT 0x02000000"],
|
|
["67108864", "INVERT -67108865 EQUAL", "NONE", "OK", "INVERT 0x04000000"],
|
|
["134217728", "INVERT -134217729 EQUAL", "NONE", "OK", "INVERT 0x08000000"],
|
|
["268435456", "INVERT -268435457 EQUAL", "NONE", "OK", "INVERT 0x10000000"],
|
|
["536870912", "INVERT -536870913 EQUAL", "NONE", "OK", "INVERT 0x20000000"],
|
|
["1073741824", "INVERT -1073741825 EQUAL", "NONE", "OK", "INVERT 0x40000000"],
|
|
["2147483647", "INVERT -2147483648 EQUAL", "NONE", "OK", "INVERT 0x7FFFFFFF"],
|
|
["-1431655766", "INVERT 1431655765 EQUAL", "NONE", "OK", "INVERT 0xaaaaaaaa"],
|
|
["1431655765", "INVERT -1431655766 EQUAL", "NONE", "OK", "INVERT 0x55555555"],
|
|
["2147483648", "INVERT -2147483649 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "INVERT must fail with stack item >4 bytes"],
|
|
["0x7a{6}", "INVERT -134666459445883 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "INVERT must fail with a non-numeric stack item"],
|
|
["DATA_5 1 INVERT -2 EQUAL", "HASH160 DATA_20 0x88f9ba222d0bae2814099cc18437ef5a15719e4e EQUAL", "NONE", "OK", "INVERT P2SH"],
|
|
|
|
["AND test coverage"],
|
|
["", "AND 1", "NONE", "ERR_INVALID_STACK_OPERATION", "AND requires two items on the stack, stack has no items"],
|
|
["1", "AND 1", "NONE", "ERR_INVALID_STACK_OPERATION", "AND requires two items on the stack, stack has one item"],
|
|
["2147483647 0", "AND 0 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000000"],
|
|
["2147483647 1", "AND 1 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000001"],
|
|
["2147483647 2", "AND 2 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000002"],
|
|
["2147483647 4", "AND 4 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000004"],
|
|
["2147483647 8", "AND 8 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000008"],
|
|
["2147483647 16", "AND 16 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000010"],
|
|
["2147483647 32", "AND 32 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000020"],
|
|
["2147483647 64", "AND 64 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000040"],
|
|
["2147483647 128", "AND 128 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000080"],
|
|
["2147483647 256", "AND 256 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000100"],
|
|
["2147483647 512", "AND 512 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000200"],
|
|
["2147483647 1024", "AND 1024 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000400"],
|
|
["2147483647 2048", "AND 2048 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00000800"],
|
|
["2147483647 4096", "AND 4096 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00001000"],
|
|
["2147483647 8192", "AND 8192 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00002000"],
|
|
["2147483647 16384", "AND 16384 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00004000"],
|
|
["2147483647 32768", "AND 32768 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00008000"],
|
|
["2147483647 65536", "AND 65536 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00010000"],
|
|
["2147483647 131072", "AND 131072 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00020000"],
|
|
["2147483647 262144", "AND 262144 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00040000"],
|
|
["2147483647 524288", "AND 524288 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x00080000"],
|
|
["2147483647 1048576", "AND 1048576 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x000100000"],
|
|
["2147483647 2097152", "AND 2097152 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x000200000"],
|
|
["2147483647 4194304", "AND 4194304 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x000400000"],
|
|
["2147483647 8388608", "AND 8388608 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x000800000"],
|
|
["2147483647 16777216", "AND 16777216 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x001000000"],
|
|
["2147483647 33554432", "AND 33554432 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x002000000"],
|
|
["2147483647 67108864", "AND 67108864 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x004000000"],
|
|
["2147483647 134217728", "AND 134217728 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x008000000"],
|
|
["2147483647 268435456", "AND 268435456 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x10000000"],
|
|
["2147483647 536870912", "AND 536870912 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x20000000"],
|
|
["2147483647 1073741824", "AND 1073741824 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x40000000"],
|
|
["2147483647 2147483647", "AND 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x7FFFFFFF"],
|
|
["2147483647 -1431655766", "AND 715827882 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0xaaaaaaaa"],
|
|
["2147483647 1431655765", "AND 1431655765 EQUAL", "NONE", "OK", "0x7FFFFFFF AND 0x55555555"],
|
|
["2147483647 2147483648", "AND 0 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "AND must fail with any stack item >4 bytes"],
|
|
["0x7a{6} 2147483647", "AND 2054847098 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "AND must fail with any non-numeric stack item"],
|
|
["0x7a{6} 0x7a{6}", "AND 134666459445882 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "AND must fail with any non-numeric stack item"],
|
|
["DATA_9 2147483647 0 AND 0 EQUAL", "HASH160 DATA_20 0xab5dfab84209dfc72d02ac396dffc74c3f17bae4 EQUAL", "NONE", "OK", "AND P2SH"],
|
|
|
|
["OR test coverage"],
|
|
["", "OR 1", "NONE", "ERR_INVALID_STACK_OPERATION", "OR requires two items on the stack, stack has no items"],
|
|
["1", "OR 1", "NONE", "ERR_INVALID_STACK_OPERATION", "OR requires two items on the stack, stack has one item"],
|
|
["2147483647 0", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000000"],
|
|
["2147483647 1", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000001"],
|
|
["2147483647 2", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000002"],
|
|
["2147483647 4", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000004"],
|
|
["2147483647 8", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000008"],
|
|
["2147483647 16", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000010"],
|
|
["2147483647 32", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000020"],
|
|
["2147483647 64", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000040"],
|
|
["2147483647 128", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000080"],
|
|
["2147483647 256", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000100"],
|
|
["2147483647 512", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000200"],
|
|
["2147483647 1024", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000400"],
|
|
["2147483647 2048", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00000800"],
|
|
["2147483647 4096", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00001000"],
|
|
["2147483647 8192", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00002000"],
|
|
["2147483647 16384", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00004000"],
|
|
["2147483647 32768", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00008000"],
|
|
["2147483647 65536", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00010000"],
|
|
["2147483647 131072", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00020000"],
|
|
["2147483647 262144", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00040000"],
|
|
["2147483647 524288", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00080000"],
|
|
["2147483647 1048576", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00100000"],
|
|
["2147483647 2097152", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00200000"],
|
|
["2147483647 4194304", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00400000"],
|
|
["2147483647 8388608", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x00800000"],
|
|
["2147483647 16777216", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x01000000"],
|
|
["2147483647 33554432", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x02000000"],
|
|
["2147483647 67108864", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x04000000"],
|
|
["2147483647 134217728", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x08000000"],
|
|
["2147483647 268435456", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x10000000"],
|
|
["2147483647 536870912", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x20000000"],
|
|
["2147483647 1073741824", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x40000000"],
|
|
["2147483647 2147483647", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x7FFFFFFF"],
|
|
["2147483647 -1431655766", "OR -1 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0xaaaaaaaa"],
|
|
["2147483647 1431655765", "OR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF OR 0x55555555"],
|
|
["2147483647 2147483648", "OR -1 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "OR must fail with any stack item >4 bytes"],
|
|
["0x7a{6} 2147483647", "OR 134666552082431 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "OR must fail with any non-numeric stack item"],
|
|
["0x7a{6} 0x7a{6}", "OR 134666459445882 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "OR must fail with any non-numeric stack item"],
|
|
["DATA_13 2147483647 0 OR 2147483647 EQUAL", "HASH160 DATA_20 0x113fbd89047e1a8aef72cad0a7aa0a14bc122b8f EQUAL", "NONE", "OK", "OR P2SH"],
|
|
|
|
["XOR test coverage"],
|
|
["", "OR 1", "NONE", "ERR_INVALID_STACK_OPERATION", "OR requires two items on the stack, stack has no items"],
|
|
["1", "OR 1", "NONE", "ERR_INVALID_STACK_OPERATION", "OR requires two items on the stack, stack has one item"],
|
|
["2147483647 0", "XOR 2147483647 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000000"],
|
|
["2147483647 1", "XOR 2147483646 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000001"],
|
|
["2147483647 2", "XOR 2147483645 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000002"],
|
|
["2147483647 4", "XOR 2147483643 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000004"],
|
|
["2147483647 8", "XOR 2147483639 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000008"],
|
|
["2147483647 16", "XOR 2147483631 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000010"],
|
|
["2147483647 32", "XOR 2147483615 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000020"],
|
|
["2147483647 64", "XOR 2147483583 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000040"],
|
|
["2147483647 128", "XOR 2147483519 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000080"],
|
|
["2147483647 256", "XOR 2147483391 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000100"],
|
|
["2147483647 512", "XOR 2147483135 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000200"],
|
|
["2147483647 1024", "XOR 2147482623 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000400"],
|
|
["2147483647 2048", "XOR 2147481599 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00000800"],
|
|
["2147483647 4096", "XOR 2147479551 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00001000"],
|
|
["2147483647 8192", "XOR 2147475455 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00002000"],
|
|
["2147483647 16384", "XOR 2147467263 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00004000"],
|
|
["2147483647 32768", "XOR 2147450879 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00008000"],
|
|
["2147483647 65536", "XOR 2147418111 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00010000"],
|
|
["2147483647 131072", "XOR 2147352575 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00020000"],
|
|
["2147483647 262144", "XOR 2147221503 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00040000"],
|
|
["2147483647 524288", "XOR 2146959359 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00080000"],
|
|
["2147483647 1048576", "XOR 2146435071 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00100000"],
|
|
["2147483647 2097152", "XOR 2145386495 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00200000"],
|
|
["2147483647 4194304", "XOR 2143289343 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00400000"],
|
|
["2147483647 8388608", "XOR 2139095039 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x00800000"],
|
|
["2147483647 16777216", "XOR 2130706431 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x01000000"],
|
|
["2147483647 33554432", "XOR 2113929215 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x02000000"],
|
|
["2147483647 67108864", "XOR 2080374783 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x04000000"],
|
|
["2147483647 134217728", "XOR 2013265919 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x08000000"],
|
|
["2147483647 268435456", "XOR 1879048191 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x10000000"],
|
|
["2147483647 536870912", "XOR 1610612735 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x20000000"],
|
|
["2147483647 1073741824", "XOR 1073741823 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x40000000"],
|
|
["2147483647 2147483647", "XOR 0 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x7FFFFFFF"],
|
|
["2147483647 -1431655766", "XOR -715827883 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0xaaaaaaaa"],
|
|
["2147483647 1431655765", "XOR 715827882 EQUAL", "NONE", "OK", "0x7FFFFFFF XOR 0x55555555"],
|
|
["2147483647 2147483648", "XOR -1 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "XOR must fail with any stack item >4 bytes"],
|
|
["0x7a{6} 2147483647", "XOR 134664497235333 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "XOR must fail with any non-numeric stack item"],
|
|
["0x7a{6} 0x7a{6}", "XOR 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "XOR must fail with any non-numeric stack item"],
|
|
["DATA_13 2147483647 0 XOR 2147483647 EQUAL", "HASH160 DATA_20 0x3f11930aee7f857ecc7e00cb350d5748ecf59056 EQUAL", "NONE", "OK", "XOR P2SH"],
|
|
|
|
["Bitwise comparison opcode tests"],
|
|
|
|
["EQUAL test coverage"],
|
|
["0 0", "EQUAL", "NONE", "OK"],
|
|
["17", "0x01 0x11 EQUAL", "NONE", "OK", "The following is useful for checking implementations of script number interpretation"],
|
|
["127", "0x01 0x7F EQUAL", "NONE", "OK"],
|
|
["128", "0x02 0x8000 EQUAL", "NONE", "OK", "Leave room for the sign bit"],
|
|
["32767", "0x02 0xFF7F EQUAL", "NONE", "OK"],
|
|
["32768", "0x03 0x008000 EQUAL", "NONE", "OK"],
|
|
["8388607", "0x03 0xFFFF7F EQUAL", "NONE", "OK"],
|
|
["8388608", "0x04 0x00008000 EQUAL", "NONE", "OK"],
|
|
["2147483647", "0x04 0xFFFFFF7F EQUAL", "NONE", "OK"],
|
|
["2147483648", "0x05 0x0000008000 EQUAL", "NONE", "OK"],
|
|
["549755813887", "0x05 0xFFFFFFFF7F EQUAL", "NONE", "OK"],
|
|
["549755813888", "0x06 0xFFFFFFFF7F EQUAL", "NONE", "OK"],
|
|
["9223372036854775807", "0x08 0xFFFFFFFFFFFFFF7F EQUAL", "NONE", "OK"],
|
|
["-2", "0x01 0x82 EQUAL", "NONE", "OK", "Numbers are little-endian with the MSB being a sign bit"],
|
|
["-127", "0x01 0xFF EQUAL", "NONE", "OK"],
|
|
["-128", "0x02 0x8080 EQUAL", "NONE", "OK"],
|
|
["-32767", "0x02 0xFFFF EQUAL", "NONE", "OK"],
|
|
["-32768", "0x03 0x008080 EQUAL", "NONE", "OK"],
|
|
["-8388607", "0x03 0xFFFFFF EQUAL", "NONE", "OK"],
|
|
["-8388608", "0x04 0x00008080 EQUAL", "NONE", "OK"],
|
|
["-2147483647", "0x04 0xFFFFFFFF EQUAL", "NONE", "OK"],
|
|
["-2147483648", "0x05 0x0000008080 EQUAL", "NONE", "OK"],
|
|
["-4294967295", "0x05 0xFFFFFFFF80 EQUAL", "NONE", "OK"],
|
|
["-549755813887", "0x05 0xFFFFFFFFFF EQUAL", "NONE", "OK"],
|
|
["-549755813888", "0x06 0x000000008080 EQUAL", "NONE", "OK"],
|
|
["-9223372036854775807", "0x08 0xFFFFFFFFFFFFFFFF EQUAL", "NONE", "OK"],
|
|
["1", "EQUAL 1", "NONE", "ERR_INVALID_STACK_OPERATION"],
|
|
["0 0 1", "EQUAL EQUAL", "NONE", "OK", "OP_0 and bools must have identical byte representations"],
|
|
["0x00", "'00' EQUAL", "NONE", "ERR_EVAL_FALSE", "Basic OP_0 execution"],
|
|
["1", "0x02 0x0100 EQUAL NOT", "NONE", "OK", "Not the same byte array..."],
|
|
["0", "0x01 0x80 EQUAL NOT", "NONE", "OK"],
|
|
["", "EQUAL 1", "NONE", "ERR_INVALID_STACK_OPERATION", "EQUAL must error when there are no stack items"],
|
|
["0", "EQUAL 1", "NONE", "ERR_INVALID_STACK_OPERATION", "EQUAL must error when there are not 2 stack items"],
|
|
["0 1","EQUAL", "NONE", "ERR_EVAL_FALSE"],
|
|
["1 1 ADD", "0 EQUAL", "NONE", "ERR_EVAL_FALSE"],
|
|
["11 1 ADD 12 SUB", "11 EQUAL", "NONE", "ERR_EVAL_FALSE"],
|
|
["DATA_3 0 0 EQUAL", "HASH160 DATA_20 0x4e08bcc162d990a5ffa41afe3af1304341608307 EQUAL", "NONE", "OK", "EQUAL P2SH"],
|
|
|
|
["EQUALVERIFY test coverage"],
|
|
["", "EQUALVERIFY 1", "NONE", "ERR_INVALID_STACK_OPERATION", "EQUALVERIFY requires two items on the stack, stack has no items"],
|
|
["1", "EQUALVERIFY 1", "NONE", "ERR_INVALID_STACK_OPERATION", "EQUALVERIFY requires two items on the stack, stack has one item"],
|
|
["'z'{2}", "EQUALVERIFY 1", "NONE", "ERR_INVALID_STACK_OPERATION", "EQUALVERIFY requires two items on the stack, stack has one item"],
|
|
["0 0", "EQUALVERIFY 1", "NONE", "OK", "EQUALVERIFY must assert that the two numeric stack items are equivalent"],
|
|
["'z'{2} 'z'{3}","EQUALVERIFY 1", "NONE", "ERR_EQUAL_VERIFY"],
|
|
["'z'{2} 'z'{2}","EQUALVERIFY 1", "NONE", "OK", "EQUALVERIFY must assert that the two stack data pushes are equivalent"],
|
|
["DATA_4 0 0 EQUALVERIFY 1", "HASH160 DATA_20 0x0a4a8abfb73cbe8004caebb9ec6d76b976694fc9 EQUAL", "NONE", "OK", "EQUALVERIFY P2SH"],
|
|
|
|
["Bitwise rotation opcode tests"],
|
|
|
|
["ROTR test coverage"],
|
|
["-2147483647 1", "ROTR -1073741824 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 1"],
|
|
["-2147483647 2", "ROTR 1610612736 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 2"],
|
|
["-2147483647 3", "ROTR 805306368 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 3"],
|
|
["-2147483647 4", "ROTR 402653184 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 4"],
|
|
["-2147483647 5", "ROTR 201326592 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 5"],
|
|
["-2147483647 6", "ROTR 100663296 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 6"],
|
|
["-2147483647 7", "ROTR 50331648 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 7"],
|
|
["-2147483647 8", "ROTR 25165824 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 8"],
|
|
["-2147483647 9", "ROTR 12582912 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 9"],
|
|
["-2147483647 10", "ROTR 6291456 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 10"],
|
|
["-2147483647 11", "ROTR 3145728 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 11"],
|
|
["-2147483647 12", "ROTR 1572864 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 12"],
|
|
["-2147483647 13", "ROTR 786432 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 13"],
|
|
["-2147483647 14", "ROTR 393216 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 14"],
|
|
["-2147483647 15", "ROTR 196608 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 15"],
|
|
["-2147483647 16", "ROTR 98304 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 16"],
|
|
["-2147483647 17", "ROTR 49152 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 17"],
|
|
["-2147483647 18", "ROTR 24576 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 18"],
|
|
["-2147483647 19", "ROTR 12288 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 19"],
|
|
["-2147483647 20", "ROTR 6144 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 20"],
|
|
["-2147483647 21", "ROTR 3072 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 21"],
|
|
["-2147483647 22", "ROTR 1536 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 22"],
|
|
["-2147483647 23", "ROTR 768 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 23"],
|
|
["-2147483647 24", "ROTR 384 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 24"],
|
|
["-2147483647 25", "ROTR 192 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 25"],
|
|
["-2147483647 26", "ROTR 96 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 26"],
|
|
["-2147483647 27", "ROTR 48 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 27"],
|
|
["-2147483647 28", "ROTR 24 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 28"],
|
|
["-2147483647 29", "ROTR 12 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 29"],
|
|
["-2147483647 30", "ROTR 6 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 30"],
|
|
["-2147483647 31", "ROTR 3 EQUAL", "NONE", "OK", "ROTR 0x80000001 >>> 31"],
|
|
["-1431655766 1", "ROTR 1431655765 EQUAL", "NONE", "OK", "ROTR 0xaaaaaaaa >>> 1"],
|
|
["1431655765 1", "ROTR -1431655766 EQUAL", "NONE", "OK", "ROTR 0x55555555 >>> 1"],
|
|
["1 1", "ROTR -2147483648 EQUAL", "NONE", "OK", "ROTR must be able to produce a 5-byte result (0x1 >>> 1)"],
|
|
["", "ROTR NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "ROTR requires an input value"],
|
|
["1", "ROTR TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "ROTR requires a rotation count"],
|
|
["NOP 1", "ROTR TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "ROTR input value must be numeric"],
|
|
["1 NOP", "ROTR TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "ROTR rotation count must be numeric"],
|
|
["1 -1", "ROTR 2 EQUAL", "NONE", "ERR_NEGATIVE_ROTATION", "ROTR must fail with negative rotation count"],
|
|
["1 32", "ROTR 1 EQUAL", "NONE", "ERR_OVERFLOW_ROTATION", "ROTR must fail with rotation count >31"],
|
|
["2147483648 1", "ROTR 1073741824 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "ROTR must fail with input value >4 bytes"],
|
|
["1 2147483648", "ROTR TRUE", "NONE", "ERR_OUT_OF_RANGE", "ROTR must fail with rotation count >4 bytes"],
|
|
["DATA_13 -2147483647 1 ROTR -1073741824 EQUAL", "HASH160 DATA_20 0xaa3316737b8337fb1766e15e071ef85d32b56e69 EQUAL", "NONE", "OK", "ROTR P2SH"],
|
|
|
|
["ROTL test coverage"],
|
|
["-2147483647 1", "ROTL 3 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 1"],
|
|
["-2147483647 2", "ROTL 6 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 2"],
|
|
["-2147483647 3", "ROTL 12 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 3"],
|
|
["-2147483647 4", "ROTL 24 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 4"],
|
|
["-2147483647 5", "ROTL 48 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 5"],
|
|
["-2147483647 6", "ROTL 96 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 6"],
|
|
["-2147483647 7", "ROTL 192 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 7"],
|
|
["-2147483647 8", "ROTL 384 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 8"],
|
|
["-2147483647 9", "ROTL 768 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 9"],
|
|
["-2147483647 10", "ROTL 1536 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 10"],
|
|
["-2147483647 11", "ROTL 3072 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 11"],
|
|
["-2147483647 12", "ROTL 6144 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 12"],
|
|
["-2147483647 13", "ROTL 12288 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 13"],
|
|
["-2147483647 14", "ROTL 24576 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 14"],
|
|
["-2147483647 15", "ROTL 49152 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 15"],
|
|
["-2147483647 16", "ROTL 98304 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 16"],
|
|
["-2147483647 17", "ROTL 196608 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 17"],
|
|
["-2147483647 18", "ROTL 393216 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 18"],
|
|
["-2147483647 19", "ROTL 786432 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 19"],
|
|
["-2147483647 20", "ROTL 1572864 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 20"],
|
|
["-2147483647 21", "ROTL 3145728 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 21"],
|
|
["-2147483647 22", "ROTL 6291456 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 22"],
|
|
["-2147483647 23", "ROTL 12582912 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 23"],
|
|
["-2147483647 24", "ROTL 25165824 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 24"],
|
|
["-2147483647 25", "ROTL 50331648 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 25"],
|
|
["-2147483647 26", "ROTL 100663296 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 26"],
|
|
["-2147483647 27", "ROTL 201326592 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 27"],
|
|
["-2147483647 28", "ROTL 402653184 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 28"],
|
|
["-2147483647 29", "ROTL 805306368 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 29"],
|
|
["-2147483647 30", "ROTL 1610612736 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 30"],
|
|
["-2147483647 31", "ROTL -1073741824 EQUAL", "NONE", "OK", "ROTL 0x80000001 <<< 31"],
|
|
["-1431655766 1", "ROTL 1431655765 EQUAL", "NONE", "OK", "ROTL 0xaaaaaaaa <<< 1"],
|
|
["1431655765 1", "ROTL -1431655766 EQUAL", "NONE", "OK", "ROTL 0x55555555 <<< 1"],
|
|
["1 31", "ROTL -2147483648 EQUAL", "NONE", "OK", "ROTL must be able to produce a 5-byte result (0x1 <<< 31)"],
|
|
["", "ROTL NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "ROTL requires an input value"],
|
|
["1", "ROTL TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "ROTL requires a rotation count"],
|
|
["NOP 1", "ROTL NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "ROTL input value must be numeric"],
|
|
["1 NOP", "ROTL TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "ROTL rotation count must be numeric"],
|
|
["2 -1", "ROTL 1 EQUAL", "NONE", "ERR_NEGATIVE_ROTATION", "ROTL must fail with negative rotation count"],
|
|
["1 32", "ROTL 1 EQUAL", "NONE", "ERR_OVERFLOW_ROTATION", "ROTL must fail with rotation count >31"],
|
|
["2147483648 1", "ROTL 1 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "ROTL must fail with input value >4 bytes"],
|
|
["1 2147483648", "ROTL TRUE", "NONE", "ERR_OUT_OF_RANGE", "ROTL must fail with rotation count >4 bytes"],
|
|
["DATA_9 -2147483647 1 ROTL 3 EQUAL", "HASH160 DATA_20 0x1d0062fe4a4e081d3c35d796ffa23e59888270fe EQUAL", "NONE", "OK", "ROTL P2SH"],
|
|
|
|
["NUMERIC opcode tests"],
|
|
|
|
["1ADD test coverage"],
|
|
["NOP", "1ADD 1", "NONE", "ERR_INVALID_STACK_OPERATION", "1ADD requires one item on the stack and NOP must not be treated as one"],
|
|
["", "1ADD 1", "NONE", "ERR_INVALID_STACK_OPERATION", "1ADD requires one item on the stack, stack has no items"],
|
|
["1 1ADD", "2 EQUAL", "NONE", "OK"],
|
|
["2147483647", "1ADD 2147483648 EQUAL", "NONE", "OK", "We can do math on 4-byte integers, and compare 5-byte ones"],
|
|
["2147483647", "1ADD 1", "NONE", "OK"],
|
|
["-2147483647", "1ADD 1", "NONE", "OK"],
|
|
["2147483648 1ADD", "1", "NONE", "ERR_OUT_OF_RANGE", "1ADD must fail with stack item >4 bytes"],
|
|
["2147483647", "1ADD 1SUB 1", "NONE", "ERR_OUT_OF_RANGE", "We cannot do math on 5-byte integers, even if the result is 4-bytes"],
|
|
["0x02 0x0000", "1ADD DROP 1", "NONE", "ERR_MINIMAL_DATA", "1ADD must adhere to the numeric minimal encoding rule for its input"],
|
|
["DATA_4 1 1ADD 2 EQUAL", "HASH160 DATA_20 0xa272868416746cef0ad2d85f2df4ac45b40786aa EQUAL", "NONE", "OK", "1ADD P2SH"],
|
|
|
|
["1SUB test coverage"],
|
|
["NOP", "1SUB 1", "NONE", "ERR_INVALID_STACK_OPERATION", "1SUB requires one item on the stack and NOP must not be treated as one"],
|
|
["", "1SUB 1", "NONE", "ERR_INVALID_STACK_OPERATION", "1SUB requires one item on the stack, stack has no items"],
|
|
["111 1SUB", "110 EQUAL", "NONE", "OK"],
|
|
["-1 1SUB", "-2 EQUAL", "NONE", "OK", "1SUB must decrement the provided numeric stack item by one"],
|
|
["2147483648 1SUB", "1", "NONE", "ERR_OUT_OF_RANGE", "1SUB must fail with stack item >4 bytes"],
|
|
["0x02 0x0000", "1SUB DROP 1", "NONE", "ERR_MINIMAL_DATA", "1SUB must adhere to the numeric minimal encoding rule for its input"],
|
|
["DATA_6 111 1SUB 110 EQUAL", "HASH160 DATA_20 0xf4caa9dc7c142329c3ad31967648aebe7300d470 EQUAL", "NONE", "OK", "1SUB P2SH"],
|
|
|
|
["2MUL test coverage"],
|
|
["2 2MUL", "4 EQUAL", "NONE", "ERR_EVAL_FALSE", "2MUL is a NOP"],
|
|
["2", "2MUL DROP 1", "CLEANSTACK", "OK", "2MUL is NOP"],
|
|
|
|
["2DIV test coverage"],
|
|
["2 2DIV", "1 EQUAL", "NONE", "ERR_EVAL_FALSE", "2DIV is a NOP"],
|
|
["2", "2DIV DROP 1", "CLEANSTACK", "OK", "2DIV is NOP"],
|
|
|
|
["NEGATE test coverage"],
|
|
["NOP", "NEGATE 1", "NONE", "ERR_INVALID_STACK_OPERATION", "NEGATE requires an item on the stack and NOP must not be treated as one"],
|
|
["", "NEGATE -2 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NEGATE requires an item on the stack"],
|
|
["2", "NEGATE -2 EQUAL", "NONE", "OK"],
|
|
["-5", "NEGATE 5 EQUAL", "NONE", "OK", "NEGATE must replace the numeric stack item with its negative equivalent"],
|
|
["2147483648", "NEGATE -2147483648 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "NEGATE must fail with stack item >4 bytes"],
|
|
["0x02 0x0000", "NEGATE DROP 1", "NONE", "ERR_MINIMAL_DATA", "NEGATE must adhere to the numeric minimal encoding rule for its input"],
|
|
["DATA_5 2 NEGATE -2 EQUAL", "HASH160 DATA_20 0x0bd8d64ec71ecff076b1c6c78aa208d06b58d4ad EQUAL", "NONE", "OK", "NAGATE P2SH"],
|
|
|
|
["ABS test coverage"],
|
|
["NOP", "ABS 1", "NONE", "ERR_INVALID_STACK_OPERATION", "ABS requires an item on the stack and NOP must not be treated as one"],
|
|
["", "ABS 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "ABS requires an item on the stack, stack has no items"],
|
|
["0 ABS", "0 EQUAL", "NONE", "OK"],
|
|
["16 ABS", "16 EQUAL", "NONE", "OK"],
|
|
["-16 ABS", "16 EQUAL", "NONE", "OK", "ABS must replace the numeric stack item with its absolute equivalent"],
|
|
["2147483648 ABS", "2147483648 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "ABS must fail with stack item >4 bytes"],
|
|
["0x02 0x0000", "ABS DROP 1", "NONE", "ERR_MINIMAL_DATA", "ABS must adhere to the numeric minimal encoding rule for its input"],
|
|
["DATA_4 16 ABS 16 EQUAL", "HASH160 DATA_20 0x2ca153f2a5b26bc122aee8c0637e75d3829a89c1 EQUAL", "NONE", "OK", "ABS P2SH"],
|
|
|
|
["NOT test coverage"],
|
|
["", "NOT 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NOT requires an item on the stack, stack has no items"],
|
|
["NOP", "NOT 1 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NOT requires an item on the stack and NOP must not be treated as one"],
|
|
["0 NOT", "NOP", "NONE", "OK"],
|
|
["1 NOT", "0 EQUAL", "NONE", "OK", "NOT must invert the boolean value of a numeric stack item (positive numeric case)"],
|
|
["11 NOT", "0 EQUAL", "NONE", "OK"],
|
|
["-11 NOT", "0 EQUAL", "NONE", "OK", "NOT must invert the boolean value of a numeric stack item (negative numeric case)"],
|
|
["'abcdef' NOT", "0 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "NOT is an arithmetic operand"],
|
|
["0x02 0x0000", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA", "NOT must adhere to the numeric minimal encoding rule for its input"],
|
|
["DATA_4 11 NOT 0 EQUAL", "HASH160 DATA_20 0xd07d91e8ff06ac826d3b499c11b819d47f488a92 EQUAL", "NONE", "OK", "NOT P2SH"],
|
|
|
|
["0NOTEQUAL test coverage"],
|
|
["", "0NOTEQUAL 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "0NOTEQUAL requires an item on the stack, stack has no items"],
|
|
["NOP", "0NOTEQUAL 1", "NONE", "ERR_INVALID_STACK_OPERATION", "0NOTEQUAL requires an item on the stack and NOP must not be treated as one"],
|
|
["0 0NOTEQUAL", "0 EQUAL", "NONE", "OK"],
|
|
["1 0NOTEQUAL", "1 EQUAL", "NONE", "OK", "0NOTEQUAL must assert if a numeric stack item is not equal to zero."],
|
|
["111 0NOTEQUAL", "1 EQUAL", "NONE", "OK"],
|
|
["-111 0NOTEQUAL", "1 EQUAL", "NONE", "OK"],
|
|
["2147483648", "0NOTEQUAL 0 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "0NOTEQUAL must fail with stack item >4 bytes"],
|
|
["0x02 0x0000", "0NOTEQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA", "0NOTEQUAL must adhere to the numeric minimal encoding rule for its input"],
|
|
["DATA_4 0 0NOTEQUAL 0 EQUAL", "HASH160 DATA_20 0xeba74546154648925fe78ed19ba93611d1d153aa EQUAL", "NONE", "OK", "0NOTEQUAL P2SH"],
|
|
|
|
["ADD test coverage"],
|
|
["NOP", "ADD 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "ADD requires two items on the stack and NOP must not be treated as one"],
|
|
["", "ADD 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "ADD requires two items on the stack, stack has no items"],
|
|
["0", "ADD 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "ADD requires two items on the stack, stack has one item"],
|
|
["2 -2 ADD", "0 EQUAL", "NONE", "OK", "ADD must add the first and second stack items"],
|
|
["2147483647 -2147483647 ADD", "0 EQUAL", "NONE", "OK"],
|
|
["2147483647 DUP ADD", "4294967294 EQUAL", "NONE", "OK", ">32 bit EQUAL is valid"],
|
|
["2147483647 NEGATE DUP ADD", "-4294967294 EQUAL", "NONE", "OK"],
|
|
["-1 -1 ADD", "-2 EQUAL", "NONE", "OK"],
|
|
["1", "ADD", "NONE", "ERR_INVALID_STACK_OPERATION"],
|
|
["2147483648 0 ADD", "NOP", "NONE", "ERR_OUT_OF_RANGE", "Arithmetic operands must be in range [-2^31...2^31] (positive numeric case)"],
|
|
["-2147483648 0 ADD", "NOP", "NONE", "ERR_OUT_OF_RANGE", "Arithmetic operands must be in range [-2^31...2^31] (negative numerica case)"],
|
|
["2147483648 1", "ADD 2147483649 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "ADD must fail with second operand >4 bytes"],
|
|
["1 2147483648", "ADD 2147483649 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "ADD must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "ADD DROP 1", "NONE", "ERR_MINIMAL_DATA", "ADD must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "ADD DROP 1", "NONE", "ERR_MINIMAL_DATA", "ADD must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_13 2147483647 -2147483647 ADD 0 EQUAL", "HASH160 DATA_20 0xd81007a754f14c6dae057bc69febd13d6a4ef17d EQUAL", "NONE", "OK", "ADD P2SH"],
|
|
|
|
["SUB test coverage"],
|
|
["NOP", "SUB 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "SUB requires two items on the stack and NOP must not be treated as one"],
|
|
["", "SUB 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "SUB requires two items on the stack, stack has no items"],
|
|
["0", "SUB 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "SUB requires two items on the stack, stack has one item"],
|
|
["2 -2 SUB", "4 EQUAL", "NONE", "OK", "SUB must subtract the first stack item from the second stack item"],
|
|
["2147483647 2147483647 SUB", "0 EQUAL", "NONE", "OK"],
|
|
["111 1 ADD 12 SUB", "100 EQUAL", "NONE", "OK"],
|
|
["-1 1 SUB", "-2 EQUAL", "NONE", "OK"],
|
|
["2147483648 1", "SUB 2147483647 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "SUB must fail with second operand >4 bytes"],
|
|
["1 2147483648", "SUB 2147483647 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "SUB must fail with first operand >4 bytes"],
|
|
["1 0x02 0x0100", "SUB DROP 1", "NONE", "ERR_MINIMAL_DATA", "SUB must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0100 1", "SUB DROP 1", "NONE", "ERR_MINIMAL_DATA", "SUB must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_13 2147483647 2147483647 SUB 0 EQUAL", "HASH160 DATA_20 0x7e33d13f0c975afd37ddb2dc3ebca61194da08bd EQUAL", "NONE", "OK", "SUB P2SH"],
|
|
|
|
["MUL test coverage"],
|
|
["NOP", "MUL 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "MUL requires two items on the stack and NOP must not be treated as one"],
|
|
["", "MUL 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "MUL requires two items on the stack, stack has no items"],
|
|
["2", "MUL 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "MUL requires two items on the stack, stack has one item"],
|
|
["2 DUP MUL", "4 EQUAL", "NONE", "OK", "MUL must multiply the first stack item with the second stack item"],
|
|
["2 0 MUL", "0 EQUAL", "NONE", "OK"],
|
|
["254 1 MUL", "254 EQUAL", "NONE", "OK"],
|
|
["-12 12 MUL", "-144 EQUAL", "NONE", "OK"],
|
|
["2147483648 2", "MUL", "NONE", "ERR_OUT_OF_RANGE", "MUL must fail with second operand >4 bytes"],
|
|
["2 2147483648", "MUL", "NONE", "ERR_OUT_OF_RANGE", "MUL must fail with first operand item >4 bytes"],
|
|
["1 0x02 0x0100", "MUL DROP 1", "NONE", "ERR_MINIMAL_DATA", "MUL must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0100 1", "MUL DROP 1", "NONE", "ERR_MINIMAL_DATA", "MUL must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_5 2 0 MUL 0 EQUAL", "HASH160 DATA_20 0xa7a66f1e05f339792f73c14f841334637f35e839 EQUAL", "NONE", "OK", "MUL P2SH"],
|
|
|
|
["DIV test coverage"],
|
|
["7 3", "DIV 2 EQUAL", "NONE", "OK", "DIV must perform integer division (7 / 3)"],
|
|
["8 3", "DIV 2 EQUAL", "NONE", "OK", "DIV must perform integer division (8 / 3)"],
|
|
["6 3", "DIV 2 EQUAL", "NONE", "OK", "DIV must support a positive dividend and divisor"],
|
|
["-6 3", "DIV -2 EQUAL", "NONE", "OK", "DIV must support a negative dividend with positive divisor"],
|
|
["6 -3", "DIV -2 EQUAL", "NONE", "OK", "DIV must support a positive dividend with negative divisor"],
|
|
["-6 -3", "DIV 2 EQUAL", "NONE", "OK", "DIV must support a negative dividend and divisor"],
|
|
["-2147483647 DUP", "DIV 1 EQUAL", "NONE", "OK", "DIV must support 4-byte negative int32"],
|
|
["2 DUP DIV", "1 EQUAL", "NONE", "OK", "DIV must support duplicated stack items"],
|
|
["", "DIV TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "DIV requires a divisor"],
|
|
["3", "DIV TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "DIV requires a dividend"],
|
|
["NOP 3", "DIV TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "DIV dividend must be numeric"],
|
|
["6 NOP", "DIV TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "DIV divisor must be numeric"],
|
|
["6 0", "DIV TRUE", "NONE", "ERR_DIVIDE_BY_ZERO", "DIV must fail with zero divisor"],
|
|
["1 2147483648", "DIV TRUE", "NONE", "ERR_OUT_OF_RANGE", "DIV must fail with divisor >4 bytes"],
|
|
["2147483648 1073741824", "DIV TRUE", "NONE", "ERR_OUT_OF_RANGE", "DIV must fail with dividend >4 bytes"],
|
|
["1 0x02 0x0100", "DIV DROP 1", "NONE", "ERR_MINIMAL_DATA", "DIV must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0100 1", "DIV DROP 1", "NONE", "ERR_MINIMAL_DATA", "DIV must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_5 6 3 DIV 2 EQUAL", "HASH160 DATA_20 0x3db5b2f48131b5737f19a81c5d28f19745948ae4 EQUAL", "NONE", "OK", "DIV P2SH"],
|
|
|
|
["MOD test coverage"],
|
|
["7 3", "MOD 1 EQUAL", "NONE", "OK", "MOD must produce expected result (7%3)"],
|
|
["8 3", "MOD 2 EQUAL", "NONE", "OK", "MOD must produce expected result (8%3)"],
|
|
["6 3", "MOD 0 EQUAL", "NONE", "OK", "MOD must support a positive dividend and divisor"],
|
|
["-7 3", "MOD -1 EQUAL", "NONE", "OK", "MOD must support a negative dividend with positive divisor with negative result"],
|
|
["7 -3", "MOD 1 EQUAL", "NONE", "OK", "MOD must support a positive dividend with negative divisor with positve result"],
|
|
["-7 -3", "MOD -1 EQUAL", "NONE", "OK", "MOD must support a negative dividend and divisor with negative result"],
|
|
["-2147483647 1073741823", "MOD -1 EQUAL", "NONE", "OK", "MOD must support 4-byte negative int32"],
|
|
["", "MOD TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "MOD requires a divisor"],
|
|
["3", "MOD TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "MOD requires a dividend"],
|
|
["NOP 3", "MOD TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "MOD dividend must be numeric"],
|
|
["6 NOP", "MOD TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "MOD divisor must be numeric"],
|
|
["6 0", "MOD TRUE", "NONE", "ERR_DIVIDE_BY_ZERO", "MOD must fail with zero divisor"],
|
|
["1 2147483648", "MOD TRUE", "NONE", "ERR_OUT_OF_RANGE", "MOD must fail with divisor >4 bytes"],
|
|
["2147483648 1073741824", "MOD TRUE", "NONE", "ERR_OUT_OF_RANGE", "MOD must fail with dividend >4 bytes"],
|
|
["1 0x02 0x0100", "MOD DROP 1", "NONE", "ERR_MINIMAL_DATA", "MOD must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0100 1", "MOD DROP 1", "NONE", "ERR_MINIMAL_DATA", "MOD must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_5 6 3 MOD 0 EQUAL", "HASH160 DATA_20 0x8f80484840425996d4aab67f6566ba8810adcd29 EQUAL", "NONE", "OK", "MOD P2SH"],
|
|
|
|
["LSHIFT test coverage"],
|
|
["1 1", "LSHIFT 2 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 1"],
|
|
["1 2", "LSHIFT 4 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 2"],
|
|
["1 3", "LSHIFT 8 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 3"],
|
|
["1 4", "LSHIFT 16 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 4"],
|
|
["1 5", "LSHIFT 32 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 5"],
|
|
["1 6", "LSHIFT 64 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 6"],
|
|
["1 7", "LSHIFT 128 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 7"],
|
|
["1 8", "LSHIFT 256 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 8"],
|
|
["1 9", "LSHIFT 512 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 9"],
|
|
["1 10", "LSHIFT 1024 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 10"],
|
|
["1 11", "LSHIFT 2048 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 11"],
|
|
["1 12", "LSHIFT 4096 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 12"],
|
|
["1 13", "LSHIFT 8192 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 13"],
|
|
["1 14", "LSHIFT 16384 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 14"],
|
|
["1 15", "LSHIFT 32768 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 15"],
|
|
["1 16", "LSHIFT 65536 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 16"],
|
|
["1 17", "LSHIFT 131072 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 17"],
|
|
["1 18", "LSHIFT 262144 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 18"],
|
|
["1 19", "LSHIFT 524288 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 19"],
|
|
["1 20", "LSHIFT 1048576 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 20"],
|
|
["1 21", "LSHIFT 2097152 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 21"],
|
|
["1 22", "LSHIFT 4194304 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 22"],
|
|
["1 23", "LSHIFT 8388608 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 23"],
|
|
["1 24", "LSHIFT 16777216 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 24"],
|
|
["1 25", "LSHIFT 33554432 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 25"],
|
|
["1 26", "LSHIFT 67108864 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 26"],
|
|
["1 27", "LSHIFT 134217728 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 27"],
|
|
["1 28", "LSHIFT 268435456 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 28"],
|
|
["1 29", "LSHIFT 536870912 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 29"],
|
|
["1 30", "LSHIFT 1073741824 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 30"],
|
|
["1 31", "LSHIFT -2147483648 EQUAL", "NONE", "OK", "LSHIFT must be able to produce a 5-byte result (0x1 << 31)"],
|
|
["1 32", "LSHIFT 0 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 32"],
|
|
["-1431655766 1", "LSHIFT 1431655764 EQUAL", "NONE", "OK", "LSHIFT 0xaaaaaaaa << 1"],
|
|
["1431655765 1", "LSHIFT -1431655766 EQUAL", "NONE", "OK", "LSHIFT 0x55555555 << 1"],
|
|
["", "LSHIFT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "LSHIFT requires an input value"],
|
|
["1", "LSHIFT TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "LSHIFT requires a shift count"],
|
|
["NOP 1", "LSHIFT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "LSHIFT input value must be numeric"],
|
|
["1 NOP", "LSHIFT TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "LSHIFT shift count must be numeric"],
|
|
["2 -1", "LSHIFT 1 EQUAL", "NONE", "ERR_NEGATIVE_SHIFT", "LSHIFT must fail with negative shift count"],
|
|
["1 33", "LSHIFT 0 EQUAL", "NONE", "ERR_OVERFLOW_SHIFT", "LSHIFT must fail with shift count >32"],
|
|
["2147483648 1", "LSHIFT TRUE", "NONE", "ERR_OUT_OF_RANGE", "LSHIFT must fail with input value >4 bytes"],
|
|
["1 2147483648", "LSHIFT TRUE", "NONE", "ERR_OUT_OF_RANGE", "LSHIFT must fail with shift count >4 bytes"],
|
|
["1 0x02 0x0000", "LSHIFT DROP 1", "NONE", "ERR_MINIMAL_DATA", "LSHIFT must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "LSHIFT DROP 1", "NONE", "ERR_MINIMAL_DATA", "RSHIFT must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["1 1 DATA_3 LSHIFT 2 EQUAL", "HASH160 DATA_20 0x280f0ec7ba64c1969d5a995be08f89667511ed65 EQUAL", "NONE", "OK", "LSHIFT P2SH"],
|
|
|
|
["RSHIFT test coverage"],
|
|
["1073741825 1", "RSHIFT 536870912 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 1"],
|
|
["1073741825 2", "RSHIFT 268435456 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 2"],
|
|
["1073741825 3", "RSHIFT 134217728 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 3"],
|
|
["1073741825 4", "RSHIFT 67108864 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 4"],
|
|
["1073741825 5", "RSHIFT 33554432 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 5"],
|
|
["1073741825 6", "RSHIFT 16777216 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 6"],
|
|
["1073741825 7", "RSHIFT 8388608 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 7"],
|
|
["1073741825 8", "RSHIFT 4194304 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 8"],
|
|
["1073741825 9", "RSHIFT 2097152 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 9"],
|
|
["1073741825 10", "RSHIFT 1048576 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 10"],
|
|
["1073741825 11", "RSHIFT 524288 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 11"],
|
|
["1073741825 12", "RSHIFT 262144 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 12"],
|
|
["1073741825 13", "RSHIFT 131072 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 13"],
|
|
["1073741825 14", "RSHIFT 65536 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 14"],
|
|
["1073741825 15", "RSHIFT 32768 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 15"],
|
|
["1073741825 16", "RSHIFT 16384 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 16"],
|
|
["1073741825 17", "RSHIFT 8192 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 17"],
|
|
["1073741825 18", "RSHIFT 4096 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 18"],
|
|
["1073741825 19", "RSHIFT 2048 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 19"],
|
|
["1073741825 20", "RSHIFT 1024 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 20"],
|
|
["1073741825 21", "RSHIFT 512 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 21"],
|
|
["1073741825 22", "RSHIFT 256 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 22"],
|
|
["1073741825 23", "RSHIFT 128 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 23"],
|
|
["1073741825 24", "RSHIFT 64 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 24"],
|
|
["1073741825 25", "RSHIFT 32 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 25"],
|
|
["1073741825 26", "RSHIFT 16 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 26"],
|
|
["1073741825 27", "RSHIFT 8 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 27"],
|
|
["1073741825 28", "RSHIFT 4 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 28"],
|
|
["1073741825 29", "RSHIFT 2 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 29"],
|
|
["1073741825 30", "RSHIFT 1 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 30"],
|
|
["1073741825 31", "RSHIFT 0 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 31"],
|
|
["-1 1", "RSHIFT -1 EQUAL", "NONE", "OK", "RSHIFT of negative number must shift 1s into the high bits (0xffffffff >> 1)"],
|
|
["-1 2", "RSHIFT -1 EQUAL", "NONE", "OK", "RSHIFT of negative number must shift 1s into the high bits (0xffffffff >> 2)"],
|
|
["-1 3", "RSHIFT -1 EQUAL", "NONE", "OK", "RSHIFT of negative number must shift 1s into the high bits (0xffffffff >> 3)"],
|
|
["-2147483647 1", "RSHIFT -1073741824 EQUAL", "NONE", "OK", "RSHIFT of negative number must shift 1s into the high bits (0x80000001 >> 1)"],
|
|
["-2147483647 3", "RSHIFT -268435456 EQUAL", "NONE", "OK", "RSHIFT of negative number must shift 1s into the high bits (0x80000001 >> 3)"],
|
|
["-1431655766 1", "RSHIFT -715827883 EQUAL", "NONE", "OK", "RSHIFT of negative number must shit 1s into the high bits (0xaaaaaaaa >> 1)"],
|
|
["1431655765 1", "RSHIFT 715827882 EQUAL", "NONE", "OK", "RSHIFT 0x55555555 >> 1"],
|
|
["", "RSHIFT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "RSHIFT requires an input value"],
|
|
["1", "RSHIFT TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "RSHIFT requires a shift count"],
|
|
["NOP 1", "RSHIFT NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "RSHIFT input value must be numeric"],
|
|
["1 NOP", "RSHIFT TRUE", "NONE", "ERR_INVALID_STACK_OPERATION", "RSHIFT shift count must be numeric"],
|
|
["1 -1", "RSHIFT 2 EQUAL", "NONE", "ERR_NEGATIVE_SHIFT", "RSHIFT must fail with negative shift count"],
|
|
["1 33", "RSHIFT 0 EQUAL", "NONE", "ERR_OVERFLOW_SHIFT", "RSHIFT must fail with shift count >32"],
|
|
["2147483648 1", "RSHIFT TRUE", "NONE", "ERR_OUT_OF_RANGE", "RSHIFT must fail with input value >4 bytes"],
|
|
["1 2147483648", "RSHIFT TRUE", "NONE", "ERR_OUT_OF_RANGE", "RSHIFT must fail with shift count >4 bytes"],
|
|
["0 0x02 0x0000", "RSHIFT DROP 1", "NONE", "ERR_MINIMAL_DATA", "RSHIFT must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "RSHIFT DROP 1", "NONE", "ERR_MINIMAL_DATA", "RSHIFT must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_10 1073741825 31 RSHIFT 0 EQUAL", "HASH160 DATA_20 0x585e02de76647b345cfe3ebe13551b94b222bf2e EQUAL", "NONE", "OK", "RSHIFT P2SH"],
|
|
|
|
["BOOLAND test coverage"],
|
|
["NOP BOOLAND", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "BOOLAND requires two items on the stack and NOP must not be treated as one"],
|
|
["BOOLAND", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "BOOLAND requires two items on the stack, stack has no items"],
|
|
["0 BOOLAND", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "BOOLAND requires two items on the stack, stack has one item"],
|
|
["1 1 BOOLAND", "NOP", "NONE", "OK", "BOOLAND must perform a logical and operation on the boolean values of the first two stack items"],
|
|
["1 0 BOOLAND", "NOT", "NONE", "OK"],
|
|
["0 1 BOOLAND", "NOT", "NONE", "OK"],
|
|
["0 0 BOOLAND", "NOT", "NONE", "OK"],
|
|
["2147483648 1 BOOLAND", "NOT", "NONE", "ERR_OUT_OF_RANGE", "BOOLAND must fail with second operand >4 bytes"],
|
|
["1 2147483648 BOOLAND", "NOT", "NONE", "ERR_OUT_OF_RANGE", "BOOLAND must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "BOOLAND DROP 1", "NONE", "ERR_MINIMAL_DATA", "BOOLAND must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "BOOLAND DROP 1", "NONE", "ERR_MINIMAL_DATA", "BOOLAND must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_4 1 0 BOOLAND NOT", "HASH160 DATA_20 0x294e1e7756a3196d384005be0b18a1cc95d17a7a EQUAL", "NONE", "OK", "BOOLAND P2SH"],
|
|
|
|
["BOOLOR test coverage"],
|
|
["NOP BOOLOR", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "BOOLOR requires two input values and NOP must not be treated as one"],
|
|
["BOOLOR", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "BOOLOR requires two input values, stack has no items"],
|
|
["0 BOOLOR", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "BOOLOR requires two items on the stack, stack has no items"],
|
|
["1 1 BOOLOR", "NOP", "NONE", "OK", "BOOLOR must perform a logical and operation the boolean values of the first two stack items"],
|
|
["1 0 BOOLOR", "NOP", "NONE", "OK"],
|
|
["0 1 BOOLOR", "NOP", "NONE", "OK"],
|
|
["0 0 BOOLOR", "NOT", "NONE", "OK"],
|
|
["2147483648 1 BOOLOR", "NOT", "NONE", "ERR_OUT_OF_RANGE", "BOOLOR must fail with second operand >4 bytes"],
|
|
["1 2147483648 BOOLOR", "NOT", "NONE", "ERR_OUT_OF_RANGE", "BOOLOR must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "BOOLOR DROP 1", "NONE", "ERR_MINIMAL_DATA", "BOOLOR must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "BOOLOR DROP 1", "NONE", "ERR_MINIMAL_DATA", "BOOLOR must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["2147483648 1 BOOLOR", "NOT", "NONE", "ERR_OUT_OF_RANGE", "BOOLAND must fail with second operand >4 bytes"],
|
|
["1 2147483648 BOOLOR", "NOT", "NONE", "ERR_OUT_OF_RANGE", "BOOLAND must fail with first operand >4 bytes"],
|
|
["DATA_3 1 0 BOOLOR", "HASH160 DATA_20 0xd7453f9ed4c386e00c452d048d13ecac410869fe EQUAL", "NONE", "OK", "BOOLOR P2SH"],
|
|
|
|
["NUMEQUAL test coverage"],
|
|
["NOP", "NUMEQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMEQUAL requires two items on the stack and NOP must not be treated as one"],
|
|
["", "NUMEQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMEQUAL requires two items on the stack, stack has no items"],
|
|
["-1", "NUMEQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMEQUAL requires two items on the stack, stack has one item"],
|
|
["11 10 1 ADD", "NUMEQUAL", "NONE", "OK", "NUMEQUAL must compare the first numeric stack item to the second numeric stack item and check if they are equal"],
|
|
["-200 200", "NUMEQUAL NOT", "NONE", "OK"],
|
|
["-1 -1", "NUMEQUAL", "NONE", "OK"],
|
|
["11", "0x4c 0x03 0x0b0000 NUMEQUAL", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x03 0x000080", "0x04 0x00000080 NUMEQUAL", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x03 0x100080", "0x04 0x10000080 NUMEQUAL", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x03 0x100000", "0x04 0x10000000 NUMEQUAL", "NONE", "ERR_MINIMAL_DATA"],
|
|
["2147483648 1 NUMEQUAL", "NOT", "NONE", "ERR_OUT_OF_RANGE", "NUMEQUAL must fail with second operand >4 bytes"],
|
|
["1 2147483648 NUMEQUAL", "NOT", "NONE", "ERR_OUT_OF_RANGE", "NUMEQUAL must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "NUMEQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA", "NUMEQUAL must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 1", "NUMEQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA", "NUMEQUAL must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_8 -200 200 NUMEQUAL NOT", "HASH160 DATA_20 0x1a25e0bf164792f8f3874e4832070539bec2226a EQUAL", "NONE", "OK", "NUMEQUAL P2SH"],
|
|
|
|
["Equivalency of different numeric encodings"],
|
|
["0x02 0x8000", "128 NUMEQUAL", "NONE", "OK", "0x8000 equals 128"],
|
|
["0", "0x01 0x80 NUMEQUAL", "NONE", "ERR_MINIMAL_DATA", "Zero numerically equals negative zero but rejected by minimal data encoding requirements"],
|
|
["0", "0x02 0x0080 NUMEQUAL", "NONE", "ERR_MINIMAL_DATA", "Zero numerically equals negative zero with padding but rejected by minimal data encoding requirements"],
|
|
["1", "0x02 0x0100 NUMEQUAL", "NONE", "ERR_MINIMAL_DATA", "Numerically equal but rejected by minimal data encoding requirements"],
|
|
["0x01 0x00", "0 NUMEQUAL", "NONE", "ERR_MINIMAL_DATA", "0x00 numequals 0 but rejected by minimal data encoding requirements"],
|
|
["0x01 0x80", "0 NUMEQUAL", "NONE", "ERR_MINIMAL_DATA", "0x80 (negative zero) numequals 0 but rejected by minimal data encoding requirements"],
|
|
["0x02 0x0080", "0 NUMEQUAL", "NONE", "ERR_MINIMAL_DATA", "0x0080 numequals 0 but rejected by minimal data encoding requirements"],
|
|
["0x02 0x0500", "5 NUMEQUAL", "NONE", "ERR_MINIMAL_DATA", "0x0500 numequals 5 but rejected by minimal data encoding requirements"],
|
|
["0x03 0xff7f80", "0x02 0xffff NUMEQUAL", "NONE", "ERR_MINIMAL_DATA", "0xff7f80 numequals 0xfffff but rejected by minimal data encoding requirements"],
|
|
["0x03 0xff7f00", "0x02 0xff7f NUMEQUAL", "NONE", "ERR_MINIMAL_DATA", "0xff7f00 numequals 0xff7f but rejected by minimal data encoding requirements"],
|
|
["0x04 0xffff7f80", "0x03 0xffffff NUMEQUAL", "NONE", "ERR_MINIMAL_DATA", "0xffff7f80 numequals 0xffffff but rejected by minimal data encoding requirements"],
|
|
["0x04 0xffff7f00", "0x03 0xffff7f NUMEQUAL", "NONE", "ERR_MINIMAL_DATA", "0xffff7f00 numequals 0xffff7f but rejected by minimal data encoding requirements"],
|
|
|
|
["NUMEQUALVERIFY test coverage"],
|
|
["NOP NUMEQUALVERIFY", "1", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMEQUALVERIFY requires two stack items and NOP must not be treated as one"],
|
|
["NUMEQUALVERIFY", "1", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMEQUALVERIFY requires two stack items, stack has no items"],
|
|
["0 NUMEQUALVERIFY", "1", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMEQUALVERIFY requires two stack items, stack has one item"],
|
|
["11 10 1 ADD", "NUMEQUALVERIFY 1", "NONE", "OK", "NUMEQUALVERIFY must compare the first numeric stack item to the second numeric stack item, check if they are equal and verify the result"],
|
|
["-1 -1", "NUMEQUALVERIFY 1", "NONE", "OK"],
|
|
["2147483648 1", "NUMEQUALVERIFY 1", "NONE", "ERR_OUT_OF_RANGE", "NUMEQUALVERIFY must fail with second operand >4 bytes"],
|
|
["1 2147483648", "NUMEQUALVERIFY 1", "NONE", "ERR_OUT_OF_RANGE", "NUMEQUALVERIFY must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "NUMEQUALVERIFY 1", "NONE", "ERR_MINIMAL_DATA", "NUMEQUALVERIFY must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "NUMEQUALVERIFY 1", "NONE", "ERR_MINIMAL_DATA", "NUMEQUALVERIFY must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_4 -1 -1 NUMEQUALVERIFY 1", "HASH160 DATA_20 0x116d560aa0019ad5613397fa970d867685c61f39 EQUAL", "NONE", "OK", "NUMEQUALVERIFY P2SH"],
|
|
|
|
["NUMNOTEQUAL test coverage"],
|
|
["NOP", "NUMNOTEQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMNOTEQUAL requires two stack items and NOP must not be treated as one"],
|
|
["", "NUMNOTEQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMNOTEQUAL requires two stack items, stack has no items"],
|
|
["0", "NUMNOTEQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMNOTEQUAL requires two stack items, stack has one item"],
|
|
["11 10 1 ADD", "NUMNOTEQUAL NOT", "NONE", "OK", "NUMNOTEQUAL must compare the first numeric stack item to the second numeric stack item and check if they are not equal" ],
|
|
["111 10 1 ADD", "NUMNOTEQUAL", "NONE", "OK"],
|
|
["1 -1", "NUMNOTEQUAL", "NONE", "OK"],
|
|
["2147483648 1", "NUMNOTEQUAL", "NONE", "ERR_OUT_OF_RANGE", "NUMNOTEQUAL must fail with second operand >4 bytes"],
|
|
["1 2147483648", "NUMNOTEQUAL", "NONE", "ERR_OUT_OF_RANGE", "NUMNOTEQUAL must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "NUMNOTEQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA", "NUMNOTEQUAL must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "NUMNOTEQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA", "NUMNOTEQUAL must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_3 1 -1 NUMNOTEQUAL", "HASH160 DATA_20 0x533878df36ec5bf475cf95c8e486c4d640f5d51d EQUAL", "NONE", "OK", "NUMNOTEQUAL P2SH"],
|
|
|
|
["LESSTHAN test coverage"],
|
|
["NOP", "LESSTHAN", "NONE", "ERR_INVALID_STACK_OPERATION", "LESSTHAN requires two items on the stack and NOP must not be treated as one"],
|
|
["", "LESSTHAN", "NONE", "ERR_INVALID_STACK_OPERATION", "LESSTHAN requires two items on the stack, stack has no items"],
|
|
["0", "LESSTHAN", "NONE", "ERR_INVALID_STACK_OPERATION", "LESSTHAN requires two items on the stack, stack has one item"],
|
|
["11 10", "LESSTHAN NOT", "NONE", "OK", "LESSTHAN must check if the first numeric stack item is less than the second numeric stack item"],
|
|
["4 4", "LESSTHAN NOT", "NONE", "OK"],
|
|
["10 11", "LESSTHAN", "NONE", "OK"],
|
|
["-11 11", "LESSTHAN", "NONE", "OK"],
|
|
["-11 -10", "LESSTHAN", "NONE", "OK"],
|
|
["2147483648 1", "LESSTHAN", "NONE", "ERR_OUT_OF_RANGE", "LESSTHAN must fail with second operand >4 bytes"],
|
|
["1 2147483648", "LESSTHAN", "NONE", "ERR_OUT_OF_RANGE", "LESSTHAN must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "LESSTHAN DROP 1", "NONE", "ERR_MINIMAL_DATA", "LESSTHAN must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "LESSTHAN DROP 1", "NONE", "ERR_MINIMAL_DATA", "LESSTHAN must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_3 10 11 LESSTHAN", "HASH160 DATA_20 0x60a95022d7df505975a403427eac5e1cc1be7064 EQUAL", "NONE", "OK", "LESSTHAN P2SH"],
|
|
|
|
["GREATERTHAN test coverage"],
|
|
["NOP", "GREATERTHAN", "NONE", "ERR_INVALID_STACK_OPERATION", "GREATERTHAN requires two items on the stack and NOP must not be treated as one"],
|
|
["", "GREATERTHAN", "NONE", "ERR_INVALID_STACK_OPERATION", "GREATERTHAN requires two items on the stack, stack has no items"],
|
|
["0", "GREATERTHAN", "NONE", "ERR_INVALID_STACK_OPERATION", "GREATERTHAN requires two items on the stack, stack has one item"],
|
|
["11 10", "GREATERTHAN", "NONE", "OK", "GREATERTHAN must check if the first numeric stack item is greater than the second numeric stack item"],
|
|
["4 4", "GREATERTHAN NOT", "NONE", "OK"],
|
|
["10 11", "GREATERTHAN NOT", "NONE", "OK"],
|
|
["-11 11", "GREATERTHAN NOT", "NONE", "OK"],
|
|
["-11 -10", "GREATERTHAN NOT", "NONE", "OK"],
|
|
["2147483648 1", "GREATERTHAN", "NONE", "ERR_OUT_OF_RANGE", "GREATERTHAN must fail with second operand >4 bytes"],
|
|
["1 2147483648", "GREATERTHAN", "NONE", "ERR_OUT_OF_RANGE", "GREATERTHAN must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "GREATERTHAN DROP 1", "NONE", "ERR_MINIMAL_DATA", "GREATERTHAN must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "GREATERTHAN DROP 1", "NONE", "ERR_MINIMAL_DATA", "GREATERTHAN must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_4 10 11 GREATERTHAN NOT", "HASH160 DATA_20 0x3d4b814397b8873cb8eedd533489dcd21df751a8 EQUAL", "NONE", "OK", "GREATERTHAN P2SH"],
|
|
|
|
["LESSTHANOREQUAL test coverage"],
|
|
["NOP", "LESSTHANOREQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "LESSTHANOREQUAL requires two items on the stack and NOP must not be treated as one"],
|
|
["", "LESSTHANOREQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "LESSTHANOREQUAL requires two items on the stack, stack has no items"],
|
|
["0", "LESSTHANOREQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "LESSTHANOREQUAL requires two items on the stack, stack has one item"],
|
|
["11 10", "LESSTHANOREQUAL NOT", "NONE", "OK", "LESSTHANOREQUAL must check if the first numeric stack item is less than or equal to the second numeric stack item"],
|
|
["4 4", "LESSTHANOREQUAL", "NONE", "OK"],
|
|
["10 11", "LESSTHANOREQUAL", "NONE", "OK"],
|
|
["-11 11", "LESSTHANOREQUAL", "NONE", "OK"],
|
|
["-11 -10", "LESSTHANOREQUAL", "NONE", "OK"],
|
|
["2147483648 1", "LESSTHANOREQUAL", "NONE", "ERR_OUT_OF_RANGE", "LESSTHANOREQUAL must fail with second operand item >4 bytes"],
|
|
["1 2147483648", "LESSTHANOREQUAL", "NONE", "ERR_OUT_OF_RANGE", "LESSTHANOREQUAL must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "LESSTHANOREQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA", "LESSTHANOREQUAL must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "LESSTHANOREQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA", "LESSTHANOREQUAL must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_3 10 11 LESSTHANOREQUAL", "HASH160 DATA_20 0x1ead2c9b104c6dec3afb066b3dc29cf3cd39e1c4 EQUAL", "NONE", "OK", "LESSTHANOREQUAL P2SH"],
|
|
|
|
["GREATERTHANOREQUAL test coverage"],
|
|
["NOP", "GREATERTHANOREQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "GREATERTHANOREQUAL requires two items on the stack and NOP must not be treated as one"],
|
|
["", "GREATERTHANOREQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "GREATERTHANOREQUAL requires two items on the stack, stack has no items"],
|
|
["0", "GREATERTHANOREQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "GREATERTHANOREQUAL requires two items on the stack, stack has one item"],
|
|
["11 10", "GREATERTHANOREQUAL", "NONE", "OK", "GREATERTHANOREQUAL must check if the first numeric stack item is greater then or equal to the second numeric stack item"],
|
|
["4 4", "GREATERTHANOREQUAL", "NONE", "OK"],
|
|
["10 11", "GREATERTHANOREQUAL NOT", "NONE", "OK"],
|
|
["-11 11", "GREATERTHANOREQUAL NOT", "NONE", "OK"],
|
|
["-11 -10", "GREATERTHANOREQUAL NOT", "NONE", "OK"],
|
|
["2147483648 1", "GREATERTHANOREQUAL", "NONE", "ERR_OUT_OF_RANGE", "GREATERTHANOREQUAL must fail with second operand >4 bytes"],
|
|
["1 2147483648", "GREATERTHANOREQUAL", "NONE", "ERR_OUT_OF_RANGE", "GREATERTHANOREQUAL must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "GREATERTHANOREQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA", "GREATERTHANOREQUAL must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "GREATERTHANOREQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA", "GREATERTHANOREQUAL must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_4 10 11 GREATERTHANOREQUAL NOT", "HASH160 DATA_20 0x7ddf08db37cc5b63e620117ab7fdedebe62d5bae EQUAL", "NONE", "OK", "GREATERTHANOREQUAL P2SH"],
|
|
|
|
["MIN test coverage"],
|
|
["NOP", "MIN", "NONE", "ERR_INVALID_STACK_OPERATION", "MIN requires two items on the stack and NOP must not be treated as one"],
|
|
["", "MIN", "NONE", "ERR_INVALID_STACK_OPERATION", "MIN requires two items on the stack, stack has no items"],
|
|
["0", "MIN", "NONE", "ERR_INVALID_STACK_OPERATION", "MIN requires two items on the stack, stack has one item"],
|
|
["1 0 MIN", "0 NUMEQUAL", "NONE", "OK", "MIN must compare the first two numeric stack items and return the mimimum"],
|
|
["0 1 MIN", "0 NUMEQUAL", "NONE", "OK"],
|
|
["-1 0 MIN", "-1 NUMEQUAL", "NONE", "OK"],
|
|
["0 -2147483647 MIN", "-2147483647 NUMEQUAL", "NONE", "OK"],
|
|
["2147483648 1", "MIN", "NONE", "ERR_OUT_OF_RANGE", "MIN must fail with second operand >4 bytes"],
|
|
["1 2147483648", "MIN", "NONE", "ERR_OUT_OF_RANGE", "MIN must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "MIN DROP 1", "NONE", "ERR_MINIMAL_DATA", "MIN must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "MIN DROP 1", "NONE", "ERR_MINIMAL_DATA", "MIN must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_5 0 1 MIN 0 NUMEQUAL", "HASH160 DATA_20 0xd8f33d42832fb50be43adb5fd93d3fe7ba363ddb EQUAL", "NONE", "OK", "MIN P2SH"],
|
|
|
|
["MAX test coverage"],
|
|
["NOP", "MAX", "NONE", "ERR_INVALID_STACK_OPERATION", "MAX requires two items on the stack and NOP must not be treated as one"],
|
|
["", "MAX", "NONE", "ERR_INVALID_STACK_OPERATION", "MAX requires two items on the stack, stack has no items"],
|
|
["0", "MAX", "NONE", "ERR_INVALID_STACK_OPERATION", "MAX requires two items on the stack, stack has one item"],
|
|
["2147483647 0 MAX", "2147483647 NUMEQUAL", "NONE", "OK", "MAX must compare the first two numeric stack items and return the maximum"],
|
|
["0 100 MAX", "100 NUMEQUAL", "NONE", "OK"],
|
|
["-100 0 MAX", "0 NUMEQUAL", "NONE", "OK"],
|
|
["0 -2147483647 MAX", "0 NUMEQUAL", "NONE", "OK"],
|
|
["2147483648 1", "MAX", "NONE", "ERR_OUT_OF_RANGE", "MAX must fail with second operand >4 bytes"],
|
|
["1 2147483648", "MAX", "NONE", "ERR_OUT_OF_RANGE", "MAX must fail with first operand >4 bytes"],
|
|
["0 0x02 0x0000", "MAX DROP 1", "NONE", "ERR_MINIMAL_DATA", "MAX must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "MAX DROP 1", "NONE", "ERR_MINIMAL_DATA", "MAX must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["DATA_7 0 100 MAX 100 NUMEQUAL", "HASH160 DATA_20 0xff50ee980d587f0ea5be9d1a2a26e5e81a253484 EQUAL", "NONE", "OK", "MAX P2SH"],
|
|
|
|
["WITHIN test coverage"],
|
|
["NOP", "WITHIN", "NONE", "ERR_INVALID_STACK_OPERATION", "WITHIN requires three items on the stack and NOP must not be treated as one"],
|
|
["", "WITHIN", "NONE", "ERR_INVALID_STACK_OPERATION", "WITHIN requires three items on the stack, stack has no items"],
|
|
["0", "WITHIN", "NONE", "ERR_INVALID_STACK_OPERATION", "WITHIN requires three items on the stack, stack has one item"],
|
|
["0 1", "WITHIN", "NONE", "ERR_INVALID_STACK_OPERATION", "WITHIN requires three items on the stack, stack has two items"],
|
|
["0 0 1", "WITHIN", "NONE", "OK", "WITHIN must check if the third numeric stack item falls within the range of the second and first numeric stack items (left inclusive)"],
|
|
["1 0 1", "WITHIN NOT", "NONE", "OK"],
|
|
["0 -2147483647 2147483647", "WITHIN", "NONE", "OK"],
|
|
["-1 -100 100", "WITHIN", "NONE", "OK"],
|
|
["11 -100 100", "WITHIN", "NONE", "OK"],
|
|
["-2147483647 -100 100", "WITHIN NOT", "NONE", "OK"],
|
|
["2147483647 -100 100", "WITHIN NOT", "NONE", "OK"],
|
|
["-2147483648 -2147483648 0", "WITHIN", "NONE", "ERR_OUT_OF_RANGE", "WITHIN must fail with third operand >4 bytes"],
|
|
["-1 -2147483648 0", "WITHIN", "NONE", "ERR_OUT_OF_RANGE", "WITHIN must fail with second operand >4 bytes"],
|
|
["1 0 2147483648", "WITHIN", "NONE", "ERR_OUT_OF_RANGE", "WITHIN must fail with first operand >4 bytes"],
|
|
["DATA_6 11 -100 100 WITHIN", "HASH160 DATA_20 0xa18842bfe78ed342b5708431220e4dd6525b9ba0 EQUAL", "NONE", "OK", "WITHIN P2SH"],
|
|
|
|
["Test every numeric-accepting opcode for correct handling of the numeric minimal encoding rule"],
|
|
["1 0x02 0x0000", "PICK DROP", "NONE", "ERR_MINIMAL_DATA"],
|
|
["1 0x02 0x0000", "ROLL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000", "1ADD DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000", "1SUB DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000", "NEGATE DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000", "ABS DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000", "NOT DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000", "0NOTEQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "ADD DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "ADD DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["1 0x02 0x0100", "SUB DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0100 1", "SUB DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["1 0x02 0x0100", "MUL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0100 1", "MUL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["1 0x02 0x0100", "DIV DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0100 1", "DIV DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["1 0x02 0x0100", "MOD DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0100 1", "MOD DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["1 0x02 0x0000", "LSHIFT DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "LSHIFT DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "RSHIFT DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "RSHIFT DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "BOOLAND DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "BOOLAND DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "BOOLOR DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "BOOLOR DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "NUMEQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 1", "NUMEQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "NUMEQUALVERIFY 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "NUMEQUALVERIFY 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "NUMNOTEQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "NUMNOTEQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "LESSTHAN DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "LESSTHAN DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "GREATERTHAN DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "GREATERTHAN DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "LESSTHANOREQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "LESSTHANOREQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "GREATERTHANOREQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "GREATERTHANOREQUAL DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "MIN DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "MIN DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000", "MAX DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0", "MAX DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0x02 0x0000 0 0", "WITHIN DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0x02 0x0000 0", "WITHIN DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
["0 0 0x02 0x0000", "WITHIN DROP 1", "NONE", "ERR_MINIMAL_DATA"],
|
|
|
|
["RIPEMD160 test coverage"],
|
|
["NOP", "RIPEMD160", "NONE", "ERR_INVALID_STACK_OPERATION", "RIPEMD160 requires an an item on the stack and NOP must not be treated as one"],
|
|
["", "RIPEMD160", "NONE", "ERR_INVALID_STACK_OPERATION", "RIPEMD160 requires an item on the stack, stack has no items"],
|
|
["''", "RIPEMD160 0x14 0x9c1185a5c5e9fc54612808977ee8f548b2258d31 EQUAL", "NONE", "OK"],
|
|
["'a'", "RIPEMD160 0x14 0x0bdc9d2d256b3ee9daae347be6f4dc835a467ffe EQUAL", "NONE", "OK"],
|
|
["'abcdefghijklmnopqrstuvwxyz'", "RIPEMD160 0x14 0xf71c27109c692c1b56bbdceb5b9d2865b3708dbc EQUAL", "NONE", "OK"],
|
|
["0", "RIPEMD160", "NONE", "OK"],
|
|
["'z'{16385}", "RIPEMD160", "NONE", "ERR_SCRIPT_SIZE", "RIPEMD160 must fail for stack item >16384 bytes"],
|
|
["DATA_25 'a' RIPEMD160 0x14 0x0bdc9d2d256b3ee9daae347be6f4dc835a467ffe EQUAL", "HASH160 DATA_20 0x1cba3c520b91cacb676c5df51778a9a8805b4c2f EQUAL", "NONE", "OK", "RIPEMD160 P2SH"],
|
|
|
|
["SHA1 test coverage"],
|
|
["NOP", "SHA1", "NONE", "ERR_INVALID_STACK_OPERATION", "SHA1 requires an item on the stack and NOP must not be considered as one"],
|
|
["", "SHA1", "NONE", "ERR_INVALID_STACK_OPERATION", "SHA1 requires an item on the stack, stack has no items"],
|
|
["''", "SHA1 0x14 0xda39a3ee5e6b4b0d3255bfef95601890afd80709 EQUAL", "NONE", "OK"],
|
|
["'a'", "SHA1 0x14 0x86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 EQUAL", "NONE", "OK"],
|
|
["0", "SHA1", "NONE", "OK"],
|
|
["'abcdefghijklmnopqrstuvwxyz'", "SHA1 0x14 0x32d10c7b8cf96570ca04ce37f2a19d84240d3a89 EQUAL", "NONE", "OK"],
|
|
["'z'{16385}", "SHA1", "NONE", "ERR_SCRIPT_SIZE", "SHA1 must fail for stack item >16384 bytes"],
|
|
["DATA_25 'a' SHA1 0x14 0x86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 EQUAL", "HASH160 DATA_20 0xc88c820782a19e962a501b0a7451c21910c055dc EQUAL", "NONE", "OK", "SHA1 P2SH"],
|
|
|
|
["SHA256 test coverage"],
|
|
["NOP", "SHA256", "NONE", "ERR_EMPTY_STACK", "SHA256 requires an item on the stack and NOP must not be treated as one"],
|
|
["", "SHA256", "NONE", "ERR_EMPTY_STACK", "SHA256 requires an item on the stack, stack has no items"],
|
|
["''", "SHA256 0x20 0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 EQUAL", "SHA256", "OK"],
|
|
["'a'", "SHA256 0x20 0xca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb EQUAL", "SHA256", "OK"],
|
|
["0", "SHA256", "SHA256", "OK"],
|
|
["'abcdefghijklmnopqrstuvwxyz'", "SHA256 0x20 0x71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73 EQUAL", "SHA256", "OK"],
|
|
["'z'{16385}", "SHA256", "NONE", "ERR_SCRIPT_SIZE", "Exceeded max allowed script size"],
|
|
["DATA_37 'a' SHA256 0x20 0xca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb EQUAL", "HASH160 DATA_20 0x75b571c10901fb186265d4f93d8791f4bd959972 EQUAL", "SHA256", "OK", "SHA256 P2SH"],
|
|
|
|
["BLAKE256 test coverage"],
|
|
["NOP", "BLAKE256", "NONE", "ERR_INVALID_STACK_OPERATION", "BLAKE256 requires an item on the stack and NOP must not be treated as one"],
|
|
["", "BLAKE256", "NONE", "ERR_INVALID_STACK_OPERATION", "BLAKE256 requires an item on the stack, stack has no items"],
|
|
["''", "BLAKE256 0x20 0x716f6e863f744b9ac22c97ec7b76ea5f5908bc5b2f67c61510bfc4751384ea7a EQUAL", "NONE", "OK"],
|
|
["'a'", "BLAKE256 0x20 0x43234ff894a9c0590d0246cfc574eb781a80958b01d7a2fa1ac73c673ba5e311 EQUAL", "NONE", "OK"],
|
|
["'abcdefghijklmnopqrstuvwxyz'", "BLAKE256 0x20 0x6c648655a21f704a0bc72eb367b24144c9e8a1b07efc34165b561b6c33514427 EQUAL", "NONE", "OK"],
|
|
["0", "BLAKE256", "NONE", "OK"],
|
|
["''", "DUP HASH160 SWAP BLAKE256 RIPEMD160 EQUAL", "NONE", "OK"],
|
|
["''", "DUP HASH256 SWAP BLAKE256 BLAKE256 EQUAL", "NONE", "OK"],
|
|
["'z'{16385}", "BLAKE256", "NONE", "ERR_SCRIPT_SIZE", "Exceeded max allowed script size"],
|
|
["DATA_37 'a' BLAKE256 0x20 0x43234ff894a9c0590d0246cfc574eb781a80958b01d7a2fa1ac73c673ba5e311 EQUAL", "HASH160 DATA_20 0x0df5a9f846f8e7f52395aa0647556956ee98f590 EQUAL", "NONE", "OK", "BLAKE256 P2SH"],
|
|
|
|
["HASH160 test coverage"],
|
|
["NOP", "HASH160", "NONE", "ERR_INVALID_STACK_OPERATION", "HASH160 requires an item on the stack and NOP must not be treated as one"],
|
|
["", "HASH160", "NONE", "ERR_INVALID_STACK_OPERATION", "HASH160 requires an item on the stack, stack has no items"],
|
|
["''", "NOP HASH160 0x14 0x413320bee32a3bdb92b145d337316739d54a9287 EQUAL", "NONE", "OK"],
|
|
["'a'", "HASH160 NOP 0x14 0x8704ae49993a1b72b8a8b28decc7f9e58be752ce EQUAL", "NONE", "OK"],
|
|
["'abcdefghijklmnopqrstuvwxyz'", "DUP DROP HASH160 0x14 0x64d140650ed333a070a8ae05fac65032aebdfe5f EQUAL", "NONE", "OK"],
|
|
["0", "HASH160", "NONE", "OK"],
|
|
["'z'{16385}", "HASH160", "NONE", "ERR_SCRIPT_SIZE", "Exceeded max allowed script size"],
|
|
["DATA_25 'a' HASH160 0x14 0x8704ae49993a1b72b8a8b28decc7f9e58be752ce EQUAL", "HASH160 DATA_20 0x2cd233b42aa4eb6f84b2e5d4466d6913aaed448b EQUAL", "NONE", "OK", "HASH160 P2SH"],
|
|
|
|
["HASH256 test coverage"],
|
|
["NOP", "HASH256", "NONE", "ERR_INVALID_STACK_OPERATION", "HASH256 requires an item on the stack and NOP must not be treated as one"],
|
|
["", "HASH256", "NONE", "ERR_INVALID_STACK_OPERATION", "HASH256 requires an item on the stack , stack has no items"],
|
|
["''", "HASH256 0x20 0xd8ee5f957b78a961fb729098b4efb56440a14e05e3c55890f5edbc626380aaa6 EQUAL", "NONE", "OK"],
|
|
["'a'", "HASH256 0x20 0x8a298a038c1a85591aa7abda75a8a393b742ee3f6b759ff15a3b5a8edff78532 EQUAL", "NONE", "OK"],
|
|
["0", "HASH256", "NONE", "OK"],
|
|
["'abcdefghijklmnopqrstuvwxyz'", "HASH256 0x20 0x513d6e9cb7f369fa60933bc48818da2cd0c0a079ebdd29a0cce382d4625dcb39 EQUAL", "NONE", "OK"],
|
|
["'z'{16385}", "HASH256", "NONE", "ERR_SCRIPT_SIZE", "Exceeded max allowed script size"],
|
|
["DATA_37 'a' HASH256 0x20 0x8a298a038c1a85591aa7abda75a8a393b742ee3f6b759ff15a3b5a8edff78532 EQUAL", "HASH160 DATA_20 0x7c93aa0d3c9f41d65257aae2cbcb8eafa1660227 EQUAL", "NONE", "OK", "HASH256 P2SH"],
|
|
|
|
["CODESEPARATOR test coverage"],
|
|
["NOP", "CODESEPARATOR", "NONE", "ERR_DISABLED_OPCODE", "CODESEPARATOR is disabled"],
|
|
["0", "IF CODESEPARATOR ENDIF 1", "NONE", "ERR_DISABLED_OPCODE", "CODESEPARATOR is disabled when in a non-executed branch"],
|
|
|
|
["CHECKSIG test coverage"],
|
|
["NOTE: The following keys are used throughout the signature tests:"],
|
|
[" private key 1: 0x0000000000000000000000000000000000000000000000000000000000000001"],
|
|
[" compressed pubkey 1: 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"],
|
|
[" uncompressed pubkey 1: 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"],
|
|
[" hybrid pubkey 1: 0x0579be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"],
|
|
[" compressed pubkey hash 1: 0xe280cb6e66b96679aec288b1fbdbd4db08077a1b"],
|
|
[" uncompressed pubkey hash 1: 0x76a2e145da57d32c5a40f6406287c9248e0d5040"],
|
|
[" private key 2: 0x0000000000000000000000000000000000000000000000000000000000000003"],
|
|
[" compressed pubkey 2: 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9"],
|
|
[" uncompressed pubkey 2: 0x04f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],
|
|
[" hybrid pubkey 2: 0x05f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],
|
|
[" compressed pubkey hash 2: 0x01557763e0252dc0ff9e0996ad1d04b167bb993c"],
|
|
[" uncompressed pubkey hash 2: 0x84e54168b44c30bc76a97ac78b53ecbd75106e13"],
|
|
[" private key 3: 0x0000000000000000000000000000000000000000000000000000000000000006"],
|
|
[" compressed pubkey 3: 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556"],
|
|
[" uncompressed pubkey 3: 0x04fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556ae12777aacfbb620f3be96017f45c560de80f0f6518fe4a03c870c36b075f297"],
|
|
[" hybrid pubkey 3: 0x06fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556ae12777aacfbb620f3be96017f45c560de80f0f6518fe4a03c870c36b075f297"],
|
|
[" compressed pubkey hash 3: 0x2f0b8922f80989a85a53e136af931e473343bcad"],
|
|
[" uncompressed pubkey hash 3: 0x1891523d072e152ef254f4326eba0729a9131ef8"],
|
|
[
|
|
"0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with compressed pubkeys under SigHashAll"
|
|
],
|
|
[
|
|
"0x48 0x304502210098676274838e0f45ca405918668201eeafb7c829f043daf77c3055dda4bb73ac022019202b189d1324533a82906e546d24d468b854cbb13a03e5fca7ca9e45b835eb02",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with compressed pubkeys under SigHashNone"
|
|
],
|
|
[
|
|
"0x47 0x304402207a5a5a18fd1c0f3e76fa5f0a06751e52e1246a2361843d40c13e95906feccc9a0220642530a8aeff9b8242ee1a6110a6d951707ae28bed6b4367790ebc8829ad1a9503",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with compressed pubkeys under SigHashSingle"
|
|
],
|
|
[
|
|
"0x48 0x3045022100a22bcae4c96e7fd7251e92c3542a21304701d5c8f94b31035b060f2b96a5cd410220526ffd300f848fb0e5eda14fb410221999e837e3bfbff5c75e20270336c501cc81",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with compressed pubkeys under SigHashAll|SigHashAnyOneCanPay"
|
|
],
|
|
[
|
|
"0x47 0x304402206aa27c6d7d5db864eb06eb163231a49598f71efab7c07a9091bf6620b2f49c8d022069a8b9ceb0d79034a9c582b465432826a10b97bee29ddfc56534d04ba50a315e82",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with compressed pubkeys under SigHashNone|SigHashAnyOneCanPay"
|
|
],
|
|
[
|
|
"0x47 0x304402200f9d9048a7b313ebe540a895f1721fc327477e11a3ca3a6a7f9e2af11374bbb20220202914bec4369f8d9e70c82c720d9d87d52c5ced7f804ac1f70a3cf993341ba983",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with compressed pubkeys under SigHashSingle|SigHashAnyOneCanPay"
|
|
],
|
|
[
|
|
"0x47 0x304402206f02f07d84e9bef57e3c211887902f0e3d2067e210678e7637927a3397e38ecc0220795a47bcc1585e8b329a5172fb412c51368dd4d273e8e0766e918590a3141bfe01",
|
|
"0x41 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with uncompressed pubkeys under SigHashAll"
|
|
],
|
|
[
|
|
"0x47 0x304402201c57a7b1befacfc8b6a02d83724334966a3d9a214c54661fecc9ecc4f90c421f02201bcd5bc018f66ef0f9b1445fbbf2336a9e8fb405e4b93ac8b61b9d7ebe613d8602",
|
|
"0x41 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with uncompressed pubkeys under SigHashNone"
|
|
],
|
|
[
|
|
"0x48 0x3045022100e977d8f5826d5b0faa2ec19e55c82e8d2e77b510b37455dcb0fee6a97f7297c50220139b3bb22739e4cb2b21ae285eb0a6fb83888762cdccdbd7adf596d429a5ab7b03",
|
|
"0x41 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with uncompressed pubkeys under SigHashSingle"
|
|
],
|
|
[
|
|
"0x47 0x304402200e1bf09e5bd4493bcac49225fe0858fe820ac23f3f81a9ebcf89c562c21ba60202200e3e8ce3dafdbc661fc16e34c2b8ed87f46c2600eed06fafafc6c5e6acce4abb81",
|
|
"0x41 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with uncompressed pubkeys under SigHashAll|SigHashAnyOneCanPay"
|
|
],
|
|
[
|
|
"0x47 0x304402202ed7cbdec56c056cba689ca9f097f245de82b4732eed17060443349aa1098b6a022046dba0f9c0b807ab4f8cbcf9853548d86e4e3847103e662063e764248d27c25982",
|
|
"0x41 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with uncompressed pubkeys under SigHashNone|SigHashAnyOneCanPay"
|
|
],
|
|
[
|
|
"0x48 0x304502210093515fc4e75735746b8e7468b5855cd2ed2be85e48ca9771f18ab3e757e37497022003aab10a26f94122c186e9705c902e249f12a31ac96de9f5c5a7ce6e5f76bd9483",
|
|
"0x41 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with uncompressed pubkeys under SigHashSingle|SigHashAnyOneCanPay"
|
|
],
|
|
[
|
|
"0x48 0x3045022100dfe97c482347767875efb2d95ae94cb21d3a2f5e798c48fe202595ed8128038202201c49c43648d581280d1921e2837972a8bd800d85065a8e1f41e61161524c450d01",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with compressed pubkeys with y bit set (P2PK)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100e67ff2e958d066294263617782bedca9eddf1a88e15711caa8a0dd5db5317cfb0220490ca23dced8b91476492ef7e510847f2dd9e67c8f4a7f24ad2bc0e6e574b70201 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
|
|
"DUP HASH160 0x14 0xe280cb6e66b96679aec288b1fbdbd4db08077a1b EQUALVERIFY CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with compressed pubkeys without y bit set (P2PKH)"
|
|
],
|
|
[
|
|
"0x47 0x304402204344dda380768b2b87bf3ca615682a2630e7c957f9bfd27725a705305ea5581702203ac1b46f6e37263af61a9c5459a40505fd250e3cd07af88a311a3b60ad28dc8001 0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556",
|
|
"DUP HASH160 0x14 0x2f0b8922f80989a85a53e136af931e473343bcad EQUALVERIFY CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with compressed pubkeys with y bit set (P2PKH)"
|
|
],
|
|
[
|
|
"0x47 0x304402200cde54f44c5cfc3bf6fd71f18ac0570ab18b5a4e643145fd00cd9863da17bb0102200ad95f822df6fc4c7c4d1dd8fe9b554044bdc2c44aaf6b0843d46fed9f38d7b101 0x41 0x04f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672",
|
|
"DUP HASH160 0x14 0x84e54168b44c30bc76a97ac78b53ecbd75106e13 EQUALVERIFY CHECKSIG",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with uncompressed pubkeys (P2PKH)"
|
|
],
|
|
[
|
|
"0x47 0x304402205550606a87650619f98b261adde6d343aad0c3fdd526c68d5ed718819ee59a7e0220335af6a47a18064681a77f8387c95934439bdf74b61e290a3353528311b8c99301 0x23 0x210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac",
|
|
"HASH160 0x14 0xe57d091fa806258280dc78a1d8544a47a5b16a19 EQUAL",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with compressed pubkeys with y bit set when in a P2SH redeem script"
|
|
],
|
|
[
|
|
"0x47 0x304402205708a07bf55b7ce3961d25e2495d522c7130261f00fb145525af4ac176b4656b02207ffad7719f55d73ccb57ccc4f139511f8c9325f8d1258adc63a441871c83c3ae01 0x23 0x2103fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556ac",
|
|
"HASH160 0x14 0xfa07a95bb9386647aa5a40555415277be50d4ff1 EQUAL",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with compressed pubkeys without y bit set when in a P2SH redeem script"
|
|
],
|
|
[
|
|
"0x47 0x304402202dba5e6a3653b0e6117e1e96abd8c0ab026963d4ba57505b876ee8f728c43d9d02204cf1113ea5bd191addaff587809ac7bca1bf0a4e12e9a18a81c69ffbf23ce1fc01 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x19 0x76a914e280cb6e66b96679aec288b1fbdbd4db08077a1b88ac",
|
|
"HASH160 0x14 0x6c3d84ad3f335eb67d9b66245b6b45cb8154bc5a EQUAL",
|
|
"NONE", "OK",
|
|
"CHECKSIG must work with uncompressed pubkeys when in a P2SH redeem script"
|
|
],
|
|
[
|
|
"0",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG NOT",
|
|
"NONE", "OK",
|
|
"CHECKSIG must push false with invalid non-null DER-compliant sig (P2PK NOT 0 sig)"
|
|
],
|
|
[
|
|
"0x09 0x300602010102010101",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG NOT",
|
|
"NONE", "OK",
|
|
"CHECKSIG must push false with invalid non-null DER-compliant sig (P2PK NOT min sig)"
|
|
],
|
|
["", "CHECKSIG NOT", "", "ERR_INVALID_STACK_OPERATION", "CHECKSIG must error when there are no stack items"],
|
|
["0", "CHECKSIG NOT", "", "ERR_INVALID_STACK_OPERATION","CHECKSIG must error when there are not 2 stack items"],
|
|
["''", "0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG", "", "ERR_EVAL_FALSE", "CHECKSIG must evaluate 0-length signatures to false"],
|
|
[
|
|
"0x47 0x30440220464daa7c0365f10e019d4ac3560f7c5fb24834209d9a0eed757d9b2f61b09e0302203754bd0645c97e04a364bba06e4ec457ac25c578514eb9b37be492582a0ae36f05",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"", "ERR_SIG_HASH_TYPE",
|
|
"CHECKSIG must error with undefined hash types even when the signature is otherwise valid"
|
|
],
|
|
[
|
|
"0x48 0x3045022100de883a452b1b810fd74fd432ce8d551e51278223a6920dc304ba02aacbfc3728022065d2a9eb421ef9f3aced11cf5a85038ba619efb0cd23b66dee2645b94e05b2f205",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG NOT",
|
|
"", "ERR_SIG_HASH_TYPE",
|
|
"CHECKSIG must error with undefined hash types when the signature is invalid (valid sig 8th byte ^= 0x55)"
|
|
],
|
|
[
|
|
"0x48 0x304402204de4b86166781ffbd4375650776a338d53a0eabcc61f371ce256364f058f88ba0220597090d34c536b727fb555d61b100703a3f63b7a6ad7aa0164138c6ab3c63f880101",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_INVALID_DATA_LEN",
|
|
"CHECKSIG must error on multi-byte hash type"
|
|
],
|
|
[
|
|
"1",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG",
|
|
"NONE", "ERR_SIG_TOO_SHORT",
|
|
"CHECKSIG must error on non-DER-compliant sigs"
|
|
],
|
|
[
|
|
"1",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG NOT",
|
|
"NONE", "ERR_SIG_TOO_SHORT",
|
|
"CHECKSIG must error on non-DER-compliant sig (P2PK NOT)"
|
|
],
|
|
[
|
|
"0x08 0x3005020100020001",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG NOT",
|
|
"NONE", "ERR_SIG_TOO_SHORT",
|
|
"CHECKSIG must error with too short signature"
|
|
],
|
|
[
|
|
"0x4a 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef848135248010101",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_TOO_LONG",
|
|
"CHECKSIG must error with too long signature"
|
|
],
|
|
[
|
|
"0x48 0x3145022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_INVALID_SEQ_ID",
|
|
"CHECKSIG must error when first byte of signature is not the ASN.1 sequence ID"
|
|
],
|
|
[
|
|
"0x48 0x3044022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_INVALID_DATA_LEN",
|
|
"CHECKSIG must error when data len inside signature does not match the remaining len (one too small)"
|
|
],
|
|
[
|
|
"0x48 0x3046022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_INVALID_DATA_LEN",
|
|
"CHECKSIG must error when data len inside signature does not match the remaining len (one too big)"
|
|
],
|
|
[
|
|
"0x26 0x3023022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef07401",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_MISSING_S_TYPE_ID",
|
|
"CHECKSIG must error when S ASN.1 integer ID is missing"
|
|
],
|
|
[
|
|
"0x27 0x3024022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef0740201",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_MISSING_S_LEN",
|
|
"CHECKSIG must error when S length is missing"
|
|
],
|
|
[
|
|
"0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074021f30e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_INVALID_S_LEN",
|
|
"CHECKSIG must error when S length is invalid (one too small)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022130e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_INVALID_S_LEN",
|
|
"CHECKSIG must error when S length is invalid (one too big)"
|
|
],
|
|
[
|
|
"0x48 0x3045032100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_INVALID_R_INT_ID",
|
|
"CHECKSIG must error when R is not marked as ASN.1 integer"
|
|
],
|
|
[
|
|
"0x27 0x30240200022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_ZERO_R_LEN",
|
|
"CHECKSIG must error when R has length zero"
|
|
],
|
|
[
|
|
"0x47 0x30440220b2ec8d34d473c3aa2ab5eb7cc4a0783977e5db8c8daf777e0b6d7bfa6b6623f302207df6f09af2c40460da2c2c5778f636d3b2e27e20d10d90f5a5afb4523145470001",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG",
|
|
"NONE", "ERR_SIG_NEGATIVE_R",
|
|
"CHECKSIG must error when R is negative (too little padding)"
|
|
],
|
|
[
|
|
"0x47 0x30440220b20cd6f4b8496af01fe3e35b86139947ddb2f8a54cc1139d1839e2120de9fe540220261bd8ad7c1ab57912d5f432431001c26b72adc9cd7fde73c7776f7585c8538d01",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG NOT",
|
|
"NONE", "ERR_SIG_NEGATIVE_R",
|
|
"CHECKSIG must error when R is negative (too little padding) (P2PK NOT)"
|
|
],
|
|
[
|
|
"0x47 0x304402200077f6e93de5ed43cf1dfddaa79fca4b766e1a8fc879b0333d377f62538d7eb5022054fed940d227ed06d6ef08f320976503848ed1f52d0dd6d17f80c9c160b01d8601",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG",
|
|
"NONE", "ERR_SIG_TOO_MUCH_R_PADDING",
|
|
"CHECKSIG must error with otherwise valid sig when R has too much padding"
|
|
],
|
|
[
|
|
"0x47 0x304402200077f6e93de5ed43cf1dfddaa79fca4b766e1a8fc879b0333d377f62538d7eb5022054fed940d227ed06d6ef08f320976503848ed1f52d0dd6d17f80c9c160b01d8601",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG NOT",
|
|
"NONE", "ERR_SIG_TOO_MUCH_R_PADDING",
|
|
"CHECKSIG must error with invalid sig when R has too much padding (P2PK NOT, sig invalidated via 8th byte ^= 0x55)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074032030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_INVALID_S_INT_ID",
|
|
"CHECKSIG must error when S is not marked as ASN.1 integer"
|
|
],
|
|
[
|
|
"0x28 0x3025022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074020001",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_ZERO_S_LEN",
|
|
"CHECKSIG must error when S has length zero"
|
|
],
|
|
[
|
|
"0x47 0x304402204fc10344934662ca0a93a84d14d650d8a21cf2ab91f608e8783d2999c955443202208441aacd6b17038ff3f6700b042934f9a6fea0cec2051b51dc709e52a5bb7d6101",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_NEGATIVE_S",
|
|
"CHECKSIG must error when S is negative (too little padding)"
|
|
],
|
|
[
|
|
"0x47 0x304402206ad2fdaf8caba0f2cb2484e61b81ced77474b4c2aa069c852df1351b3314fe20022000695ad175b09a4a41cd9433f6b2e8e83253d6a7402096ba313a7be1f086dde501",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG",
|
|
"NONE", "ERR_SIG_TOO_MUCH_S_PADDING",
|
|
"CHECKSIG must error with otherwise valid sig when S has too much padding"
|
|
],
|
|
[
|
|
"0x47 0x3044022079c8f3b4a84d0df95faa3459ed65e0094dc842521706ec9a2253a32c43c41feb02200036479eca243e68e312586061c803ddd8d2ce564ab395aa061938cf6e4d011401",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG NOT",
|
|
"NONE", "ERR_SIG_TOO_MUCH_S_PADDING",
|
|
"CHECKSIG must error with otherwise valid sig when S has too much padding (P2PK NOT)"
|
|
],
|
|
[
|
|
"0x48 0x304502204fc10344934662ca0a93a84d14d650d8a21cf2ab91f608e8783d2999c95544320221008441aacd6b17038ff3f6700b042934f9a6fea0cec2051b51dc709e52a5bb7d6101",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "ERR_SIG_HIGH_S",
|
|
"CHECKSIG must error when S is greater than the curve half order even though it is otherwise valid"
|
|
],
|
|
[
|
|
"0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x20 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817 CHECKSIG",
|
|
"", "ERR_PUBKEY_TYPE",
|
|
"CHECKSIG must error with compressed pubkeys that are not exactly 33 bytes (one too small)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x22 0x020079be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"", "ERR_PUBKEY_TYPE",
|
|
"CHECKSIG must error with compressed pubkeys that are not exactly 33 bytes (one too big)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0579be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"", "ERR_PUBKEY_TYPE",
|
|
"CHECKSIG must error with compressed pubkeys that do not start with 0x02 or 0x03 (modified to use hybrid indicator)"
|
|
],
|
|
[
|
|
"0x47 0x304402206f02f07d84e9bef57e3c211887902f0e3d2067e210678e7637927a3397e38ecc0220795a47bcc1585e8b329a5172fb412c51368dd4d273e8e0766e918590a3141bfe01",
|
|
"0x40 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4 CHECKSIG",
|
|
"", "ERR_PUBKEY_TYPE",
|
|
"CHECKSIG must error with uncompressed pubkeys that are not exactly 65 bytes (one too small)"
|
|
],
|
|
[
|
|
"0x47 0x304402206f02f07d84e9bef57e3c211887902f0e3d2067e210678e7637927a3397e38ecc0220795a47bcc1585e8b329a5172fb412c51368dd4d273e8e0766e918590a3141bfe01",
|
|
"0x42 0x040079be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG",
|
|
"", "ERR_PUBKEY_TYPE",
|
|
"CHECKSIG must error with uncompressed pubkeys that are not exactly 65 bytes (one too big)"
|
|
],
|
|
[
|
|
"0x47 0x304402206f02f07d84e9bef57e3c211887902f0e3d2067e210678e7637927a3397e38ecc0220795a47bcc1585e8b329a5172fb412c51368dd4d273e8e0766e918590a3141bfe01",
|
|
"0x41 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG",
|
|
"", "ERR_PUBKEY_TYPE",
|
|
"CHECKSIG must error with uncompressed pubkeys that do not start with 0x04 (modified to use compressed indicator)"
|
|
],
|
|
[
|
|
"0x48 0x304502210082c0c99f2fdaca6afc9f403fb8ecf15af5defc3ae1d50d36fe1f47678d12df5b02202b28b45438bf7d3e58bf7e3f59e76edbeb36cb3e25831f457134089aff0eae8e01",
|
|
"0x41 0x0579be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG",
|
|
"", "ERR_PUBKEY_TYPE",
|
|
"CHECKSIG must error with hybrid pubkeys despite being valid"
|
|
],
|
|
[
|
|
"0x47 0x304402204e804dee7cae7807599b6f46e9df993e9cb0958697d9621bc4ce8b9570e271300220039ffd97cb62963c92bafcd91b9259693f2ad021b74db6b9f62214d9f0712bdf01",
|
|
"0x41 0x0579be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG NOT",
|
|
"", "ERR_PUBKEY_TYPE",
|
|
"CHECKSIG must error with hybrid pubkeys despite valid key and sig (P2PK NOT)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100ba78f285d6d2c774b1c74da4d42859eb737eb157d128011ce73b9ba265760039022074b6aaf5be4cb6d6a1a6db2716ffabffa139345457261e1d8176061d6216794d01",
|
|
"0x41 0x0579be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG NOT",
|
|
"", "ERR_PUBKEY_TYPE",
|
|
"CHECKSIG must error with hybrid pubkeys with invalid sigs (sig invalidated via 8th byte ^= 0x55)"
|
|
],
|
|
[
|
|
"0x47 0x304402200e1bf09e5bd4493bcac49225fe0858fe820ac23f3f81a9ebcf89c562c21ba60202200e3e8ce3dafdbc661fc16e34c2b8ed87f46c2600eed06fafafc6c5e6acce4abb01",
|
|
"0x41 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG",
|
|
"", "ERR_EVAL_FALSE",
|
|
"CHECKSIG must evaluate valid sigs for other hash types to false (anyonecanpay sig marked with all hash type)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100f5356450d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"", "ERR_EVAL_FALSE",
|
|
"CHECKSIG must evaluate invalid sigs to false (compressed P2PK with sig invalidated via 8th byte ^= 0x55)"
|
|
],
|
|
[
|
|
"0x47 0x304402202dba5e3f3653b0e6117e1e96abd8c0ab026963d4ba57505b876ee8f728c43d9d02204cf1113ea5bd191addaff587809ac7bca1bf0a4e12e9a18a81c69ffbf23ce1fc01 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x19 0x76a914e280cb6e66b96679aec288b1fbdbd4db08077a1b88ac",
|
|
"HASH160 0x14 0x6c3d84ad3f335eb67d9b66245b6b45cb8154bc5a EQUAL",
|
|
"NONE", "ERR_EVAL_FALSE",
|
|
"CHECKSIG must evaluate invalid sigs to false (compressed p2pkh inside p2sh with sig invalidated via 8th byte ^= 0x55)"
|
|
],
|
|
[
|
|
"0",
|
|
"0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 CHECKSIG",
|
|
"NONE", "ERR_EVAL_FALSE",
|
|
"CHECKSIG must consider 0 sig valid and evaluate to false"
|
|
],
|
|
|
|
["Additional test coverage with standard payment forms involving CHECKSIG"],
|
|
[
|
|
"0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801 NOP",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "OK",
|
|
"Execution must not error with non-push-only sig script without P2SH or SIGPUSHONLY"
|
|
],
|
|
[
|
|
"0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801 NOP",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "OK",
|
|
"Execution must not error with non-push-only sig script with P2SH and without SIGPUSHONLY"
|
|
],
|
|
[
|
|
"11 0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"NONE", "OK",
|
|
"Execution must not error when the script finishes with data on the stack without CLEANSTACK (P2PK with extra input)"
|
|
],
|
|
[
|
|
"0x47 0x304402205550606a87650619f98b261adde6d343aad0c3fdd526c68d5ed718819ee59a7e0220335af6a47a18064681a77f8387c95934439bdf74b61e290a3353528311b8c99301 0x23 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"HASH160 0x14 0xe57d091fa806258280dc78a1d8544a47a5b16a19 EQUAL",
|
|
"CLEANSTACK", "OK",
|
|
"P2SH execution must not error when the script finishes without data on the stack with CLEANSTACK"
|
|
],
|
|
[
|
|
"11 0x47 0x304402205550606a87650619f98b261adde6d343aad0c3fdd526c68d5ed718819ee59a7e0220335af6a47a18064681a77f8387c95934439bdf74b61e290a3353528311b8c99301 0x23 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"HASH160 0x14 0xe57d091fa806258280dc78a1d8544a47a5b16a19 EQUAL",
|
|
"NONE", "OK",
|
|
"P2SH execution must not error when the script finishes with data on the stack without CLEANSTACK"
|
|
],
|
|
[
|
|
"0x48 0x3045022100e67ff2e958d066294263617782bedca9eddf1a88e15711caa8a0dd5db5317cfb0220490ca23dced8b91476492ef7e510847f2dd9e67c8f4a7f24ad2bc0e6e574b70201 0x21 0x0279be662bf9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
|
|
"DUP HASH160 0x14 0xe280cb6e66b96679aec288b1fbdbd4db08077a1b EQUALVERIFY CHECKSIG",
|
|
"", "ERR_EQUAL_VERIFY",
|
|
"EQUALVERIFY must error due to mismatched hash from corrupted compressed P2PKH (pubkey invalidated via 5th byte ^= 0x55)"
|
|
],
|
|
[
|
|
"0x47 0x304402205550606a87650619f98b261adde6d343aad0c3fdd526c68d5ed718819ee59a7e0220335af6a47a18064681a77f8387c95934439bdf74b61e290a3353528311b8c99301 0x23 0x210279be337ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac",
|
|
"HASH160 0x14 0xe57d091fa806258280dc78a1d8544a47a5b16a19 EQUAL",
|
|
"NONE", "ERR_EVAL_FALSE",
|
|
"P2SH execution must push false on mistmatched hash from corrupted compressed P2PK redeem script (redeem script invalidated via 5th byte ^= 0x55)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801 NOP",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"SIGPUSHONLY", "ERR_SIG_PUSHONLY",
|
|
"Execution must error when signature script contains non-push-only opcodes with SIGPUSHONLY"
|
|
],
|
|
[
|
|
"0x47 0x304402205550606a87650619f98b261adde6d343aad0c3fdd526c68d5ed718819ee59a7e0220335af6a47a18064681a77f8387c95934439bdf74b61e290a3353528311b8c99301 NOP 0x23 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"HASH160 0x14 0xe57d091fa806258280dc78a1d8544a47a5b16a19 EQUAL",
|
|
"NONE", "ERR_SIG_PUSHONLY",
|
|
"P2SH execution must error when signature script contains non-push-only opcodes without SIGPUSHONLY"
|
|
],
|
|
[
|
|
"0x47 0x304402205550606a87650619f98b261adde6d343aad0c3fdd526c68d5ed718819ee59a7e0220335af6a47a18064681a77f8387c95934439bdf74b61e290a3353528311b8c99301 NOP 0x23 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"HASH160 0x14 0xe57d091fa806258280dc78a1d8544a47a5b16a19 EQUAL",
|
|
"SIGPUSHONLY", "ERR_SIG_PUSHONLY",
|
|
"P2SH execution must error when signature script contains non-push-only opcodes with SIGPUSHONLY"
|
|
],
|
|
[
|
|
"11 0x48 0x3045022100f5353150d31a63f4a0d06d1f5a01ac65f7267a719e49f2a1ac584fd546bef074022030e09575e7a1541aa018876a4003cefe1b061a90556b5140c63e0ef84813524801",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"CLEANSTACK", "ERR_CLEAN_STACK",
|
|
"Execution must error when the script finishes with data on the stack with CLEANSTACK"
|
|
],
|
|
[
|
|
"11 0x47 0x304402205550606a87650619f98b261adde6d343aad0c3fdd526c68d5ed718819ee59a7e0220335af6a47a18064681a77f8387c95934439bdf74b61e290a3353528311b8c99301 0x23 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 CHECKSIG",
|
|
"HASH160 0x14 0xe57d091fa806258280dc78a1d8544a47a5b16a19 EQUAL",
|
|
"CLEANSTACK", "ERR_CLEAN_STACK",
|
|
"P2SH execution must error when the script finishes with data on the stack with CLEANSTACK"
|
|
],
|
|
|
|
["CHECKSIGVERIFY test coverage"],
|
|
["0", "CHECKSIGVERIFY", "NONE", "ERR_INVALID_STACK_OPERATION", "CHECKSIGVERIFY requires a public key"],
|
|
["", "CHECKSIGVERIFY", "NONE", "ERR_INVALID_STACK_OPERATION", "CHECKSIGVERIFY requires signature script and a public key"],
|
|
|
|
["CHECKMULTISIG test coverage"],
|
|
["NOTE: See the CHECKSIG section above for information about the keys used in these tests:"],
|
|
["", "0 0 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG is allowed to have zero pubkeys and/or sigs"],
|
|
["", "0 0 1 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG zero sigs means no sigs or pubkeys are checked"],
|
|
["", "0 <0>{2} 2 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 2 pubkeys"],
|
|
["", "0 <0>{3} 3 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 3 pubkeys"],
|
|
["", "0 <0>{4} 4 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 4 pubkeys"],
|
|
["", "0 <0>{5} 5 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 5 pubkeys"],
|
|
["", "0 <0>{6} 6 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 6 pubkeys"],
|
|
["", "0 <0>{7} 7 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 7 pubkeys"],
|
|
["", "0 <0>{8} 8 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 8 pubkeys"],
|
|
["", "0 <0>{9} 9 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 9 pubkeys"],
|
|
["", "0 <0>{10} 10 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 10 pubkeys"],
|
|
["", "0 <0>{11} 11 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 11 pubkeys"],
|
|
["", "0 <0>{12} 12 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 12 pubkeys"],
|
|
["", "0 <0>{13} 13 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 13 pubkeys"],
|
|
["", "0 <0>{14} 14 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 14 pubkeys"],
|
|
["", "0 <0>{15} 15 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 15 pubkeys"],
|
|
["", "0 <0>{16} 16 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 16 pubkeys"],
|
|
["", "0 <0>{17} 17 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 17 pubkeys"],
|
|
["", "0 <0>{18} 18 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 18 pubkeys"],
|
|
["", "0 <0>{19} 19 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 19 pubkeys"],
|
|
["", "0 <0>{20} 20 CHECKMULTISIG VERIFY DEPTH 0 EQUAL", "NONE", "OK","CHECKMULTISIG must allow 20 pubkeys"],
|
|
["", "<0 0 CHECKMULTISIG>{255}", "NONE", "OK", "CHECKMULTSIG increments op count by num pubkeys evaluated in addition to the usual one per op"],
|
|
[
|
|
"",
|
|
"<NOP>{3} <0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG>{12}",
|
|
"NONE", "OK",
|
|
"CHECKMULTISIG with no sigs checked still increments op count by num pubkeys evaluated (12 * 21 + 3 = 255)"
|
|
],
|
|
["1", "<0 0 CHECKMULTISIG>{256}", "", "ERR_OP_COUNT", "256 CHECKMULTISIG must error due to 255 op limit"],
|
|
[
|
|
"0x47 0x304402203f419012d8e26a336579b8a1410c6a2bb460965d093beee381851998e946013b02205281ee195559c758fb3a3abb9d38ad32ed83d53e319793fb7e5fab31ac48ec0c01 0x47 0x304402206c5bb54f2a8681d4ebbd762042addc2837d2a0e3dc3e600a09c1901512643e8b022072f3acdcce1f2adde1fddfc642e2403f84f040e7dbb0d4249a9b837f98ad259101 0x48 0x3045022100c99fdb4f2f1df128d5646dd24b603c3a7c3a93912f457a03a38a70d83acd1f52022059929aa3f91bdc711d20a4c6773fac5ef7b12b0a12c1f93192ba0eefa3bdb3d301",
|
|
"3 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 3 CHECKMULTISIG",
|
|
"NONE", "OK",
|
|
"CHECKMULTISIG must push true when provided the specified number of valid sigs (3-of-3, 3 valid sigs)"
|
|
],
|
|
[
|
|
"0x47 0x3044022015dd38cbf89c82f64393ffed0dc2a388a791086950d82fd201e5a8395fc79a2e0220379c89ff963bd904614e5e2b12acbdd14b927f35232bf53b1d598e45a4ed922c01 0x48 0x3045022100aa2c8c3d545d53109b9f9c1c808026c328e5a171c06b9202352530ab9c43c21d0220476e919d7e5c6cf8832122b33ba57aed45c83f481296d89b8f61d30f1c4271e601 0x4c69 2 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 3 CHECKMULTISIG",
|
|
"HASH160 0x14 0xf86b5a7c6d32566aa4dccc04d1533530b4d64cf3 EQUAL",
|
|
"NONE", "OK",
|
|
"CHECKMULTISIG must work in a P2SH redeem script (2-of-3, 2 valid sigs)"
|
|
],
|
|
[
|
|
"0x47 0x30440220eb8231fbc543176e5ee8b80591b7db91d4dab835daada515d95f3532eb54b86102203e76890b026b24030a99a2ae5957d573b7a9ecbc382d613b18c25c124d0fac9a01 0",
|
|
"2 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 2 CHECKMULTISIG NOT",
|
|
"NONE", "OK",
|
|
"CHECKMULTISIG must not error with sigs where R is negative in unparsed signature (2-of-2, first sig invalid but DER compliant, second sig valid non-DER)"
|
|
],
|
|
["", "CHECKMULTISIG NOT", "", "ERR_INVALID_STACK_OPERATION", "CHECKMULTISIG must error when there are no stack items"],
|
|
["", "-1 CHECKMULTISIG NOT", "", "ERR_PUBKEY_COUNT", "CHECKMULTISIG must error when the specified number of pubkeys is negative"],
|
|
[
|
|
"",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 2 CHECKMULTISIG NOT",
|
|
"", "ERR_INVALID_STACK_OPERATION",
|
|
"CHECKMULTISIG must error when there are not enough pubkeys on the stack"
|
|
],
|
|
[
|
|
"",
|
|
"<0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798>{21} 21 CHECKMULTISIG 1",
|
|
"", "ERR_PUBKEY_COUNT",
|
|
"CHECKMULTISIG must error with more than 20 pubkeys"
|
|
],
|
|
[
|
|
"",
|
|
"0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 1 CHECKMULTISIG NOT",
|
|
"", "ERR_INVALID_STACK_OPERATION",
|
|
"CHECKMULTISIG must error when the required num signatures stack item is not on the stack"
|
|
],
|
|
["", "-1 0 CHECKMULTISIG NOT", "", "ERR_SIG_COUNT", "CHECKMULTISIG must error when the specified number of signatures is negative"],
|
|
[
|
|
"0x46 0x3043022053588bba590227c76367d8b0dda23d06c4438aae228931c8966ad49dc870e889021f7be968f70db1543c50781ccee983eb447c8712662ec993876da4bebb1784e901",
|
|
"1 0 CHECKMULTISIG 1",
|
|
"", "ERR_SIG_COUNT",
|
|
"CHECKMULTISIG must error with more signatures than pubkeys"
|
|
],
|
|
[
|
|
"",
|
|
"1 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 1 CHECKMULTISIG NOT",
|
|
"", "ERR_INVALID_STACK_OPERATION",
|
|
"CHECKMULTISIG must error when there are not enough signatures on the stack"
|
|
],
|
|
[
|
|
"",
|
|
"<NOP>{4} <0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG>{12}",
|
|
"", "ERR_OP_COUNT",
|
|
"CHECKMULTISIG must error if ops would exceed 255 limit"],
|
|
[
|
|
"1",
|
|
"<NOP>{4} <0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY>{12}",
|
|
"", "ERR_OP_COUNT",
|
|
"CHECKMULTISIGVERIFY must error if ops would exceed 255 limit"
|
|
],
|
|
[
|
|
"0x48 0x304502210085b4d8c2f551d2393bbb096f18f50516a1910f25cdcd06e1d2164514c2537e830220212144571d671d885097eff4dae6bf2ae1f0a67481f0d07e73994eaea8162bf105",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"", "ERR_SIG_HASH_TYPE",
|
|
"CHECKMULTISIG must error with undefined hash types even when the signature is otherwise valid"
|
|
],
|
|
[
|
|
"0x48 0x304502210085b48dc2f551d2393bbb096f18f50516a1910f25cdcd06e1d2164514c2537e830220212144571d671d885097eff4dae6bf2ae1f0a67481f0d07e73994eaea8162bf105",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"", "ERR_SIG_HASH_TYPE",
|
|
"CHECKMULTISIG must error with undefined hash types when the signature is invalid (valid sig 8th byte ^= 0x55)"
|
|
],
|
|
[
|
|
"0x49 0x3045022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d0101",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_INVALID_DATA_LEN",
|
|
"CHECKMULTISIG must error on multi-byte hash type"
|
|
],
|
|
[
|
|
"0x08 0x3005020100020001",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_TOO_SHORT",
|
|
"CHECKMULTISIG must error with too short signature"
|
|
],
|
|
[
|
|
"0x4a 0x3045022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d010101",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_TOO_LONG",
|
|
"CHECKMULTISIG must error with too long signature"
|
|
],
|
|
[
|
|
"0x48 0x3145022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_INVALID_SEQ_ID",
|
|
"CHECKMULTISIG must error when first byte of signature is not the ASN.1 sequence ID"
|
|
],
|
|
[
|
|
"0x48 0x3044022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_INVALID_DATA_LEN",
|
|
"CHECKMULTISIG must error when data len inside signature does not match the remaining len (one too small)"
|
|
],
|
|
[
|
|
"0x48 0x3046022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_INVALID_DATA_LEN",
|
|
"CHECKMULTISIG must error when data len inside signature does not match the remaining len (one too big)"
|
|
],
|
|
[
|
|
"0x26 0x3023022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_MISSING_S_TYPE_ID",
|
|
"CHECKMULTISIG must error when S ASN.1 integer ID is missing"
|
|
],
|
|
[
|
|
"0x27 0x3024022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a0201",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_MISSING_S_LEN",
|
|
"CHECKMULTISIG must error when S length is missing"
|
|
],
|
|
[
|
|
"0x48 0x3045022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a021f7eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_INVALID_S_LEN",
|
|
"CHECKMULTISIG must error when S length is invalid (one too small)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02217eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_INVALID_S_LEN",
|
|
"CHECKMULTISIG must error when S length is invalid (one too big)"
|
|
],
|
|
[
|
|
"0x48 0x3045032100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_INVALID_R_INT_ID",
|
|
"CHECKMULTISIG must error when R is not marked as ASN.1 integer"
|
|
],
|
|
[
|
|
"0x27 0x3024020002207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_ZERO_R_LEN",
|
|
"CHECKMULTISIG must error when R has length zero"
|
|
],
|
|
[
|
|
"0x47 0x30440220a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_NEGATIVE_R",
|
|
"CHECKMULTISIG must error when R is negative (too little padding)"
|
|
],
|
|
[
|
|
"0x47 0x30440220eb8231fbc543176e5ee8b80591b7db91d4dab835daada515d95f3532eb54b86102203e76890b026b24030a99a2ae5957d573b7a9ecbc382d613b18c25c124d0fac9a01 0x48 0x3045022100b6d7a4f10cd430b1292b761e2cf3ef1284dc4b8276a6d4895d955016f06f1bb702205d8f79c45719eae0985ce7602ddf4ec2427de5c353f4e642f9e4855d159f6a7801",
|
|
"2 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 2 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_NEGATIVE_R",
|
|
"CHECKMULTISIG must error when R is negative (2-of-2, first sig valid DER, second sig valid non-DER)"
|
|
],
|
|
[
|
|
"0x47 0x3044022058e3e5d0c457d3b41d7b555366410fb233e00f504812e87602cd5f9174cbe2fc02201805a21251d62eae7ce92ba4235bd553a38ac0e0ffe9bac0f2fa9ccfc6abdcdc01 0x47 0x30440220a1bf7167ce8c49568537045e70f689b90f42a496d75947f14e6dbfdbfa6b0fc602200564205c85c3003f5e3442eeb4632c4fc5928838727324ae3b11f8de3579981501",
|
|
"2 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 2 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_NEGATIVE_R",
|
|
"CHECKMULTISIG must error when R is negative (2-of-2, first sig valid non-DER, second sig valid DER)"
|
|
],
|
|
[
|
|
"0 0x47 0x30440220ea377dcb8630e68da3a0eeb57e96e195b4d9c437381f76912c0e6fc28bae6e3502204096da36de10b7261bfa6ae0fddbe11428c1d13160bcb1110ed04f3f7d2f389f01",
|
|
"2 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 2 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_NEGATIVE_R",
|
|
"CHECKMULTISIG must error when R is negative (2-of-2, first sig valid non-DER, second sig invalid but DER compliant)"
|
|
],
|
|
[
|
|
"0x47 0x30440220b35d1861ac81cd15748dbf82a67931057600f5596cde464621f8a8afeea84862022076aea5e870ed4d82955b1c803de191fc4c82c8b6c6e243d3e17295506f276e7301 0",
|
|
"2 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 2 CHECKMULTISIG",
|
|
"NONE", "ERR_EVAL_FALSE",
|
|
"CHECKMULTISIG must push false even if an unevaluated signature is not DER compliant (2-of-2, first sig invalid but DER compliant, second sig valid non-DER)"
|
|
],
|
|
[
|
|
"0x49 0x304602220000a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_TOO_MUCH_R_PADDING",
|
|
"CHECKMULTISIG must error with otherwise valid sig when R has too much padding"
|
|
],
|
|
[
|
|
"0x49 0x304602220000a1756e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_TOO_MUCH_R_PADDING",
|
|
"CHECKMULTISIG must error with invalid sig when R has too much padding (sig invalidated via 8th byte ^= 0x55)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a03207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_INVALID_S_INT_ID",
|
|
"CHECKMULTISIG must error when S is not marked as ASN.1 integer"
|
|
],
|
|
[
|
|
"0x28 0x3025022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a020001",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_ZERO_S_LEN",
|
|
"CHECKMULTISIG must error when S has length zero"
|
|
],
|
|
[
|
|
"0x48 0x3045022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a0220feb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_NEGATIVE_S",
|
|
"CHECKMULTISIG must error when S is negative (too little padding)"
|
|
],
|
|
[
|
|
"0x49 0x3046022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a0221007eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_TOO_MUCH_S_PADDING",
|
|
"CHECKMULTISIG must error with otherwise valid sig when S has too much padding"
|
|
],
|
|
[
|
|
"0x48 0x30450220432c00086747ac31b5fca8ba1cc987eb8eb0f52315ce9fc03bc383780377c3aa022100adc9314c1b1551133e9ae1ec837e2e3820263a1f0a9553c885d39e3003d9300d01",
|
|
"1 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_HIGH_S",
|
|
"CHECKMULTISIG must error when S is greater than the curve half order even though it is otherwise valid"
|
|
],
|
|
[
|
|
"0x48 0x3045022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x20 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_PUBKEY_TYPE",
|
|
"CHECKMULTISIG must error with compressed pubkeys that are not exactly 33 bytes (one too small)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x22 0x0200f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_PUBKEY_TYPE",
|
|
"CHECKMULTISIG must error with compressed pubkeys that are not exactly 33 bytes (one too big)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100a1206e43320cc02d97c76eb2d575cdb1215b491c5b0c7a7865d3a4bea2a7a39a02207eb5a56828d164f158812e0ad8d39588258ae0e369cb918bfaab6d61ba90d80d01",
|
|
"1 0x21 0x0579be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_PUBKEY_TYPE",
|
|
"CHECKMULTISIG must error with compressed pubkeys that do not start with 0x02 or 0x03 (modified to use hybrid indicator)"
|
|
],
|
|
[
|
|
"0x47 0x3044022001f819d40db86ba57450d99dc1ed009e1a55f633a78ef6ff4ca955961cef3f530220770013aee8e7f47c1c1b8a9fe90f9f6e5e59fbecd5ed4f37a99dfd112ad4e07901",
|
|
"1 0x40 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_PUBKEY_TYPE",
|
|
"CHECKMULTISIG must error with uncompressed pubkeys that are not exactly 65 bytes (one too small)"
|
|
],
|
|
[
|
|
"0x47 0x3044022001f819d40db86ba57450d99dc1ed009e1a55f633a78ef6ff4ca955961cef3f530220770013aee8e7f47c1c1b8a9fe90f9f6e5e59fbecd5ed4f37a99dfd112ad4e07901",
|
|
"1 0x42 0x040079be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_PUBKEY_TYPE",
|
|
"CHECKMULTISIG must error with compressed pubkeys that are not exactly 33 bytes (one too big)"
|
|
],
|
|
[
|
|
"0x47 0x3044022001f819d40db86ba57450d99dc1ed009e1a55f633a78ef6ff4ca955961cef3f530220770013aee8e7f47c1c1b8a9fe90f9f6e5e59fbecd5ed4f37a99dfd112ad4e07901",
|
|
"1 0x41 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_PUBKEY_TYPE",
|
|
"CHECKMULTISIG must error with uncompressed pubkeys that do not start with 0x04 (modified to use compressed indicator)"
|
|
],
|
|
[
|
|
"0x47 0x3044022001f819d40db86ba57450d99dc1ed009e1a55f633a78ef6ff4ca955961cef3f530220770013aee8e7f47c1c1b8a9fe90f9f6e5e59fbecd5ed4f37a99dfd112ad4e07901",
|
|
"1 0x41 0x0579be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_PUBKEY_TYPE",
|
|
"CHECKMULTISIG must error with hybrid pubkeys despite being valid"
|
|
],
|
|
[
|
|
"0x47 0x3044022001f819810db86ba57450d99dc1ed009e1a55f633a78ef6ff4ca955961cef3f530220770013aee8e7f47c1c1b8a9fe90f9f6e5e59fbecd5ed4f37a99dfd112ad4e07901",
|
|
"1 0x41 0x0579be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 1 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_PUBKEY_TYPE",
|
|
"CHECKMULTISIG must error with hybrid pubkeys with invalid sigs (sig invalidated via 8th byte ^= 0x55)"
|
|
],
|
|
[
|
|
"0x47 0x304402202809a0c2d54517cb3cd7d3068e5114a9cfcf4790b6a73e0e14468116582b674c022009b0a6bed0c0a8d28761b7642a841868e194a72a6bad0587b473a9ca9fd53f8f01",
|
|
"1 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x41 0x05f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672 2 CHECKMULTISIG",
|
|
"", "ERR_PUBKEY_TYPE",
|
|
"CHECKMULTISIG must error when encountering hybrid pubkeys even if there are enough other valid sigs (1-of-2, first pubkey hybrid)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100a12e942a32c449814862a6fa80a9c2a5668cd598b3e16615bb9fdcb90489b408022058c53de4979498219cabbdac166789ff6cc8402a271ec332b74deae4fd304a3101",
|
|
"1 0x41 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 1 CHECKMULTISIG",
|
|
"NONE", "ERR_EVAL_FALSE",
|
|
"CHECKSIG must push false for valid sigs for other hash types (anyonecanpay sig marked with all hash type)"
|
|
],
|
|
[
|
|
"0x47 0x304402203f419012d8e26a336579b8a1410c6a2bb460965d093beee381851998e946013b02205281ee195559c758fb3a3abb9d38ad32ed83d53e319793fb7e5fab31ac48ec0c01 0x47 0x304402206c5bb54f2a8681d4ebbd762042addc2837d2a0e3dc3e600a09c1901512643e8b022072f3acdcce1f2adde1fddfc642e2403f84f040e7dbb0d4249a9b837f98ad259101 0",
|
|
"3 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 3 CHECKMULTISIG",
|
|
"", "ERR_EVAL_FALSE",
|
|
"CHECKMULTISIG must push false if not all required signatures are valid (3-of-3, 2 valid sigs)"
|
|
],
|
|
[
|
|
"0x47 0x3044022015dd38cbf89c82f64393ffed0dc2a388a791086950d82fd201e5a8395fc79a2e0220379c89ff963bd904614e5e2b12acbdd14b927f35232bf53b1d598e45a4ed922c01 0 0x4c69 2 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9 0x21 0x03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 3 CHECKMULTISIG",
|
|
"HASH160 0x14 0xf86b5a7c6d32566aa4dccc04d1533530b4d64cf3 EQUAL",
|
|
"NONE", "ERR_EVAL_FALSE",
|
|
"CHECKMULTISIG must push false if not all required signatures are valid (P2SH(2-of-3), 1 valid sig)"
|
|
],
|
|
|
|
["Additional test coverage with standard payment forms involving CHECKMULTISIG"],
|
|
[
|
|
"0x48 0x3045022100c40b401e745675a9280ef213d6bfc453bd941d61004e30acdcc2704c5098bcbb02206d2f2549311cf537b67a46840044124f2068759d3ba0ac4f1d377ded06d3532101 DUP",
|
|
"2 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 DUP 2 CHECKMULTISIG",
|
|
"NONE", "OK",
|
|
"Execution must not error when signature script contains non-push-only opcodes without SIGPUSHONLY (2-of-2, identical keys and sigs pushed via DUP)"
|
|
],
|
|
[
|
|
"0x48 0x3045022100c40b401e745675a9280ef213d6bfc453bd941d61004e30acdcc2704c5098bcbb02206d2f2549311cf537b67a46840044124f2068759d3ba0ac4f1d377ded06d3532101 DUP",
|
|
"2 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 DUP 2 CHECKMULTISIG",
|
|
"SIGPUSHONLY", "ERR_SIG_PUSHONLY",
|
|
"Execution must error when signature script contains non-push-only opcodes with SIGPUSHONLY (2-of-2, identical keys and sigs pushed via DUP)"
|
|
],
|
|
|
|
["CHECKMULTISIG evaluation order tests. CHECKMULTISIG evaluates signatures and"],
|
|
["pubkeys in a specific order, and will exit early if the number of signatures"],
|
|
["left to check is greater than the number of keys left. As strict encoding fails the"],
|
|
["script when it reaches an invalidly encoded signature or pubkey, we can use it"],
|
|
["to test the exact order in which signatures and pubkeys are evaluated by"],
|
|
["distinguishing CHECKMULTISIG returning false on the stack and the script as a"],
|
|
["whole failing."],
|
|
[
|
|
"0 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501",
|
|
"2 0 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 2 CHECKMULTISIG NOT",
|
|
"NONE", "OK",
|
|
"2-of-2 CHECKMULTISIG NOT with the second pubkey invalid, and both signatures validly encoded. Valid pubkey fails, and CHECKMULTISIG exits early, prior to evaluation of second invalid pubkey."
|
|
],
|
|
[
|
|
"0 0 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501",
|
|
"2 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 2 CHECKMULTISIG NOT",
|
|
"NONE", "OK",
|
|
"2-of-2 CHECKMULTISIG NOT with both pubkeys valid, but second signature invalid. Valid pubkey fails, and CHECKMULTISIG exits early, prior to evaluation of second invalid signature."
|
|
],
|
|
[
|
|
"0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501",
|
|
"2 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 0 2 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_PUBKEY_TYPE",
|
|
"2-of-2 CHECKMULTISIG NOT with the first pubkey invalid, and both signatures validly encoded"
|
|
],
|
|
[
|
|
"0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501 1",
|
|
"2 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 2 CHECKMULTISIG NOT",
|
|
"NONE", "ERR_SIG_TOO_SHORT",
|
|
"2-of-2 CHECKMULTISIG NOT with both pubkeys valid, but first signature invalid"
|
|
],
|
|
["0 0x02 0x0000", "CHECKMULTISIG DROP 1", "NONE", "ERR_MINIMAL_DATA", "CHECKMULTISIG must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "CHECKMULTISIG DROP 1", "NONE", "ERR_MINIMAL_DATA", "CHECKMULTISIG must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
["0x02 0x0000 0 1", "CHECKMULTISIG DROP 1", "NONE", "ERR_MINIMAL_DATA", "CHECKMULTISIG must adhere to the numeric minimal encoding rule for its inputs (third input)"],
|
|
|
|
|
|
["While not really correctly DER encoded, the empty signature is allowed by"],
|
|
["strict encoding to provide a compact way to provide a delibrately invalid signature."],
|
|
["0", "0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 CHECKSIG NOT", "NONE", "OK"],
|
|
["0", "1 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 1 CHECKMULTISIG NOT", "NONE", "OK"],
|
|
|
|
["CHECKMULTISIGVERIFY test coverage"],
|
|
["1", "<0 0 CHECKMULTISIGVERIFY>{255}", "NONE", "OK", "CHECKMULTSIGVERIFY increments op count by num pubkeys evaluated in addition to the usual one per op"],
|
|
["1", "<0 0 CHECKMULTISIGVERIFY>{256}", "", "ERR_OP_COUNT", "256 CHECKMULTISIGVERIFY must error due to 255 op limit"],
|
|
[
|
|
"1",
|
|
"<NOP>{3} <0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY>{12}",
|
|
"NONE", "OK",
|
|
"CHECKMULTISIGVERIFY with no sigs checked still increments op count by num pubkeys evaluated (12 * 21 + 3 = 255)"
|
|
],
|
|
["", "0 0 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY is allowed to have zero pubkeys and/or sigs"],
|
|
["", "0 0 1 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY zero sigs means no sigs or pubkeys are checked"],
|
|
["", "0 <0>{2} 2 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 2 pubkeys"],
|
|
["", "0 <0>{3} 3 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 3 pubkeys"],
|
|
["", "0 <0>{4} 4 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 4 pubkeys"],
|
|
["", "0 <0>{5} 5 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 5 pubkeys"],
|
|
["", "0 <0>{6} 6 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 6 pubkeys"],
|
|
["", "0 <0>{7} 7 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 7 pubkeys"],
|
|
["", "0 <0>{8} 8 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 8 pubkeys"],
|
|
["", "0 <0>{9} 9 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 9 pubkeys"],
|
|
["", "0 <0>{10} 10 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 10 pubkeys"],
|
|
["", "0 <0>{11} 11 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 11 pubkeys"],
|
|
["", "0 <0>{12} 12 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 12 pubkeys"],
|
|
["", "0 <0>{13} 13 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 13 pubkeys"],
|
|
["", "0 <0>{14} 14 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 14 pubkeys"],
|
|
["", "0 <0>{15} 15 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 15 pubkeys"],
|
|
["", "0 <0>{16} 16 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 16 pubkeys"],
|
|
["", "0 <0>{17} 17 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 17 pubkeys"],
|
|
["", "0 <0>{18} 18 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 18 pubkeys"],
|
|
["", "0 <0>{19} 19 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 19 pubkeys"],
|
|
["", "0 <0>{20} 20 CHECKMULTISIGVERIFY DEPTH 0 EQUAL", "NONE", "OK", "CHECKMULTISIGVERIFY must allow 20 pubkeys"],
|
|
["0 0x02 0x0000", "CHECKMULTISIGVERIFY 1", "NONE", "ERR_MINIMAL_DATA", "CHECKMULTISIGVERIFY must adhere to the numeric minimal encoding rule for its inputs (first input)"],
|
|
["0x02 0x0000 0", "CHECKMULTISIGVERIFY 1", "NONE", "ERR_MINIMAL_DATA", "CHECKMULTISIGVERIFY must adhere to the numeric minimal encoding rule for its inputs (second input)"],
|
|
|
|
["Reserved opcode tests"],
|
|
|
|
["NOP test coverage"],
|
|
["NOP","1", "NONE", "OK"],
|
|
["NOP", "'b'{2048}", "NONE", "OK", "2048 byte push"],
|
|
["NOP", "'b'{2049}", "NONE", "ERR_PUSH_SIZE", ">2048 byte push"],
|
|
["1", "<NOP>{256}", "NONE", "ERR_OP_COUNT", ">255 opcodes executed"],
|
|
["1","NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 SSTX SSGEN SSRTX 2 EQUAL", "NONE", "ERR_EVAL_FALSE"],
|
|
["'NOP_1_to_10' NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 SSTX SSGEN SSRTX","'NOP_1_to_11' EQUAL", "NONE", "ERR_EVAL_FALSE"],
|
|
["1", "0x61{255}", "NONE", "OK", "255 opcodes executed. 0x61 is NOP"],
|
|
["1", "NOP", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discourage NOPx flag allows OP_NOP"],
|
|
["NOP", "0 'a'{2048} <'b'{2048}>{6} 'b'{2024}", "NONE", "ERR_SCRIPT_SIZE", "16385-byte scriptPubKey"],
|
|
["'a'{2048} 'b'{2048} 'b'{2048} 'b'{2048} 'b'{2048} 'b'{2048} 'b'{2048} 'b'{1764} 1 2 3 4 5 0x6f{255}",
|
|
"'a'{2048} 'b'{2048} 'b'{2048} 'b'{2048} 'b'{2048} 'b'{2048} 'b'{2048} 'b'{1786} 1 2 3 4 0x6f{78}", "NONE", "OK",
|
|
"Max-size (16384 bytes), max-push (2048 bytes), max-opcodes (255), max stack size (1024 items). 0x6f is 3DUP, 0x61 is NOP"],
|
|
|
|
["NOP1...NOP10 test coverage"],
|
|
["NOP", "NOP1 1", "NONE", "OK"],
|
|
["NOP", "CHECKLOCKTIMEVERIFY 1", "NONE", "OK"],
|
|
["NOP", "NOP3 1", "NONE", "OK"],
|
|
["NOP", "NOP4 1", "NONE", "OK"],
|
|
["NOP", "NOP5 1", "NONE", "OK"],
|
|
["NOP", "NOP6 1", "NONE", "OK"],
|
|
["NOP", "NOP7 1", "NONE", "OK"],
|
|
["NOP", "NOP8 1", "NONE", "OK"],
|
|
["NOP", "NOP9 1", "NONE", "OK"],
|
|
["NOP", "NOP10 1", "NONE", "OK"],
|
|
["NOP1","NOP10", "NONE", "ERR_EMPTY_STACK"],
|
|
["NOP 0x01 1", "HASH160 0x14 0xda1745e9b549bd0bfa1a569971c77eba30cd5a4b EQUAL", "NONE", "ERR_SIG_PUSHONLY", "Tests for Script.IsPushOnly()"],
|
|
["NOP1 0x01 1", "HASH160 0x14 0xda1745e9b549bd0bfa1a569971c77eba30cd5a4b EQUAL", "NONE", "ERR_SIG_PUSHONLY"],
|
|
|
|
["Ensure 100% coverage of discouraged NOPS"],
|
|
["1", "NOP1", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xb0 is a discouraged NOP"],
|
|
["1", "NOP2", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xb1 is a discouraged NOP when CLTV is inactive"],
|
|
["1", "NOP3", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xb2 is a discouraged NOP when CSV is inactive"],
|
|
["1", "NOP4", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xb3 is a discouraged NOP"],
|
|
["1", "NOP5", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xb4 is a discouraged NOP"],
|
|
["1", "NOP6", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xb5 is a discouraged NOP"],
|
|
["1", "NOP7", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xb6 is a discouraged NOP"],
|
|
["1", "NOP8", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xb7 is a discouraged NOP"],
|
|
["1", "NOP9", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xb8 is a discouraged NOP"],
|
|
["1", "NOP10", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xb9 is a discouraged NOP"],
|
|
["1", "0xc0", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xc0 is a discouraged NOP when SHA256 is inactive"],
|
|
["1", "0xc1", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xc1 is a discouraged NOP"],
|
|
["1", "0xc2", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xc2 is a discouraged NOP"],
|
|
["1", "0xc3", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xc3 is a discouraged NOP"],
|
|
["1", "0xc4", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xc4 is a discouraged NOP"],
|
|
["1", "0xc5", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xc5 is a discouraged NOP"],
|
|
["1", "0xc6", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xc6 is a discouraged NOP"],
|
|
["1", "0xc7", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xc7 is a discouraged NOP"],
|
|
["1", "0xc8", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xc8 is a discouraged NOP"],
|
|
["1", "0xc9", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xc9 is a discouraged NOP"],
|
|
["1", "0xca", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xca is a discouraged NOP"],
|
|
["1", "0xcb", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xcb is a discouraged NOP"],
|
|
["1", "0xcc", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xcc is a discouraged NOP"],
|
|
["1", "0xcd", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xcd is a discouraged NOP"],
|
|
["1", "0xce", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xce is a discouraged NOP"],
|
|
["1", "0xcf", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xcf is a discouraged NOP"],
|
|
["1", "0xd0", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xd0 is a discouraged NOP"],
|
|
["1", "0xd1", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xd1 is a discouraged NOP"],
|
|
["1", "0xd2", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xd2 is a discouraged NOP"],
|
|
["1", "0xd3", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xd3 is a discouraged NOP"],
|
|
["1", "0xd4", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xd4 is a discouraged NOP"],
|
|
["1", "0xd5", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xd5 is a discouraged NOP"],
|
|
["1", "0xd6", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xd6 is a discouraged NOP"],
|
|
["1", "0xd7", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xd7 is a discouraged NOP"],
|
|
["1", "0xd8", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xd8 is a discouraged NOP"],
|
|
["1", "0xd9", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xd9 is a discouraged NOP"],
|
|
["1", "0xda", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xda is a discouraged NOP"],
|
|
["1", "0xdb", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xdb is a discouraged NOP"],
|
|
["1", "0xdc", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xdc is a discouraged NOP"],
|
|
["1", "0xdd", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xdd is a discouraged NOP"],
|
|
["1", "0xde", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xde is a discouraged NOP"],
|
|
["1", "0xdf", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xdf is a discouraged NOP"],
|
|
["1", "0xe0", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xe0 is a discouraged NOP"],
|
|
["1", "0xe1", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xe1 is a discouraged NOP"],
|
|
["1", "0xe2", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xe2 is a discouraged NOP"],
|
|
["1", "0xe3", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xe3 is a discouraged NOP"],
|
|
["1", "0xe4", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xe4 is a discouraged NOP"],
|
|
["1", "0xe5", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xe5 is a discouraged NOP"],
|
|
["1", "0xe6", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xe6 is a discouraged NOP"],
|
|
["1", "0xe7", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xe7 is a discouraged NOP"],
|
|
["1", "0xe8", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xe8 is a discouraged NOP"],
|
|
["1", "0xe9", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xe9 is a discouraged NOP"],
|
|
["1", "0xea", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xea is a discouraged NOP"],
|
|
["1", "0xeb", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xeb is a discouraged NOP"],
|
|
["1", "0xec", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xec is a discouraged NOP"],
|
|
["1", "0xed", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xed is a discouraged NOP"],
|
|
["1", "0xee", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xee is a discouraged NOP"],
|
|
["1", "0xef", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xef is a discouraged NOP"],
|
|
["1", "0xf0", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xf0 is a discouraged NOP"],
|
|
["1", "0xf1", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xf1 is a discouraged NOP"],
|
|
["1", "0xf2", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xf2 is a discouraged NOP"],
|
|
["1", "0xf3", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xf3 is a discouraged NOP"],
|
|
["1", "0xf4", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xf4 is a discouraged NOP"],
|
|
["1", "0xf5", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xf5 is a discouraged NOP"],
|
|
["1", "0xf6", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xf6 is a discouraged NOP"],
|
|
["1", "0xf7", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xf7 is a discouraged NOP"],
|
|
["1", "0xf8", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Opcode 0xf8 is a discouraged NOP"],
|
|
|
|
["0", "IF NOP1 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged NOP1 allowed if not executed"],
|
|
["0", "IF NOP2 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged NOP2 allowed if not executed when CLTV is inactive"],
|
|
["0", "IF NOP3 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged NOP3 allowed if not executed when CSV is inactive"],
|
|
["0", "IF NOP4 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged NOP4 allowed if not executed"],
|
|
["0", "IF NOP5 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged NOP5 allowed if not executed"],
|
|
["0", "IF NOP6 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged NOP6 allowed if not executed"],
|
|
["0", "IF NOP7 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged NOP7 allowed if not executed"],
|
|
["0", "IF NOP8 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged NOP8 allowed if not executed"],
|
|
["0", "IF NOP9 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged NOP9 allowed if not executed"],
|
|
["0", "IF NOP10 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged NOP10 allowed if not executed"],
|
|
["0", "IF 0xc0 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xc0 allowed if not executed when SHA256 is inactive"],
|
|
["0", "IF 0xc1 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xc1 allowed if not executed"],
|
|
["0", "IF 0xc2 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xc2 allowed if not executed"],
|
|
["0", "IF 0xc3 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xc3 allowed if not executed"],
|
|
["0", "IF 0xc4 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xc4 allowed if not executed"],
|
|
["0", "IF 0xc5 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xc5 allowed if not executed"],
|
|
["0", "IF 0xc6 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xc6 allowed if not executed"],
|
|
["0", "IF 0xc7 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xc7 allowed if not executed"],
|
|
["0", "IF 0xc8 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xc8 allowed if not executed"],
|
|
["0", "IF 0xc9 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xc9 allowed if not executed"],
|
|
["0", "IF 0xca ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xca allowed if not executed"],
|
|
["0", "IF 0xcb ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xcb allowed if not executed"],
|
|
["0", "IF 0xcc ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xcc allowed if not executed"],
|
|
["0", "IF 0xcd ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xcd allowed if not executed"],
|
|
["0", "IF 0xce ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xce allowed if not executed"],
|
|
["0", "IF 0xcf ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xcf allowed if not executed"],
|
|
["0", "IF 0xd0 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xd0 allowed if not executed"],
|
|
["0", "IF 0xd1 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xd1 allowed if not executed"],
|
|
["0", "IF 0xd2 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xd2 allowed if not executed"],
|
|
["0", "IF 0xd3 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xd3 allowed if not executed"],
|
|
["0", "IF 0xd4 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xd4 allowed if not executed"],
|
|
["0", "IF 0xd5 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xd5 allowed if not executed"],
|
|
["0", "IF 0xd6 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xd6 allowed if not executed"],
|
|
["0", "IF 0xd7 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xd7 allowed if not executed"],
|
|
["0", "IF 0xd8 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xd8 allowed if not executed"],
|
|
["0", "IF 0xd9 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xd9 allowed if not executed"],
|
|
["0", "IF 0xda ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xda allowed if not executed"],
|
|
["0", "IF 0xdb ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xdb allowed if not executed"],
|
|
["0", "IF 0xdc ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xdc allowed if not executed"],
|
|
["0", "IF 0xdd ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xdd allowed if not executed"],
|
|
["0", "IF 0xde ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xde allowed if not executed"],
|
|
["0", "IF 0xdf ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xdf allowed if not executed"],
|
|
["0", "IF 0xe0 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xe0 allowed if not executed"],
|
|
["0", "IF 0xe1 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xe1 allowed if not executed"],
|
|
["0", "IF 0xe2 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xe2 allowed if not executed"],
|
|
["0", "IF 0xe3 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xe3 allowed if not executed"],
|
|
["0", "IF 0xe4 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xe4 allowed if not executed"],
|
|
["0", "IF 0xe5 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xe5 allowed if not executed"],
|
|
["0", "IF 0xe6 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xe6 allowed if not executed"],
|
|
["0", "IF 0xe7 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xe7 allowed if not executed"],
|
|
["0", "IF 0xe8 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xe8 allowed if not executed"],
|
|
["0", "IF 0xe9 ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xe9 allowed if not executed"],
|
|
["0", "IF 0xea ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xea allowed if not executed"],
|
|
["0", "IF 0xeb ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xeb allowed if not executed"],
|
|
["0", "IF 0xec ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xec allowed if not executed"],
|
|
["0", "IF 0xed ENDIF 1", "DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discouraged nop opcode 0xed allowed if not executed"],
|
|
|
|
["NOP10", "1", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Discouraged NOP10 in scriptSig"],
|
|
["1 0x01 NOP10", "HASH160 0x14 0xa880c3383e77efb97808a87ca378539e5f8904ef EQUAL", "DISCOURAGE_UPGRADABLE_NOPS", "ERR_DISCOURAGE_UPGRADABLE_NOPS", "Discouraged NOP10 in redeemScript"],
|
|
|
|
["RESERVED test coverage"],
|
|
["0x50","1", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0x50 is reserved"],
|
|
["0xfa", "1", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xfa is reserved"],
|
|
["0xfb", "1", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xfb is reserved"],
|
|
["0xfc", "1", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xfc is reserved"],
|
|
["0xfd", "1", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xfd is reserved"],
|
|
["0xfe", "1", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xfe is reserved"],
|
|
["0xff", "1", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xff is reserved"],
|
|
|
|
["0", "IF 0x50 ELSE 1 ENDIF", "NONE", "OK", "Reserved opcode 0x50 allowed if not executed"],
|
|
["0", "IF 0xfa ELSE 1 ENDIF", "NONE", "OK", "Reserved opcode 0xfa allowed if not executed"],
|
|
["0", "IF 0xfb ELSE 1 ENDIF", "NONE", "OK", "Reserved opcode 0xfb allowed if not executed"],
|
|
["0", "IF 0xfc ELSE 1 ENDIF", "NONE", "OK", "Reserved opcode 0xfc allowed if not executed"],
|
|
["0", "IF 0xfd ELSE 1 ENDIF", "NONE", "OK", "Reserved opcode 0xfd allowed if not executed"],
|
|
["0", "IF 0xfe ELSE 1 ENDIF", "NONE", "OK", "Reserved opcode 0xfe allowed if not executed"],
|
|
["0", "IF 0xff ELSE 1 ENDIF", "NONE", "OK", "Reserved opcode 0xff allowed if not executed"],
|
|
|
|
["1 1","IF 0x50 ELSE ENDIF", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0x50 is reserved in executed branch"],
|
|
["1 1","IF 0xfa ELSE ENDIF", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xfa is reserved in executed branch"],
|
|
["1 1","IF 0xfb ELSE ENDIF", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xfb is reserved in executed branch"],
|
|
["1 1","IF 0xfc ELSE ENDIF", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xfc is reserved in executed branch"],
|
|
["1 1","IF 0xfd ELSE ENDIF", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xfd is reserved in executed branch"],
|
|
["1 1","IF 0xfe ELSE ENDIF", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xfe is reserved in executed branch"],
|
|
["1 1","IF 0xff ELSE ENDIF", "NONE", "ERR_RESERVED_OPCODE", "Opcode 0xff is reserved in executed branch"],
|
|
|
|
["0", "IF 0x50{255} ENDIF 1", "NONE", "OK", ">255 opcodes, but RESERVED (0x50) doesn't count towards opcode limit"],
|
|
|
|
["0 0x01 0x50", "HASH160 0x14 0x77c33ee1f1892b124f2c9aaed62114c23cffe2da EQUAL", "NONE", "ERR_RESERVED_OPCODE", "OP_RESERVED in P2SH should fail"],
|
|
["0 0x01 VER", "HASH160 0x14 0xe682277f7669fe986d315d52b56df3d244da11a0 EQUAL", "NONE", "ERR_RESERVED_OPCODE", "OP_VER in P2SH should fail"],
|
|
|
|
["STAKE opcodes tests"],
|
|
|
|
["SSTX related tests"],
|
|
["1 1 ADD", "SSTX 2 OP_EQUAL", "NONE", "OK", "SSTX is a NOP"],
|
|
["DATA_5 DATA_4 0x7a{4}", "SSTX HASH160 DATA_20 0x246bda0f2b9aba6dc78c6259970e45e6af960d46 EQUAL", "NONE", "ERR_EVAL_FALSE", "SSTX almost P2SH"],
|
|
["1 3 DATA_2 ADD SSTX", "HASH160 DATA_20 0xdcbd287f8a23bf97cea3c77392854976a6feff8f EQUAL", "NONE", "ERR_P2SH_STAKE_OPCODES", "SSTX invalid in a P2SH"],
|
|
|
|
["SSGEN related tests"],
|
|
["1 1 ADD", "SSGEN 2 OP_EQUAL", "NONE", "OK", "SSGEN is a NOP"],
|
|
["DATA_5 DATA_4 0x7a{4}", "SSGEN HASH160 DATA_20 0x246bda0f2b9aba6dc78c6259970e45e6af960d46 EQUAL", "NONE", "ERR_EVAL_FALSE", "SSGEN almost P2SH"],
|
|
["1 3 DATA_2 ADD SSGEN", "HASH160 DATA_20 0xdb831e9b4c3e3a3f383bbf397aee000a27ba275e EQUAL", "NONE", "ERR_P2SH_STAKE_OPCODES", "SSGEN invalid in a P2SH"],
|
|
|
|
["SSRTX related tests"],
|
|
["1 1 ADD", "SSRTX 2 OP_EQUAL", "NONE", "OK", "SSRTX is a NOP"],
|
|
["DATA_5 DATA_4 0x7a{4}", "SSRTX HASH160 DATA_20 0x246bda0f2b9aba6dc78c6259970e45e6af960d46 EQUAL", "NONE", "ERR_EVAL_FALSE", "SSRTX almost P2SH"],
|
|
["1 3 DATA_2 ADD SSRTX", "HASH160 DATA_20 0xe24f7b2b9b8fae339d3a66ac5ab661c7da97038a EQUAL", "NONE", "ERR_P2SH_STAKE_OPCODES", "SSRTX invalid in a P2SH"],
|
|
|
|
["SSTXCHANGE related tests"],
|
|
["1 1 ADD", "SSTXCHANGE 2 OP_EQUAL", "NONE", "OK", "SSTXCHANGE is a NOP"],
|
|
["DATA_5 DATA_4 0x7a{4}", "SSTXCHANGE HASH160 DATA_20 0x246bda0f2b9aba6dc78c6259970e45e6af960d46 EQUAL", "NONE", "ERR_EVAL_FALSE", "SSTXCHANGE almost P2SH"],
|
|
["1 3 DATA_2 ADD SSTXCHANGE", "HASH160 DATA_20 0x346bae114bc3467f3c337f620a3272f4dd417daa EQUAL", "NONE", "ERR_P2SH_STAKE_OPCODES", "SSTXCHANGE invalid in a P2SH"],
|
|
|
|
["The End"]
|
|
]
|