> bitcore-lib-titus@0.13.22 test /home/jonas/tituscoin/insight/bitcore-lib-titus > gulp test [02:06:49] Using gulpfile ~/tituscoin/insight/bitcore-lib-titus/gulpfile.js [02:06:49] Starting 'test'... [02:06:49] Starting 'test:node'... Address ✓ can't build without data ✓ should throw an error because of bad network param ✓ should throw an error because of bad type param ✓ throws an error if it couldn't instantiate ✓ can roundtrip from/to a object ✓ will use the default network for an object bitcoind compliance ✓ should describe address TrxmXD3ViayCNXrg16KkciNY1MdBqaCNvA as valid ✓ should describe address SdJkFEFmefmme5Qq3av6sSPC8kZF3X9p6G as valid ✓ should describe address yjPCQXXeWJLFQWM6kF6dKRczZbNkSWVtrj as valid ✓ should describe address 8yDrsN8yRfbG678S5eVntDtAHdnuQKmCDx as valid ✓ should describe address ThJXxCezHsW578ZchnE53eGwqm31JMah8V as valid ✓ should describe address SkQRDSqQW8BR3WUZXgTcmhjntbTTseLH7S as valid ✓ should describe address yT9LnoTWwW8BZfMsaBzb2MeYPW9rJXrjcn as valid ✓ should describe address 8kPTvJRz23wKti61gMrsi2vJgs7q27A1gm as valid ✓ should describe address TiyZvyY8zTxmgFgbtggSXn3rYtMsAt6X6D as valid ✓ should describe address SWGCgVY8ykZn5Qs6nCSP13PWAf21ou8zCZ as valid ✓ should describe address yXU6wzQ9mU8VmSppe4BLTJ6wuCgeAddPkG as valid ✓ should describe address 8kvSTstYGkxogEXxJ3ALCD4bwMSnVV2uR8 as valid ✓ should describe address TcVHFnU6wXSE9xomjC6iuANJ7ymYnLjEpE as valid ✓ should describe address SWh2GMHv2HQgY5rM4pFyYYXTrvLLU3Hw1p as valid ✓ should describe address ybtBPfTFkCUWFBzGmGnDQgyfWB5N74LBwC as valid ✓ should describe address 8oDjDp3wqAdWLEuT4LXPo7N8ZHWoJLdMU8 as valid ✓ should describe address TiPmRNDm7ZaS6ChHpTHumnmKLGCChY3SGA as valid ✓ should describe address SbmbmHDseyTEbrjNyWJPwZApjA5Zyr8uE5 as valid ✓ should describe address yd3pNG9y4V2R3wkjfzH5kvx3ULab6y6wf6 as valid ✓ should describe address 8f3s8CPyf3fWEzsRo63SRzeJYVkVtqUHC4 as valid ✓ should describe address TtXSqg2kuK4fJpRc52fUAGwEX8ac3R2SZz as valid ✓ should describe address Sb9Prt4F8oBmJbbAaEegTbaoYo5RrLKhoa as valid ✓ should describe address ya2zvp6VqHwHuNzRYfVKScpFwAEaiVfwrb as valid ✓ should describe address 8qYkoymbuRbcZPfSVw98jQG9Te3333o25Q as valid ✓ should describe address TdWD7qbbq6EEf9BVSKrp7KLhGq5AbEPNM8 as valid ✓ should describe address SgeLoPh2wycRgW9zUDUQeDtKE9DDjvv4xU as valid ✓ should describe input ... as invalid ✓ should describe input x... as invalid ✓ should describe input 8212abd8rr... as invalid ✓ should describe input 5CPYCiRk7L... as invalid ✓ should describe input 2UB8YkLAso... as invalid ✓ should describe input 9sW9vnbLHf... as invalid ✓ should describe input 2FeLT8g7q2... as invalid ✓ should describe input 7Vbg3REusN... as invalid ✓ should describe input 7obK6DhucE... as invalid ✓ should describe input 7rJYzFcK4n... as invalid ✓ should describe input 2ULU3PB7u3... as invalid ✓ should describe input 7VBmPmJMUF... as invalid ✓ should describe input 2Zx1G5CMrE... as invalid ✓ should describe input yaWZmeqWr5... as invalid ✓ should describe input 7VPs36WGcb... as invalid ✓ should describe input 2DS5LTr3Ag... as invalid ✓ should describe input DeRXybcZve... as invalid ✓ should describe input 7pejnWw1qH... as invalid ✓ should describe input 4Yi2yBokcA... as invalid ✓ should describe input 2U65F6JTxD... as invalid ✓ should describe input 7UgNNEAfdi... as invalid ✓ should describe input 6wzMif8TRz... as invalid ✓ should describe input 6YKZfgYJSh... as invalid ✓ should describe input 92sWK7QesA... as invalid ✓ should describe input 2Ua8heeYCT... as invalid ✓ should describe input 2A6BvvmZ86... as invalid ✓ should describe input R5uiBq2rzV... as invalid ✓ should describe input 279AcBMDWx... as invalid ✓ should describe input 7VMRsPVwoj... as invalid ✓ should describe input 2V95nNKY2Y... as invalid ✓ should describe input 2D79xmaAZx... as invalid ✓ should describe input 7nwQ595A7n... as invalid ✓ should describe input 7rLMRn8VSm... as invalid ✓ should describe input J3JtSQiZ46... as invalid ✓ should describe input 21WFTGZEpL... as invalid ✓ should describe input 7oShSMyZqo... as invalid ✓ should describe input KqarYQ2A4j... as invalid ✓ should describe input gSzq4StFrs... as invalid ✓ should describe input 7UdhV95GSa... as invalid ✓ should describe input 2msvzdVt86... as invalid ✓ should describe input ryMiy7TSV4... as invalid ✓ should describe input 6YnxQpwLv2... as invalid ✓ should describe input 92g6icyL3H... as invalid ✓ should describe input 2XCxe9EpeG... as invalid ✓ should describe input 6YdrW3VDyE... as invalid ✓ should describe input PsfkAxuhDQ... as invalid ✓ should describe input 2k2HeazZ1a... as invalid ✓ should describe input 724Fw3TFoS... as invalid ✓ should describe input 7VrbcSqCJn... as invalid ✓ should describe input 8SHxzARcUK... as invalid validation ✓ getValidationError detects network mismatchs ✓ isValid returns true on a valid address ✓ isValid returns false on network mismatch ✓ validates correctly the P2PKH test vector ✓ validates correctly the P2SH test vector ✓ validates correctly the P2SH testnet test vector ✓ rejects correctly the P2PKH livenet test vector with "testnet" parameter ✓ validates correctly the P2PKH livenet test vector with "livenet" parameter ✓ should not validate if checksum is invalid ✓ should not validate on a network mismatch ✓ should not validate on a type mismatch ✓ should not validate on non-base58 characters ✓ testnet addresses are validated correctly 1) addresses with whitespace are validated correctly instantiation ✓ can be instantiated from another address encodings ✓ should make an address from a buffer ✓ should make an address from a string ✓ should make an address using a non-string network ✓ should error because of unrecognized data format ✓ should error because of incorrect format for pubkey hash ✓ should error because of incorrect format for script hash ✓ should error because of incorrect type for transform buffer ✓ should error because of incorrect length buffer for transform buffer ✓ should error because of incorrect type for pubkey transform ✓ should error because of incorrect type for script transform ✓ should error because of incorrect type for string transform ✓ should make an address from a pubkey hash buffer ✓ should make an address using the default network ✓ should throw an error for invalid length hashBuffer ✓ should make this address from a compressed pubkey ✓ should use the default network for pubkey ✓ should make this address from an uncompressed pubkey ✓ should classify from a custom network ✓ should derive from this known address string livenet ✓ should derive from this known address string testnet ✓ should derive from this known address string livenet scripthash ✓ should derive from this known address string testnet scripthash from a script ✓ should fail to build address from a non p2sh,p2pkh script ✓ should make this address from a p2pkh output script ✓ should make this address from a p2sh input script ✓ returns the same address if the script is a pay to public key hash out ✓ returns the same address if the script is a pay to script hash out #toBuffer ✓ 3c3fa3d4adcaf8f52d5b1843975e122548269937 corresponds to hash XgBQcYbKff4q7cEs7AaxoPN2CAiBbFc2JT #object ✓ roundtrip to-from-to ✓ will fail with invalid state #toString ✓ livenet pubkeyhash address ✓ scripthash address ✓ testnet scripthash address ✓ testnet pubkeyhash address #inspect ✓ should output formatted output correctly questions about the address ✓ should detect a P2SH address ✓ should detect a Pay To PubkeyHash address creating a P2SH address from public keys ✓ can create an address from a set of public keys (110ms) ✓ works on testnet also (54ms) ✓ can also be created by Address.createMultisig (103ms) ✓ fails if invalid array is provided Documentation ✓ major and minor versions should match HDKey cache ✓ saves a derived key ✓ starts erasing unused keys (65ms) ✓ avoids erasing keys that get cache hits ("hot keys") (50ms) ✓ keeps the size of the cache small (67ms) HDKeys building with static methods ✓ HDPublicKey fromJSON checks that a valid JSON is provided ✓ HDPublicKey fromString checks that a string is provided ✓ HDPublicKey fromObject checks that an object is provided ✓ HDPrivateKey fromJSON checks that a valid JSON is provided ✓ HDPrivateKey fromString checks that a string is provided ✓ HDPrivateKey fromObject checks that an object is provided BIP32 compliance ✓ should initialize test vector 1 from the extended public key ✓ should initialize test vector 1 from the extended private key ✓ can initialize a public key from an extended private key (45ms) ✓ toString should be equal to the `xpubkey` member ✓ toString should be equal to the `xpubkey` member ✓ should get the extended public key from the extended private key for test vector 1 (43ms) ✓ should get m/0' ext. private key from test vector 1 ✓ should get m/0' ext. public key from test vector 1 (43ms) ✓ should get m/0'/1 ext. private key from test vector 1 ✓ should get m/0'/1 ext. public key from test vector 1 (42ms) ✓ should get m/0'/1 ext. public key from m/0' public key from test vector 1 (52ms) ✓ should get m/0'/1/2' ext. private key from test vector 1 (48ms) ✓ should get m/0'/1/2' ext. public key from test vector 1 (45ms) ✓ should get m/0'/1/2'/2 ext. private key from test vector 1 ✓ should get m/0'/1/2'/2 ext. public key from m/0'/1/2' public key from test vector 1 (122ms) ✓ should get m/0'/1/2h/2 ext. public key from test vector 1 (106ms) ✓ should get m/0'/1/2h/2/1000000000 ext. private key from test vector 1 (93ms) ✓ should get m/0'/1/2h/2/1000000000 ext. public key from test vector 1 (121ms) ✓ should get m/0'/1/2'/2/1000000000 ext. public key from m/0'/1/2'/2 public key from test vector 1 (139ms) ✓ should initialize test vector 2 from the extended public key ✓ should initialize test vector 2 from the extended private key ✓ should get the extended public key from the extended private key for test vector 2 (49ms) ✓ should get m/0 ext. private key from test vector 2 ✓ should get m/0 ext. public key from test vector 2 (43ms) ✓ should get m/0 ext. public key from m public key from test vector 2 (74ms) ✓ should get m/0/2147483647h ext. private key from test vector 2 ✓ should get m/0/2147483647h ext. public key from test vector 2 (41ms) ✓ should get m/0/2147483647h/1 ext. private key from test vector 2 ✓ should get m/0/2147483647h/1 ext. public key from test vector 2 (41ms) ✓ should get m/0/2147483647h/1 ext. public key from m/0/2147483647h public key from test vector 2 (50ms) ✓ should get m/0/2147483647h/1/2147483646h ext. private key from test vector 2 (46ms) ✓ should get m/0/2147483647h/1/2147483646h ext. public key from test vector 2 (104ms) ✓ should get m/0/2147483647h/1/2147483646h/2 ext. private key from test vector 2 (91ms) ✓ should get m/0/2147483647h/1/2147483646h/2 ext. public key from test vector 2 (121ms) ✓ should get m/0/2147483647h/1/2147483646h/2 ext. public key from m/0/2147483647h/2147483646h public key from test vector 2 (136ms) seed ✓ should initialize a new BIP32 correctly from test vector 1 seed (42ms) ✓ should initialize a new BIP32 correctly from test vector 2 seed (43ms) HDPrivate key interface ✓ should make a new private key from random ✓ should make a new private key from random for testnet ✓ should not be able to change read-only properties ✓ should error with an invalid checksum ✓ can be rebuilt from a json generated by itself ✓ builds a json keeping the structure and same members ✓ inspect() displays correctly ✓ fails when trying to derive with an invalid argument ✓ catches early invalid paths ✓ allows derivation of hardened keys by passing a very big number ✓ returns itself with 'm' parameter ✓ returns InvalidArgument if invalid data is given to getSerializedError ✓ returns InvalidLength if data of invalid length is given to getSerializedError ✓ returns InvalidNetworkArgument if an invalid network is provided ✓ recognizes that the wrong network was asked for ✓ recognizes the correct network ✓ correctly errors if an invalid checksum is provided ✓ correctly validates the checksum ✓ shouldn't matter if derivations are made with strings or numbers (49ms) instantiation ✓ invalid argument: can not instantiate from a number ✓ allows no-new calling ✓ allows the use of a copy constructor public key ✓ matches the network ✓ cache for xpubkey works (43ms) on creation from seed ✓ converts correctly from an hexa string ✓ fails when argument is not a buffer or string ✓ fails when argument doesn't provide enough entropy ✓ fails when argument provides too much entropy validates paths ✓ validates correct paths ✓ rejects illegal path m/-1/12 ✓ rejects illegal path bad path ✓ rejects illegal path K ✓ rejects illegal path m/ ✓ rejects illegal path m/12asd ✓ rejects illegal path m/1/2//3 ✓ generates deriving indexes correctly conversion to/from buffer ✓ should roundtrip to/from a buffer (47ms) conversion to plain object/json ✓ toObject leaves no Buffer instances ✓ roundtrips toObject ✓ roundtrips to JSON and to Object ✓ recovers state from JSON ✓ recovers state from Object HDPublicKey interface ✓ toString() returns the same value as .xpubkey ✓ publicKey property matches network (38ms) ✓ inspect() displays correctly creation formats ✓ returns same argument if already an instance of HDPublicKey ✓ returns the correct xpubkey for a xprivkey (50ms) ✓ allows to call the argument with no "new" keyword ✓ fails when user doesn't supply an argument ✓ should not be able to change read-only properties (45ms) ✓ doesn't recognize an invalid argument ✓ can be generated from a json ✓ can generate a json that has a particular structure ✓ builds from a buffer object ✓ checks the checksum xpubkey string serialization errors ✓ fails on invalid length ✓ fails on invalid base58 encoding ✓ user can ask if a string is valid error checking on serialization ✓ throws invalid argument when argument is not a string or buffer ✓ if a network is provided, validates that data corresponds to it ✓ recognizes invalid network arguments ✓ recognizes a valid network conversion to/from buffer ✓ should roundtrip to an equivalent object (51ms) conversion to different formats ✓ roundtrips to JSON and to Object ✓ recovers state from Object derivation ✓ derivation is the same whether deriving with number or string (117ms) ✓ allows special parameters m, M ✓ doesn't allow object arguments for derivation ✓ needs first argument for derivation ✓ doesn't allow other parameters like m' or M' or "s" (75ms) ✓ can't derive hardened keys ✓ can't derive hardened keys via second argument ✓ validates correct paths ✓ rejects illegal paths ✓ should use the cache #versionGuard ✓ global._bitcore should be defined ✓ throw an error if version is already defined Networks ✓ should contain all Networks ✓ will enable/disable regtest Network ✓ will get network based on string "regtest" value ✓ should be able to define a custom Network ✓ can remove a custom network ✓ should not set a network map for an undefined value ✓ should have constant name for livenet and testnet ✓ should have constant alias for livenet and testnet ✓ should have constant pubkeyhash for livenet and testnet ✓ should have constant scripthash for livenet and testnet ✓ should have constant xpubkey for livenet and testnet ✓ should have constant xprivkey for livenet and testnet ✓ tests only for the specified key ✓ can test for multiple keys ✓ converts to string using the "name" property ✓ network object should be immutable Opcode ✓ should create a new Opcode ✓ should convert to a string with this handy syntax ✓ should convert to a number with this handy syntax #fromNumber ✓ should work for 0 ✓ should fail for non-number #set ✓ should work for object ✓ should fail for empty-object #toNumber ✓ should work for 0 #buffer ✓ should correctly input/output a buffer #fromString ✓ should work for OP_0 ✓ should fail for invalid string ✓ should fail for non-string #toString ✓ should work for OP_0 ✓ should not work for non-opcode @map ✓ should have a map containing 117 elements @reverseMap ✓ should exist and have op 185 @smallInt ✓ should work for small int OP_0 ✓ should work for small int OP_1 ✓ should work for small int OP_2 ✓ should work for small int OP_3 ✓ should work for small int OP_4 ✓ should work for small int OP_5 ✓ should work for small int OP_6 ✓ should work for small int OP_7 ✓ should work for small int OP_8 ✓ should work for small int OP_9 ✓ should work for small int OP_10 ✓ should work for small int OP_11 ✓ should work for small int OP_12 ✓ should work for small int OP_13 ✓ should work for small int OP_14 ✓ should work for small int OP_15 ✓ should work for small int OP_16 ✓ with not number ✓ with n equal -1 ✓ with n equal 17 @isSmallIntOp ✓ should work for small int OP_0 ✓ should work for small int OP_1 ✓ should work for small int OP_2 ✓ should work for small int OP_3 ✓ should work for small int OP_4 ✓ should work for small int OP_5 ✓ should work for small int OP_6 ✓ should work for small int OP_7 ✓ should work for small int OP_8 ✓ should work for small int OP_9 ✓ should work for small int OP_10 ✓ should work for small int OP_11 ✓ should work for small int OP_12 ✓ should work for small int OP_13 ✓ should work for small int OP_14 ✓ should work for small int OP_15 ✓ should work for small int OP_16 ✓ should work for non-small ints #inspect ✓ should output opcode by name, hex, and decimal PrivateKey ✓ should create a new random private key ✓ should create a privatekey from hexa string ✓ should create a new random testnet private key with only one argument ✓ should create a private key from a custom network WIF string ✓ should create a new random testnet private key with empty data ✓ should create a private key from WIF string ✓ should create a private key from WIF buffer ✓ coverage: public key cache ✓ creates an address as expected from WIF, livenet ✓ creates an address as expected from WIF, testnet bitcoind compliance ✓ should instantiate WIF private key 3Gdcu3Vm6jG6R7y3Rt1tVeZowFUkMxGBxkGnbCAYbq7LDVvUyzH with correct properties ✓ should instantiate WIF private key B1RwLw9Dt4YECtNevxH6NNWQ3Dcpq7kucLnG9V7grxtA2ZLc6Dk6 with correct properties ✓ should instantiate WIF private key 92hLJiadfEWuB495T4bQSs5y2p8nNAgEXvSJV8kPeqhM3XAekx9 with correct properties ✓ should instantiate WIF private key cU5umxbPoUfVmwe3aUUEsLwuxBJMP3exkGLpGKhEyeHJgWGDkLrQ with correct properties ✓ should instantiate WIF private key 3FoLHnwsrHhxxWZcxTd2m79UQ3kKpNv6SeYmAX3PEJnCDHUVP3x with correct properties ✓ should instantiate WIF private key AyUMjWeUSG7Rb9AA6XAji4X4pVNSLd4PWGMQhGWCozcNpoMy9LkU with correct properties ✓ should instantiate WIF private key 93CfiypQXKXvMd7mfdNcEEPQ7XJmrxrpLmMDDLN1CgSZe6aeq9s with correct properties ✓ should instantiate WIF private key cVmHzweV4mG9CQL7puasy5ymhnPboQyEn8fGDML9kifgSeDcc7cX with correct properties ✓ should instantiate WIF private key 3FNYxjMzNZzL8bGV5fcYTd7qNj1jHqJ1SFCAmvFaNJzdivDdYdh with correct properties ✓ should instantiate WIF private key AwkALbDVx4PvvVJMJYy5B2ADk3PWmoUddR99FknQ6QDLcnxrQeb6 with correct properties ✓ should instantiate WIF private key 91d4HAhVdpojjAgjfNhAnWcwTL3oRrctojzUvvAnvQ8rPs9eM1y with correct properties ✓ should instantiate WIF private key cQPHMKdxJWzB6SJpPRbtVSxB2drzgU9YA113WdPzDFL8jM8PrEji with correct properties ✓ should instantiate WIF private key 3FwXvGnpe112KJWcKj83MP6GGETqDuY3jLRneErdaxhWKH8eK6f with correct properties ✓ should instantiate WIF private key AyWCcSPURB4bfekvdyqThrifYCd9i4PvLckhXxRy1wYwyB4uxhLD with correct properties ✓ should instantiate WIF private key 92a2z8Jigh7KKmC6zvaqoDxVv3RJddwS2JWYDeagrmdG8bSFRkT with correct properties ✓ should instantiate WIF private key cVphasNAoCAWpnAVKSkvgHBx8be6vcyvks2e5P7m8xGjRTk88GBV with correct properties ✓ should instantiate WIF private key 3GAaD9hd8BX5nvhjyvJ64qjvs1eCnMxax5u2iueHyhPY5uRHWuJ with correct properties ✓ should instantiate WIF private key Avb6PV46gc9EDZLRGwtP3XyJb2oB3MLrLV8MQVKN993Xd7nYjnKJ with correct properties ✓ should instantiate WIF private key 91xQUNh8RMos9pjCQhdXvnWBrZfvLEzwW3wP7mYsoPWMdY5dV1R with correct properties ✓ should instantiate WIF private key cQTGeyQvinEqrhK5AmedRQRP1p7gkDhiMJEEuaLsN9K7g4Fusa6C with correct properties ✓ should instantiate WIF private key 3FPibwuA5fbmqTmL2Z8cu3ypFzJ1ke8WHcRiRjvUZhJ1qmeCQSL with correct properties ✓ should instantiate WIF private key AyfmvCoGoVgou3qvWjarvSN5RJMdJY17vpPduL6LQ5MFedz9curT with correct properties ✓ should instantiate WIF private key 92auZk5GyxgAkC8pXvRhAoYFdq443bPzDbXQyBcGGE3WeW8K7J4 with correct properties ✓ should instantiate WIF private key cUL1DrjQfqDxQvtKzSb4fVyBWxLRLTEFGomeEhF2BLqMENcegaab with correct properties ✓ should describe input ... as invalid ✓ should describe input x... as invalid ✓ should describe input 8212abd8rr... as invalid ✓ should describe input 5CPYCiRk7L... as invalid ✓ should describe input 2UB8YkLAso... as invalid ✓ should describe input 9sW9vnbLHf... as invalid ✓ should describe input 2FeLT8g7q2... as invalid ✓ should describe input 7Vbg3REusN... as invalid ✓ should describe input 7obK6DhucE... as invalid ✓ should describe input 7rJYzFcK4n... as invalid ✓ should describe input 2ULU3PB7u3... as invalid ✓ should describe input 7VBmPmJMUF... as invalid ✓ should describe input 2Zx1G5CMrE... as invalid ✓ should describe input yaWZmeqWr5... as invalid ✓ should describe input 7VPs36WGcb... as invalid ✓ should describe input 2DS5LTr3Ag... as invalid ✓ should describe input DeRXybcZve... as invalid ✓ should describe input 7pejnWw1qH... as invalid ✓ should describe input 4Yi2yBokcA... as invalid ✓ should describe input 2U65F6JTxD... as invalid ✓ should describe input 7UgNNEAfdi... as invalid ✓ should describe input 6wzMif8TRz... as invalid ✓ should describe input 6YKZfgYJSh... as invalid ✓ should describe input 92sWK7QesA... as invalid ✓ should describe input 2Ua8heeYCT... as invalid ✓ should describe input 2A6BvvmZ86... as invalid ✓ should describe input R5uiBq2rzV... as invalid ✓ should describe input 279AcBMDWx... as invalid ✓ should describe input 7VMRsPVwoj... as invalid ✓ should describe input 2V95nNKY2Y... as invalid ✓ should describe input 2D79xmaAZx... as invalid ✓ should describe input 7nwQ595A7n... as invalid ✓ should describe input 7rLMRn8VSm... as invalid ✓ should describe input J3JtSQiZ46... as invalid ✓ should describe input 21WFTGZEpL... as invalid ✓ should describe input 7oShSMyZqo... as invalid ✓ should describe input KqarYQ2A4j... as invalid ✓ should describe input gSzq4StFrs... as invalid ✓ should describe input 7UdhV95GSa... as invalid ✓ should describe input 2msvzdVt86... as invalid ✓ should describe input ryMiy7TSV4... as invalid ✓ should describe input 6YnxQpwLv2... as invalid ✓ should describe input 92g6icyL3H... as invalid ✓ should describe input 2XCxe9EpeG... as invalid ✓ should describe input 6YdrW3VDyE... as invalid ✓ should describe input PsfkAxuhDQ... as invalid ✓ should describe input 2k2HeazZ1a... as invalid ✓ should describe input 724Fw3TFoS... as invalid ✓ should describe input 7VrbcSqCJn... as invalid ✓ should describe input 8SHxzARcUK... as invalid instantiation ✓ should not be able to instantiate private key greater than N ✓ should not be able to instantiate private key because of network mismatch ✓ should not be able to instantiate private key WIF is too long ✓ should not be able to instantiate private key WIF because of unknown network byte ✓ should not be able to instantiate private key WIF because of network mismatch ✓ can be instantiated from a hex string ✓ should not be able to instantiate because of unrecognized data ✓ should not be able to instantiate with unknown network ✓ should not create a zero private key ✓ should create a livenet private key ✓ should create a default network private key ✓ returns the same instance if a PrivateKey is provided (immutable) #json/object ✓ should input/output json ✓ input json should correctly initialize network field ✓ fails on invalid argument ✓ also accepts an object as argument #toString ✓ should output this address correctly #toAddress ✓ should output this known livenet address correctly ✓ should output this known testnet address correctly ✓ creates network specific address #inspect ✓ should output known livenet address for console ✓ should output known testnet address for console ✓ outputs "uncompressed" for uncompressed imported WIFs #getValidationError ✓ should get an error because private key greater than N ✓ should validate as false because private key greater than N ✓ should recognize that undefined is an invalid private key ✓ should validate as true buffer serialization ✓ returns an expected value when creating a PrivateKey from a buffer ✓ roundtrips correctly when using toBuffer/fromBuffer #toBigNumber ✓ should output known BN #fromRandom ✓ should set bn gt 0 and lt n, and should be compressed #fromWIF ✓ should parse this compressed testnet address correctly #toWIF ✓ should parse this compressed testnet address correctly #fromString ✓ should parse this uncompressed testnet address correctly #toString ✓ should parse this uncompressed livenet address correctly #toPublicKey ✓ should convert this known PrivateKey to known PublicKey ✓ should have a "publicKey" property ✓ should convert this known PrivateKey to known PublicKey and preserve compressed=true ✓ should convert this known PrivateKey to known PublicKey and preserve compressed=false PublicKey validating errors on creation ✓ errors if data is missing ✓ errors if an invalid point is provided ✓ errors if a point not on the secp256k1 curve is provided ✓ errors if the argument is of an unrecognized type instantiation ✓ from a private key ✓ problematic secp256k1 public keys ✓ from a compressed public key ✓ from another publicKey ✓ sets the network to defaultNetwork if none provided ✓ from a hex encoded DER string ✓ from a hex encoded DER buffer ✓ from a point #getValidationError ✓ should recieve an invalid point error ✓ should recieve a boolean as false ✓ should recieve a boolean as true for uncompressed ✓ should recieve a boolean as true for compressed #fromPoint ✓ should instantiate from a point ✓ should error because paramater is not a point #json/object ✓ should input/ouput json ✓ fails if "y" is not provided ✓ fails if invalid JSON is provided ✓ works for X starting with 0x00 #fromPrivateKey ✓ should make a public key from a privkey ✓ should error because not an instance of privkey #fromBuffer ✓ should parse this uncompressed public key ✓ should parse this compressed public key ✓ should throw an error on this invalid public key ✓ should throw error because not a buffer ✓ should throw error because buffer is the incorrect length #fromDER ✓ should parse this uncompressed public key ✓ should parse this compressed public key ✓ should throw an error on this invalid public key #fromString ✓ should parse this known valid public key #fromX ✓ should create this known public key ✓ should error because odd was not included as a param #toBuffer ✓ should return this compressed DER format ✓ should return this uncompressed DER format #toDER ✓ should return this compressed DER format ✓ should return this uncompressed DER format #toAddress ✓ should output this known mainnet address correctly ✓ should output this known testnet address correctly #toString ✓ should print this known public key #inspect ✓ should output known uncompressed pubkey for console ✓ should output known compressed pubkey for console ✓ should output known compressed pubkey with network for console #validate ✓ should not have an error if pubkey is valid ✓ should throw an error if pubkey is invalid ✓ should throw an error if pubkey is invalid ✓ should throw an error if pubkey is infinity Unit ✓ can be created from a number and unit ✓ can be created from a number and exchange rate ✓ no "new" is required for creating an instance ✓ has property accesors "BTC", "mBTC", "uBTC", "bits", and "satoshis" ✓ a string amount is allowed ✓ should have constructor helpers ✓ converts to satoshis correctly ✓ takes into account floating point problems ✓ exposes unit codes ✓ exposes a method that converts to different units ✓ exposes shorthand conversion methods ✓ can convert to fiat ✓ toString works as expected ✓ can be imported and exported from/to JSON ✓ importing from invalid JSON fails quickly ✓ inspect method displays nicely ✓ fails when the unit is not recognized ✓ fails when the exchange rate is invalid URI ✓ parses uri strings correctly (test vector) ✓ URIs can be validated statically (test vector) ✓ fails on creation with no params ✓ do not need new keyword ✓ should create instance from object ✓ should support double slash scheme ✓ should input/output String ✓ should input/output JSON ✓ should support numeric amounts ✓ should support extra arguments ✓ should generate a valid URI ✓ should be case insensitive to protocol ✓ writes correctly the "r" parameter on string serialization ✓ displays nicely on the console (#inspect) ✓ fails early when fromString isn't provided a string ✓ fails early when fromJSON isn't provided a valid JSON string instantiation from bitcoin uri ✓ parses address ✓ parses amount ✓ parses a testnet address ✓ stores unknown parameters as "extras" ✓ throws error when a required feature is not supported ✓ has no false negative when checking supported features Block ✓ should make a new block ✓ should not make an empty block #constructor ✓ should set these known values (44ms) ✓ should properly deserialize blocks (49ms) #fromRawBlock ✓ should instantiate from a raw block binary ✓ should instantiate from raw block buffer #fromJSON ✓ should set these known values ✓ should set these known values #toJSON ✓ should recover these known values #fromString/#toString ✓ should output/input a block hex string #fromBuffer ✓ should make a block from this known buffer ✓ should instantiate from block buffer from the network #fromBufferReader ✓ should make a block from this known buffer #toBuffer ✓ should recover a block from this known buffer #toBufferWriter ✓ should recover a block from this known buffer ✓ doesn't create a bufferWriter if one provided #toObject ✓ should recover a block from genesis block buffer ✓ roundtrips correctly #_getHash ✓ should return the correct hash of the genesis block #id ✓ should return the correct id of the genesis block ✓ "hash" should be the same as "id" #inspect ✓ should return the correct inspect of the genesis block #merkleRoot ✓ should describe as valid merkle root ✓ should describe as invalid merkle root ✓ should get a null hash merkle root BlockHeader ✓ should make a new blockheader ✓ should not make an empty block ✓ coverage: caches the "_id" property #constructor ✓ should set all the variables ✓ will throw an error if the argument object hash property doesn't match #fromObject ✓ should set all the variables #toJSON ✓ should set all the variables #fromJSON ✓ should parse this known json string #fromString/#toString ✓ should output/input a block hex string #fromBuffer ✓ should parse this known buffer #fromBufferReader ✓ should parse this known buffer #toBuffer ✓ should output this known buffer #toBufferWriter ✓ should output this known buffer ✓ doesn't create a bufferWriter if one provided #inspect ✓ should return the correct inspect of the genesis block #fromRawBlock ✓ should instantiate from a raw block binary ✓ should instantiate from raw block buffer #validTimestamp ✓ should validate timpstamp as true ✓ should validate timestamp as false #validProofOfWork ✓ should validate proof-of-work as true ✓ should validate proof of work as false because incorrect proof of work #getDifficulty ✓ should get the correct difficulty for block 19976 ✓ should get the correct difficulty for testnet block 52065 ✓ should get the correct difficulty for livenet block 273043 ✓ should get the correct difficulty for livenet block 330000 ✓ should use exponent notation if difficulty is larger than Javascript number MerkleBlock #constructor ✓ should make a new merkleblock from buffer ✓ should make a new merkleblock from object ✓ should make a new merkleblock from JSON ✓ should not make an empty block #fromObject ✓ should set these known values ✓ should set these known values ✓ accepts an object as argument #toJSON ✓ should recover these known values #fromBuffer ✓ should make a block from this known buffer #fromBufferReader ✓ should make a block from this known buffer #toBuffer ✓ should recover a block from this known buffer #toBufferWriter ✓ should recover a block from this known buffer ✓ doesn't create a bufferWriter if one provided #validMerkleTree ✓ should validate good merkleblocks ✓ should not validate merkleblocks with too many hashes ✓ should not validate merkleblocks with too few bit flags #hasTransaction ✓ should find transactions via hash string ✓ should find transactions via Transaction object ✓ should not find non-existant Transaction object ✓ should not match with merkle nodes BN ✓ should create a bn ✓ should parse this number ✓ should parse numbers below and at bn.js internal word size #add ✓ should add two small numbers together #sub ✓ should subtract a small number #gt ✓ should say 1 is greater than 0 ✓ should say a big number is greater than a small big number ✓ should say a big number is great than a standard number to/from ScriptNumBuffer ✓ rountrips correctly for 0 ✓ rountrips correctly for 1 ✓ rountrips correctly for 10 ✓ rountrips correctly for 256 ✓ rountrips correctly for 1000 ✓ rountrips correctly for 65536 ✓ rountrips correctly for 65537 ✓ rountrips correctly for -1 ✓ rountrips correctly for -1000 ✓ rountrips correctly for -65536 ✓ rountrips correctly for -65537 #fromString ✓ should make BN from a string ✓ should work with hex string #toString ✓ should make a string @fromBuffer ✓ should work with big endian ✓ should work with big endian 256 ✓ should work with little endian if we specify the size #toBuffer ✓ should create a 4 byte buffer ✓ should create a 4 byte buffer in little endian ✓ should create a 2 byte buffer even if you ask for a 1 byte ✓ should create a 4 byte buffer even if you ask for a 1 byte ECDSA ✓ instantiation #set ✓ sets hashbuf #calci ✓ calculates i correctly (89ms) ✓ calulates this known i (151ms) #fromString ✓ round trip with fromString #randomK ✓ should generate a new random k when called twice in a row ✓ should generate a random k that is (almost always) greater than this relatively small number #deterministicK ✓ should generate the same deterministic k ✓ should generate the same deterministic k if badrs is set ✓ should compute this test vector correctly #toPublicKey ✓ should calculate the correct public key (77ms) ✓ should calculate the correct public key for this signature with low s (69ms) ✓ should calculate the correct public key for this signature with high s (80ms) #sigError ✓ should return an error if the hash is invalid ✓ should return an error if r, s are invalid ✓ should return an error if the signature is incorrect #sign ✓ should create a valid signature (39ms) ✓ should should throw an error if hashbuf is not 32 bytes ✓ should default to deterministicK ✓ should generate right K (51ms) #toString ✓ should convert this to a string signing and verification @sign ✓ should produce a signature ✓ should produce a signature, and be different when called twice #verify ✓ should verify a signature that was just signed ✓ should verify this known good signature ✓ should verify a valid signature, and unverify an invalid signature (83ms) ✓ should work with big and little endian (139ms) vectors ✓ should validate valid vector 0 (118ms) ✓ should validate valid vector 1 (126ms) ✓ should validate valid vector 2 (119ms) ✓ should validate valid vector 3 (186ms) ✓ should validate valid vector 4 (120ms) ✓ should validate valid vector 5 (180ms) ✓ should validate valid vector 6 (176ms) ✓ should validate invalid.sigError vector 0: The wrong signature (44ms) ✓ should validate invalid.sigError vector 1: Invalid r value (< 0) ✓ should validate invalid.sigError vector 2: Invalid r value (== 0) ✓ should validate invalid.sigError vector 3: Invalid r value (>= n) ✓ should validate invalid.sigError vector 4: Invalid s value (< 0) ✓ should validate invalid.sigError vector 5: Invalid s value (== 0) ✓ should validate invalid.sigError vector 6: Invalid s value (>= n) ✓ should validate invalid.sigError vector 7: Invalid r, s values (r = s = -n) ✓ should validate deterministicK vector 0 ✓ should validate deterministicK vector 1 ✓ should validate deterministicK vector 2 ✓ should validate deterministicK vector 3 ✓ should validate deterministicK vector 4 ✓ should validate deterministicK vector 5 ✓ should validate deterministicK vector 6 ✓ should validate deterministicK vector 7 ✓ should validate deterministicK vector 8 ✓ should validate deterministicK vector 9 Hash @sha1 ✓ calculates the hash of this buffer correctly ✓ throws an error when the input is not a buffer #sha256 ✓ calculates the hash of this buffer correctly ✓ fails when the input is not a buffer #sha256hmac ✓ computes this known big key correctly ✓ computes this known empty test vector correctly ✓ computes this known non-empty test vector correctly #sha256sha256 ✓ calculates the hash of this buffer correctly ✓ fails when the input is not a buffer #sha256ripemd160 ✓ calculates the hash of this buffer correctly ✓ fails when the input is not a buffer #ripemd160 ✓ calculates the hash of this buffer correctly ✓ fails when the input is not a buffer #sha512 ✓ calculates the hash of this buffer correctly ✓ fails when the input is not a buffer #sha512hmac ✓ calculates this known empty test vector correctly ✓ calculates this known non-empty test vector correctly Point ✓ should create a point ✓ should create a point when called with "new" #getX ✓ should return x ✓ should be convertable to a buffer #getY ✓ should return y ✓ should be convertable to a buffer #add ✓ should accurately add g to itself #mul ✓ should accurately multiply g by 2 ✓ should accurately multiply g by n-1 ✓ should accurately multiply g by n+1 @fromX ✓ should return g #validate ✓ should describe this point as valid ✓ should describe this point as invalid because of zero y ✓ should describe this point as invalid because of invalid y ✓ should describe this point as invalid because out of curve bounds ✓ should describe this point as invalid because out of curve bounds Random @getRandomBuffer ✓ should return a buffer ✓ should not equate two 256 bit random buffers ✓ should generate 100 8 byte buffers in a row that are not equal @getPseudoRandomBuffer ✓ should return a buffer Signature ✓ should make a blank signature ✓ should work with conveniently setting r, s #set ✓ should set compressed ✓ should set nhashtype #fromCompact ✓ should create a signature from a compressed signature ✓ should create a signature from an uncompressed signature #fromDER ✓ should parse this DER format signature #fromString ✓ should parse this DER format signature in hex #toTxFormat ✓ should parse this known signature and rebuild it with updated zero-padded sighash types #fromTxFormat ✓ should convert from this known tx-format buffer ✓ should parse this known signature and rebuild it #parseDER ✓ should parse this signature generated in node ✓ should parse this 69 byte signature ✓ should parse this 68 byte signature ✓ should parse this signature from script_valid.json #toDER ✓ should convert these known r and s values into a known signature #toString ✓ should convert this signature in to hex DER @isTxDER ✓ should know this is a DER signature ✓ should know this is not a DER signature bitcoind fixtures ✓ should be valid for fixture #0 ✓ should be valid for fixture #1 ✓ should be valid for fixture #2 ✓ should be valid for fixture #3 ✓ should be valid for fixture #4 ✓ should be invalid for fixture #0 ✓ should be invalid for fixture #1 ✓ should be invalid for fixture #2 ✓ should be invalid for fixture #3 ✓ should be invalid for fixture #4 ✓ should be invalid for fixture #5 ✓ should be invalid for fixture #6 ✓ should be invalid for fixture #7 ✓ should be invalid for fixture #8 ✓ should be invalid for fixture #9 ✓ should be invalid for fixture #10 ✓ should be invalid for fixture #11 ✓ should be invalid for fixture #12 ✓ should be invalid for fixture #13 ✓ should be invalid for fixture #14 #hasLowS ✓ should detect high and low S #hasDefinedHashtype ✓ should reject invalid sighash types and accept valid ones Base58 ✓ should make an instance with "new" ✓ validates characters with no false negatives ✓ validates characters from buffer ✓ some characters are invalid (no false positives) ✓ should make an instance without "new" ✓ should allow this handy syntax #set ✓ should set a blank buffer @encode ✓ should encode the buffer accurately ✓ should throw an error when the Input is not a buffer @decode ✓ should decode this encoded value correctly ✓ should throw an error when Input is not a string #fromBuffer ✓ should not fail ✓ should set buffer #fromString ✓ should convert this known string to a buffer #toBuffer ✓ should return the buffer #toString ✓ should return the buffer Base58Check ✓ should make an instance with "new" ✓ can validate a serialized string ✓ should make an instance without "new" ✓ should allow this handy syntax #set ✓ should set a buf @encode ✓ should encode the buffer accurately ✓ should throw an error when the input is not a buffer @decode ✓ should decode this encoded value correctly ✓ should throw an error when input is not a string ✓ should throw an error when input is too short ✓ should throw an error when there is a checksum mismatch #fromBuffer ✓ should not fail ✓ should set buffer #fromString ✓ should convert this known string to a buffer #toBuffer ✓ should return the buffer #toString ✓ should return the buffer BufferReader ✓ should make a new BufferReader ✓ should create a new bufferreader with a buffer ✓ should fail for invalid object #set ✓ should set pos #eof ✓ should return true for a blank br read ✓ should return the same buffer ✓ should return a buffer of this length ✓ should work with 0 length readVarLengthBuffer ✓ returns correct buffer ✓ fails on length too big #readUInt8 ✓ should return 1 #readUInt16BE ✓ should return 1 #readUInt16LE ✓ should return 1 #readUInt32BE ✓ should return 1 #readUInt32LE ✓ should return 1 #readUInt64BEBN ✓ should return 1 ✓ should return 2^64 #readUInt64LEBN ✓ should return 1 ✓ should return 10BTC ✓ should return 2^30 ✓ should return 2^32 + 1 ✓ should return max number of satoshis ✓ should return 2^53 - 1 ✓ should return 2^53 ✓ should return 0 ✓ should return 2^64 #readVarintBuf ✓ should read a 1 byte varint ✓ should read a 3 byte varint ✓ should read a 5 byte varint ✓ should read a 9 byte varint #readVarintNum ✓ should read a 1 byte varint ✓ should read a 3 byte varint ✓ should read a 5 byte varint ✓ should throw an error on a 9 byte varint over the javascript uint precision limit ✓ should not throw an error on a 9 byte varint not over the javascript uint precision limit #readVarintBN ✓ should read a 1 byte varint ✓ should read a 3 byte varint ✓ should read a 5 byte varint ✓ should read a 9 byte varint #reverse ✓ should reverse this [0, 1] BufferWriter ✓ should create a new buffer writer #set ✓ set bufs #toBuffer ✓ should concat these two bufs #concat ✓ should concat these two bufs #write ✓ should write a buffer #writeUInt8 ✓ should write 1 #writeUInt16BE ✓ should write 1 #writeUInt16LE ✓ should write 1 #writeUInt32BE ✓ should write 1 #writeUInt32LE ✓ should write 1 #writeUInt64BEBN ✓ should write 1 #writeUInt64LEBN ✓ should write 1 #writeVarint ✓ should write a 1 byte varint ✓ should write a 3 byte varint ✓ should write a 5 byte varint ✓ should write a 9 byte varint ✓ should read back the same value it wrote for a 9 byte varint #writeVarintBN ✓ should write a 1 byte varint ✓ should write a 3 byte varint ✓ should write a 5 byte varint ✓ should write a 9 byte varint Varint ✓ should make a new varint #set ✓ should set a buffer #fromString ✓ should set a buffer #toString ✓ should return a buffer #fromBuffer ✓ should set a buffer #fromBufferReader ✓ should set a buffer reader #fromBN ✓ should set a number #fromNumber ✓ should set a number #toBuffer ✓ should return a buffer #toBN ✓ should return a buffer #toNumber ✓ should return a buffer GovObject GovObject - FromObject ✓ should cast a JSON Proposal into a Proposal Object ✓ should cast a stringified JSON Proposal into a Proposal Object ✓ should shallowCopy a govObject if passed as arg ✓ should create a govObject from a buffer ✓ should create a govObject from an Object ✓ should create a govObject from an hexa string ✓ should return an error is stringified JSON Proposal is not valid ✓ should return error if property type is not defined ✓ should return error if property type is bad typed ✓ should return error if govObject type is not handled ✓ should output null data-hex value by default ✓ should throw error when creating a bad new GovObject ✓ should serialize ✓ should be able to inspect a govObject Interpreter ✓ should make a new interp @castToBool ✓ should cast these bufs to bool correctly #verify ✓ should verify these trivial scripts ✓ should verify these simple transaction (125ms) bitcoind script evaluation fixtures ✓ should pass script_valid vector #1: DEPTH 0 EQUAL (Test the test: we should have an empty stack after scriptSig evaluation) ✓ should pass script_valid vector #2: DEPTH 0 EQUAL (and multiple spaces should not change that.) ✓ should pass script_valid vector #3: DEPTH 0 EQUAL ✓ should pass script_valid vector #4: DEPTH 0 EQUAL ✓ should pass script_valid vector #5: 1 2 2 EQUALVERIFY 1 EQUAL (Similarly whitespace around and between symbols) ✓ should pass script_valid vector #6: 1 2 2 EQUALVERIFY 1 EQUAL ✓ should pass script_valid vector #7: 1 2 2 EQUALVERIFY 1 EQUAL ✓ should pass script_valid vector #8: 1 2 2 EQUALVERIFY 1 EQUAL ✓ should pass script_valid vector #9: 1 2 2 EQUALVERIFY 1 EQUAL ✓ should pass script_valid vector #10: 1 ✓ should pass script_valid vector #11: 0x02 0x01 0x00 (all bytes are significant, not only the last one) ✓ should pass script_valid vector #12: 0x09 0x00000000 0x00000000 0x10 (equals zero when cast to Int64) ✓ should pass script_valid vector #13: 0x01 0x0b 11 EQUAL (push 1 byte) ✓ should pass script_valid vector #14: 0x02 0x417a 'Az' EQUAL ✓ should pass script_valid vector #15: 0x4b 0x417a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a 'Azzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz' EQUAL (push 75 bytes) ✓ should pass script_valid vector #16: 0x4c 0x01 0x07 7 EQUAL (0x4c is OP_PUSHDATA1) ✓ should pass script_valid vector #17: 0x4d 0x0100 0x08 8 EQUAL (0x4d is OP_PUSHDATA2) ✓ should pass script_valid vector #18: 0x4e 0x01000000 0x09 9 EQUAL (0x4e is OP_PUSHDATA4) ✓ should pass script_valid vector #19: 0x4c 0x00 0 EQUAL ✓ should pass script_valid vector #20: 0x4d 0x0000 0 EQUAL ✓ should pass script_valid vector #21: 0x4e 0x00000000 0 EQUAL ✓ should pass script_valid vector #22: 0x4f 1000 ADD 999 EQUAL ✓ should pass script_valid vector #23: 0 IF 0x50 ENDIF 1 (0x50 is reserved (ok if not executed)) ✓ should pass script_valid vector #24: 0x51 0x5f ADD 0x60 EQUAL (0x51 through 0x60 push 1 through 16 onto stack) ✓ should pass script_valid vector #25: 1 NOP ✓ should pass script_valid vector #26: 0 IF VER ELSE 1 ENDIF (VER non-functional (ok if not executed)) ✓ should pass script_valid vector #27: 0 IF RESERVED RESERVED1 RESERVED2 ELSE 1 ENDIF (RESERVED ok in un-executed IF) ✓ should pass script_valid vector #28: 1 DUP IF ENDIF ✓ should pass script_valid vector #29: 1 IF 1 ENDIF ✓ should pass script_valid vector #30: 1 DUP IF ELSE ENDIF ✓ should pass script_valid vector #31: 1 IF 1 ELSE ENDIF ✓ should pass script_valid vector #32: 0 IF ELSE 1 ENDIF ✓ should pass script_valid vector #33: 1 1 IF IF 1 ELSE 0 ENDIF ENDIF ✓ should pass script_valid vector #34: 1 0 IF IF 1 ELSE 0 ENDIF ENDIF ✓ should pass script_valid vector #35: 1 1 IF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF ✓ should pass script_valid vector #36: 0 0 IF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF ✓ should pass script_valid vector #37: 1 0 NOTIF IF 1 ELSE 0 ENDIF ENDIF ✓ should pass script_valid vector #38: 1 1 NOTIF IF 1 ELSE 0 ENDIF ENDIF ✓ should pass script_valid vector #39: 1 0 NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF ✓ should pass script_valid vector #40: 0 1 NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF ✓ should pass script_valid vector #41: 0 IF 0 ELSE 1 ELSE 0 ENDIF (Multiple ELSE's are valid and executed inverts on each ELSE encountered) ✓ should pass script_valid vector #42: 1 IF 1 ELSE 0 ELSE ENDIF ✓ should pass script_valid vector #43: 1 IF ELSE 0 ELSE 1 ENDIF ✓ should pass script_valid vector #44: 1 IF 1 ELSE 0 ELSE 1 ENDIF ADD 2 EQUAL ✓ should pass script_valid vector #45: '' 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 ✓ should pass script_valid vector #46: 1 NOTIF 0 ELSE 1 ELSE 0 ENDIF (Multiple ELSE's are valid and execution inverts on each ELSE encountered) ✓ should pass script_valid vector #47: 0 NOTIF 1 ELSE 0 ELSE ENDIF ✓ should pass script_valid vector #48: 0 NOTIF ELSE 0 ELSE 1 ENDIF ✓ should pass script_valid vector #49: 0 NOTIF 1 ELSE 0 ELSE 1 ENDIF ADD 2 EQUAL ✓ should pass script_valid vector #50: '' 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 ✓ should pass script_valid vector #51: 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 (Nested ELSE ELSE) ✓ should pass script_valid vector #52: 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 ✓ should pass script_valid vector #53: 0 IF RETURN ENDIF 1 (RETURN only works if executed) ✓ should pass script_valid vector #54: 1 1 VERIFY ✓ should pass script_valid vector #55: 1 0x05 0x01 0x00 0x00 0x00 0x00 VERIFY (values >4 bytes can be cast to boolean) ✓ should pass script_valid vector #56: 10 0 11 TOALTSTACK DROP FROMALTSTACK ADD 21 EQUAL ✓ should pass script_valid vector #57: 'gavin_was_here' TOALTSTACK 11 FROMALTSTACK 'gavin_was_here' EQUALVERIFY 11 EQUAL ✓ should pass script_valid vector #58: 0 IFDUP DEPTH 1 EQUALVERIFY 0 EQUAL ✓ should pass script_valid vector #59: 1 IFDUP DEPTH 2 EQUALVERIFY 1 EQUALVERIFY 1 EQUAL ✓ should pass script_valid vector #60: 0 DROP DEPTH 0 EQUAL ✓ should pass script_valid vector #61: 0 DUP 1 ADD 1 EQUALVERIFY 0 EQUAL ✓ should pass script_valid vector #62: 0 1 NIP ✓ should pass script_valid vector #63: 1 0 OVER DEPTH 3 EQUALVERIFY ✓ should pass script_valid vector #64: 22 21 20 0 PICK 20 EQUALVERIFY DEPTH 3 EQUAL ✓ should pass script_valid vector #65: 22 21 20 1 PICK 21 EQUALVERIFY DEPTH 3 EQUAL ✓ should pass script_valid vector #66: 22 21 20 2 PICK 22 EQUALVERIFY DEPTH 3 EQUAL ✓ should pass script_valid vector #67: 22 21 20 0 ROLL 20 EQUALVERIFY DEPTH 2 EQUAL ✓ should pass script_valid vector #68: 22 21 20 1 ROLL 21 EQUALVERIFY DEPTH 2 EQUAL ✓ should pass script_valid vector #69: 22 21 20 2 ROLL 22 EQUALVERIFY DEPTH 2 EQUAL ✓ should pass script_valid vector #70: 22 21 20 ROT 22 EQUAL ✓ should pass script_valid vector #71: 22 21 20 ROT DROP 20 EQUAL ✓ should pass script_valid vector #72: 22 21 20 ROT DROP DROP 21 EQUAL ✓ should pass script_valid vector #73: 22 21 20 ROT ROT 21 EQUAL ✓ should pass script_valid vector #74: 22 21 20 ROT ROT ROT 20 EQUAL ✓ should pass script_valid vector #75: 25 24 23 22 21 20 2ROT 24 EQUAL ✓ should pass script_valid vector #76: 25 24 23 22 21 20 2ROT DROP 25 EQUAL ✓ should pass script_valid vector #77: 25 24 23 22 21 20 2ROT 2DROP 20 EQUAL ✓ should pass script_valid vector #78: 25 24 23 22 21 20 2ROT 2DROP DROP 21 EQUAL ✓ should pass script_valid vector #79: 25 24 23 22 21 20 2ROT 2DROP 2DROP 22 EQUAL ✓ should pass script_valid vector #80: 25 24 23 22 21 20 2ROT 2DROP 2DROP DROP 23 EQUAL ✓ should pass script_valid vector #81: 25 24 23 22 21 20 2ROT 2ROT 22 EQUAL ✓ should pass script_valid vector #82: 25 24 23 22 21 20 2ROT 2ROT 2ROT 20 EQUAL ✓ should pass script_valid vector #83: 1 0 SWAP 1 EQUALVERIFY 0 EQUAL ✓ should pass script_valid vector #84: 0 1 TUCK DEPTH 3 EQUALVERIFY SWAP 2DROP ✓ should pass script_valid vector #85: 13 14 2DUP ROT EQUALVERIFY EQUAL ✓ should pass script_valid vector #86: -1 0 1 2 3DUP DEPTH 7 EQUALVERIFY ADD ADD 3 EQUALVERIFY 2DROP 0 EQUALVERIFY ✓ should pass script_valid vector #87: 1 2 3 5 2OVER ADD ADD 8 EQUALVERIFY ADD ADD 6 EQUAL ✓ should pass script_valid vector #88: 1 3 5 7 2SWAP ADD 4 EQUALVERIFY ADD 12 EQUAL ✓ should pass script_valid vector #89: 0 SIZE 0 EQUAL ✓ should pass script_valid vector #90: 1 SIZE 1 EQUAL ✓ should pass script_valid vector #91: 127 SIZE 1 EQUAL ✓ should pass script_valid vector #92: 128 SIZE 2 EQUAL ✓ should pass script_valid vector #93: 32767 SIZE 2 EQUAL ✓ should pass script_valid vector #94: 32768 SIZE 3 EQUAL ✓ should pass script_valid vector #95: 8388607 SIZE 3 EQUAL ✓ should pass script_valid vector #96: 8388608 SIZE 4 EQUAL ✓ should pass script_valid vector #97: 2147483647 SIZE 4 EQUAL ✓ should pass script_valid vector #98: 2147483648 SIZE 5 EQUAL ✓ should pass script_valid vector #99: 549755813887 SIZE 5 EQUAL ✓ should pass script_valid vector #100: 549755813888 SIZE 6 EQUAL ✓ should pass script_valid vector #101: 9223372036854775807 SIZE 8 EQUAL ✓ should pass script_valid vector #102: -1 SIZE 1 EQUAL ✓ should pass script_valid vector #103: -127 SIZE 1 EQUAL ✓ should pass script_valid vector #104: -128 SIZE 2 EQUAL ✓ should pass script_valid vector #105: -32767 SIZE 2 EQUAL ✓ should pass script_valid vector #106: -32768 SIZE 3 EQUAL ✓ should pass script_valid vector #107: -8388607 SIZE 3 EQUAL ✓ should pass script_valid vector #108: -8388608 SIZE 4 EQUAL ✓ should pass script_valid vector #109: -2147483647 SIZE 4 EQUAL ✓ should pass script_valid vector #110: -2147483648 SIZE 5 EQUAL ✓ should pass script_valid vector #111: -549755813887 SIZE 5 EQUAL ✓ should pass script_valid vector #112: -549755813888 SIZE 6 EQUAL ✓ should pass script_valid vector #113: -9223372036854775807 SIZE 8 EQUAL ✓ should pass script_valid vector #114: 'abcdefghijklmnopqrstuvwxyz' SIZE 26 EQUAL ✓ should pass script_valid vector #115: 42 SIZE 1 EQUALVERIFY 42 EQUAL (SIZE does not consume argument) ✓ should pass script_valid vector #116: 2 -2 ADD 0 EQUAL ✓ should pass script_valid vector #117: 2147483647 -2147483647 ADD 0 EQUAL ✓ should pass script_valid vector #118: -1 -1 ADD -2 EQUAL ✓ should pass script_valid vector #119: 0 0 EQUAL ✓ should pass script_valid vector #120: 1 1 ADD 2 EQUAL ✓ should pass script_valid vector #121: 1 1ADD 2 EQUAL ✓ should pass script_valid vector #122: 111 1SUB 110 EQUAL ✓ should pass script_valid vector #123: 111 1 ADD 12 SUB 100 EQUAL ✓ should pass script_valid vector #124: 0 ABS 0 EQUAL ✓ should pass script_valid vector #125: 16 ABS 16 EQUAL ✓ should pass script_valid vector #126: -16 ABS -16 NEGATE EQUAL ✓ should pass script_valid vector #127: 0 NOT NOP ✓ should pass script_valid vector #128: 1 NOT 0 EQUAL ✓ should pass script_valid vector #129: 11 NOT 0 EQUAL ✓ should pass script_valid vector #130: 0 0NOTEQUAL 0 EQUAL ✓ should pass script_valid vector #131: 1 0NOTEQUAL 1 EQUAL ✓ should pass script_valid vector #132: 111 0NOTEQUAL 1 EQUAL ✓ should pass script_valid vector #133: -111 0NOTEQUAL 1 EQUAL ✓ should pass script_valid vector #134: 1 1 BOOLAND NOP ✓ should pass script_valid vector #135: 1 0 BOOLAND NOT ✓ should pass script_valid vector #136: 0 1 BOOLAND NOT ✓ should pass script_valid vector #137: 0 0 BOOLAND NOT ✓ should pass script_valid vector #138: 16 17 BOOLAND NOP ✓ should pass script_valid vector #139: 1 1 BOOLOR NOP ✓ should pass script_valid vector #140: 1 0 BOOLOR NOP ✓ should pass script_valid vector #141: 0 1 BOOLOR NOP ✓ should pass script_valid vector #142: 0 0 BOOLOR NOT ✓ should pass script_valid vector #143: 16 17 BOOLOR NOP ✓ should pass script_valid vector #144: 11 10 1 ADD NUMEQUAL ✓ should pass script_valid vector #145: 11 10 1 ADD NUMEQUALVERIFY 1 ✓ should pass script_valid vector #146: 11 10 1 ADD NUMNOTEQUAL NOT ✓ should pass script_valid vector #147: 111 10 1 ADD NUMNOTEQUAL ✓ should pass script_valid vector #148: 11 10 LESSTHAN NOT ✓ should pass script_valid vector #149: 4 4 LESSTHAN NOT ✓ should pass script_valid vector #150: 10 11 LESSTHAN ✓ should pass script_valid vector #151: -11 11 LESSTHAN ✓ should pass script_valid vector #152: -11 -10 LESSTHAN ✓ should pass script_valid vector #153: 11 10 GREATERTHAN ✓ should pass script_valid vector #154: 4 4 GREATERTHAN NOT ✓ should pass script_valid vector #155: 10 11 GREATERTHAN NOT ✓ should pass script_valid vector #156: -11 11 GREATERTHAN NOT ✓ should pass script_valid vector #157: -11 -10 GREATERTHAN NOT ✓ should pass script_valid vector #158: 11 10 LESSTHANOREQUAL NOT ✓ should pass script_valid vector #159: 4 4 LESSTHANOREQUAL ✓ should pass script_valid vector #160: 10 11 LESSTHANOREQUAL ✓ should pass script_valid vector #161: -11 11 LESSTHANOREQUAL ✓ should pass script_valid vector #162: -11 -10 LESSTHANOREQUAL ✓ should pass script_valid vector #163: 11 10 GREATERTHANOREQUAL ✓ should pass script_valid vector #164: 4 4 GREATERTHANOREQUAL ✓ should pass script_valid vector #165: 10 11 GREATERTHANOREQUAL NOT ✓ should pass script_valid vector #166: -11 11 GREATERTHANOREQUAL NOT ✓ should pass script_valid vector #167: -11 -10 GREATERTHANOREQUAL NOT ✓ should pass script_valid vector #168: 1 0 MIN 0 NUMEQUAL ✓ should pass script_valid vector #169: 0 1 MIN 0 NUMEQUAL ✓ should pass script_valid vector #170: -1 0 MIN -1 NUMEQUAL ✓ should pass script_valid vector #171: 0 -2147483647 MIN -2147483647 NUMEQUAL ✓ should pass script_valid vector #172: 2147483647 0 MAX 2147483647 NUMEQUAL ✓ should pass script_valid vector #173: 0 100 MAX 100 NUMEQUAL ✓ should pass script_valid vector #174: -100 0 MAX 0 NUMEQUAL ✓ should pass script_valid vector #175: 0 -2147483647 MAX 0 NUMEQUAL ✓ should pass script_valid vector #176: 0 0 1 WITHIN ✓ should pass script_valid vector #177: 1 0 1 WITHIN NOT ✓ should pass script_valid vector #178: 0 -2147483647 2147483647 WITHIN ✓ should pass script_valid vector #179: -1 -100 100 WITHIN ✓ should pass script_valid vector #180: 11 -100 100 WITHIN ✓ should pass script_valid vector #181: -2147483647 -100 100 WITHIN NOT ✓ should pass script_valid vector #182: 2147483647 -100 100 WITHIN NOT ✓ should pass script_valid vector #183: 2147483647 2147483647 SUB 0 EQUAL ✓ should pass script_valid vector #184: 2147483647 DUP ADD 4294967294 EQUAL (>32 bit EQUAL is valid) ✓ should pass script_valid vector #185: 2147483647 NEGATE DUP ADD -4294967294 EQUAL ✓ should pass script_valid vector #186: '' RIPEMD160 0x14 0x9c1185a5c5e9fc54612808977ee8f548b2258d31 EQUAL ✓ should pass script_valid vector #187: 'a' RIPEMD160 0x14 0x0bdc9d2d256b3ee9daae347be6f4dc835a467ffe EQUAL ✓ should pass script_valid vector #188: 'abcdefghijklmnopqrstuvwxyz' RIPEMD160 0x14 0xf71c27109c692c1b56bbdceb5b9d2865b3708dbc EQUAL ✓ should pass script_valid vector #189: '' SHA1 0x14 0xda39a3ee5e6b4b0d3255bfef95601890afd80709 EQUAL ✓ should pass script_valid vector #190: 'a' SHA1 0x14 0x86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 EQUAL ✓ should pass script_valid vector #191: 'abcdefghijklmnopqrstuvwxyz' SHA1 0x14 0x32d10c7b8cf96570ca04ce37f2a19d84240d3a89 EQUAL ✓ should pass script_valid vector #192: '' SHA256 0x20 0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 EQUAL ✓ should pass script_valid vector #193: 'a' SHA256 0x20 0xca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb EQUAL ✓ should pass script_valid vector #194: 'abcdefghijklmnopqrstuvwxyz' SHA256 0x20 0x71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73 EQUAL ✓ should pass script_valid vector #195: '' DUP HASH160 SWAP SHA256 RIPEMD160 EQUAL ✓ should pass script_valid vector #196: '' DUP HASH256 SWAP SHA256 SHA256 EQUAL ✓ should pass script_valid vector #197: '' NOP HASH160 0x14 0xb472a266d0bd89c13706a4132ccfb16f7c3b9fcb EQUAL ✓ should pass script_valid vector #198: 'a' HASH160 NOP 0x14 0x994355199e516ff76c4fa4aab39337b9d84cf12b EQUAL ✓ should pass script_valid vector #199: 'abcdefghijklmnopqrstuvwxyz' HASH160 0x4c 0x14 0xc286a1af0947f58d1ad787385b1c2c4a976f9e71 EQUAL ✓ should pass script_valid vector #200: '' HASH256 0x20 0x5df6e0e2761359d30a8275058e299fcc0381534545f55cf43e41983f5d4c9456 EQUAL ✓ should pass script_valid vector #201: 'a' HASH256 0x20 0xbf5d3affb73efd2ec6c36ad3112dd933efed63c4e1cbffcfa88e2759c144f2d8 EQUAL ✓ should pass script_valid vector #202: 'abcdefghijklmnopqrstuvwxyz' HASH256 0x4c 0x20 0xca139bc10c2f660da42666f72e89a225936fc60f193c161124a672050c434671 EQUAL ✓ should pass script_valid vector #203: 1 NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 1 EQUAL ✓ should pass script_valid vector #204: 'NOP_1_to_10' NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 'NOP_1_to_10' EQUAL ✓ should pass script_valid vector #205: 1 NOP (Discourage NOPx flag allows OP_NOP) ✓ should pass script_valid vector #206: 0 IF NOP10 ENDIF 1 (Discouraged NOPs are allowed if not executed) ✓ should pass script_valid vector #207: 0 IF 0xba ELSE 1 ENDIF (opcodes above NOP10 invalid if executed) ✓ should pass script_valid vector #208: 0 IF 0xbb ELSE 1 ENDIF ✓ should pass script_valid vector #209: 0 IF 0xbc ELSE 1 ENDIF ✓ should pass script_valid vector #210: 0 IF 0xbd ELSE 1 ENDIF ✓ should pass script_valid vector #211: 0 IF 0xbe ELSE 1 ENDIF ✓ should pass script_valid vector #212: 0 IF 0xbf ELSE 1 ENDIF ✓ should pass script_valid vector #213: 0 IF 0xc0 ELSE 1 ENDIF ✓ should pass script_valid vector #214: 0 IF 0xc1 ELSE 1 ENDIF ✓ should pass script_valid vector #215: 0 IF 0xc2 ELSE 1 ENDIF ✓ should pass script_valid vector #216: 0 IF 0xc3 ELSE 1 ENDIF ✓ should pass script_valid vector #217: 0 IF 0xc4 ELSE 1 ENDIF ✓ should pass script_valid vector #218: 0 IF 0xc5 ELSE 1 ENDIF ✓ should pass script_valid vector #219: 0 IF 0xc6 ELSE 1 ENDIF ✓ should pass script_valid vector #220: 0 IF 0xc7 ELSE 1 ENDIF ✓ should pass script_valid vector #221: 0 IF 0xc8 ELSE 1 ENDIF ✓ should pass script_valid vector #222: 0 IF 0xc9 ELSE 1 ENDIF ✓ should pass script_valid vector #223: 0 IF 0xca ELSE 1 ENDIF ✓ should pass script_valid vector #224: 0 IF 0xcb ELSE 1 ENDIF ✓ should pass script_valid vector #225: 0 IF 0xcc ELSE 1 ENDIF ✓ should pass script_valid vector #226: 0 IF 0xcd ELSE 1 ENDIF ✓ should pass script_valid vector #227: 0 IF 0xce ELSE 1 ENDIF ✓ should pass script_valid vector #228: 0 IF 0xcf ELSE 1 ENDIF ✓ should pass script_valid vector #229: 0 IF 0xd0 ELSE 1 ENDIF ✓ should pass script_valid vector #230: 0 IF 0xd1 ELSE 1 ENDIF ✓ should pass script_valid vector #231: 0 IF 0xd2 ELSE 1 ENDIF ✓ should pass script_valid vector #232: 0 IF 0xd3 ELSE 1 ENDIF ✓ should pass script_valid vector #233: 0 IF 0xd4 ELSE 1 ENDIF ✓ should pass script_valid vector #234: 0 IF 0xd5 ELSE 1 ENDIF ✓ should pass script_valid vector #235: 0 IF 0xd6 ELSE 1 ENDIF ✓ should pass script_valid vector #236: 0 IF 0xd7 ELSE 1 ENDIF ✓ should pass script_valid vector #237: 0 IF 0xd8 ELSE 1 ENDIF ✓ should pass script_valid vector #238: 0 IF 0xd9 ELSE 1 ENDIF ✓ should pass script_valid vector #239: 0 IF 0xda ELSE 1 ENDIF ✓ should pass script_valid vector #240: 0 IF 0xdb ELSE 1 ENDIF ✓ should pass script_valid vector #241: 0 IF 0xdc ELSE 1 ENDIF ✓ should pass script_valid vector #242: 0 IF 0xdd ELSE 1 ENDIF ✓ should pass script_valid vector #243: 0 IF 0xde ELSE 1 ENDIF ✓ should pass script_valid vector #244: 0 IF 0xdf ELSE 1 ENDIF ✓ should pass script_valid vector #245: 0 IF 0xe0 ELSE 1 ENDIF ✓ should pass script_valid vector #246: 0 IF 0xe1 ELSE 1 ENDIF ✓ should pass script_valid vector #247: 0 IF 0xe2 ELSE 1 ENDIF ✓ should pass script_valid vector #248: 0 IF 0xe3 ELSE 1 ENDIF ✓ should pass script_valid vector #249: 0 IF 0xe4 ELSE 1 ENDIF ✓ should pass script_valid vector #250: 0 IF 0xe5 ELSE 1 ENDIF ✓ should pass script_valid vector #251: 0 IF 0xe6 ELSE 1 ENDIF ✓ should pass script_valid vector #252: 0 IF 0xe7 ELSE 1 ENDIF ✓ should pass script_valid vector #253: 0 IF 0xe8 ELSE 1 ENDIF ✓ should pass script_valid vector #254: 0 IF 0xe9 ELSE 1 ENDIF ✓ should pass script_valid vector #255: 0 IF 0xea ELSE 1 ENDIF ✓ should pass script_valid vector #256: 0 IF 0xeb ELSE 1 ENDIF ✓ should pass script_valid vector #257: 0 IF 0xec ELSE 1 ENDIF ✓ should pass script_valid vector #258: 0 IF 0xed ELSE 1 ENDIF ✓ should pass script_valid vector #259: 0 IF 0xee ELSE 1 ENDIF ✓ should pass script_valid vector #260: 0 IF 0xef ELSE 1 ENDIF ✓ should pass script_valid vector #261: 0 IF 0xf0 ELSE 1 ENDIF ✓ should pass script_valid vector #262: 0 IF 0xf1 ELSE 1 ENDIF ✓ should pass script_valid vector #263: 0 IF 0xf2 ELSE 1 ENDIF ✓ should pass script_valid vector #264: 0 IF 0xf3 ELSE 1 ENDIF ✓ should pass script_valid vector #265: 0 IF 0xf4 ELSE 1 ENDIF ✓ should pass script_valid vector #266: 0 IF 0xf5 ELSE 1 ENDIF ✓ should pass script_valid vector #267: 0 IF 0xf6 ELSE 1 ENDIF ✓ should pass script_valid vector #268: 0 IF 0xf7 ELSE 1 ENDIF ✓ should pass script_valid vector #269: 0 IF 0xf8 ELSE 1 ENDIF ✓ should pass script_valid vector #270: 0 IF 0xf9 ELSE 1 ENDIF ✓ should pass script_valid vector #271: 0 IF 0xfa ELSE 1 ENDIF ✓ should pass script_valid vector #272: 0 IF 0xfb ELSE 1 ENDIF ✓ should pass script_valid vector #273: 0 IF 0xfc ELSE 1 ENDIF ✓ should pass script_valid vector #274: 0 IF 0xfd ELSE 1 ENDIF ✓ should pass script_valid vector #275: 0 IF 0xfe ELSE 1 ENDIF ✓ should pass script_valid vector #276: 0 IF 0xff ELSE 1 ENDIF ✓ should pass script_valid vector #277: NOP 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' (520 byte push) ✓ should pass script_valid vector #278: 1 0x616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 (201 opcodes executed. 0x61 is NOP) ✓ should pass script_valid vector #279: 1 2 3 4 5 0x6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f 1 2 3 4 5 0x6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f (1,000 stack size (0x6f is 3DUP)) ✓ should pass script_valid vector #280: 1 TOALTSTACK 2 TOALTSTACK 3 4 5 0x6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f 1 2 3 4 5 6 7 0x6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f (1,000 stack size (altstack cleared between scriptSig/scriptPubKey)) ✓ should pass script_valid vector #281: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 0x6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 0x6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f 2DUP 0x616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 (Max-size (10,000-byte), max-push(520 bytes), max-opcodes(201), max stack size(1,000 items). 0x6f is 3DUP, 0x61 is NOP) ✓ should pass script_valid vector #282: 0 IF 0x5050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050 ENDIF 1 (>201 opcodes, but RESERVED (0x50) doesn't count towards opcode limit.) ✓ should pass script_valid vector #283: NOP 1 ✓ should pass script_valid vector #284: 1 0x01 0x01 EQUAL (The following is useful for checking implementations of BN_bn2mpi) ✓ should pass script_valid vector #285: 127 0x01 0x7F EQUAL ✓ should pass script_valid vector #286: 128 0x02 0x8000 EQUAL (Leave room for the sign bit) ✓ should pass script_valid vector #287: 32767 0x02 0xFF7F EQUAL ✓ should pass script_valid vector #288: 32768 0x03 0x008000 EQUAL ✓ should pass script_valid vector #289: 8388607 0x03 0xFFFF7F EQUAL ✓ should pass script_valid vector #290: 8388608 0x04 0x00008000 EQUAL ✓ should pass script_valid vector #291: 2147483647 0x04 0xFFFFFF7F EQUAL ✓ should pass script_valid vector #292: 2147483648 0x05 0x0000008000 EQUAL ✓ should pass script_valid vector #293: 549755813887 0x05 0xFFFFFFFF7F EQUAL ✓ should pass script_valid vector #294: 549755813888 0x06 0xFFFFFFFF7F EQUAL ✓ should pass script_valid vector #295: 9223372036854775807 0x08 0xFFFFFFFFFFFFFF7F EQUAL ✓ should pass script_valid vector #296: -1 0x01 0x81 EQUAL (Numbers are little-endian with the MSB being a sign bit) ✓ should pass script_valid vector #297: -127 0x01 0xFF EQUAL ✓ should pass script_valid vector #298: -128 0x02 0x8080 EQUAL ✓ should pass script_valid vector #299: -32767 0x02 0xFFFF EQUAL ✓ should pass script_valid vector #300: -32768 0x03 0x008080 EQUAL ✓ should pass script_valid vector #301: -8388607 0x03 0xFFFFFF EQUAL ✓ should pass script_valid vector #302: -8388608 0x04 0x00008080 EQUAL ✓ should pass script_valid vector #303: -2147483647 0x04 0xFFFFFFFF EQUAL ✓ should pass script_valid vector #304: -2147483648 0x05 0x0000008080 EQUAL ✓ should pass script_valid vector #305: -4294967295 0x05 0xFFFFFFFF80 EQUAL ✓ should pass script_valid vector #306: -549755813887 0x05 0xFFFFFFFFFF EQUAL ✓ should pass script_valid vector #307: -549755813888 0x06 0x000000008080 EQUAL ✓ should pass script_valid vector #308: -9223372036854775807 0x08 0xFFFFFFFFFFFFFFFF EQUAL ✓ should pass script_valid vector #309: 2147483647 1ADD 2147483648 EQUAL (We can do math on 4-byte integers, and compare 5-byte ones) ✓ should pass script_valid vector #310: 2147483647 1ADD 1 ✓ should pass script_valid vector #311: -2147483647 1ADD 1 ✓ should pass script_valid vector #312: 1 0x02 0x0100 EQUAL NOT (Not the same byte array...) ✓ should pass script_valid vector #313: 1 0x02 0x0100 NUMEQUAL (... but they are numerically equal) ✓ should pass script_valid vector #314: 11 0x4c 0x03 0x0b0000 NUMEQUAL ✓ should pass script_valid vector #315: 0 0x01 0x80 EQUAL NOT ✓ should pass script_valid vector #316: 0 0x01 0x80 NUMEQUAL (Zero numerically equals negative zero) ✓ should pass script_valid vector #317: 0 0x02 0x0080 NUMEQUAL ✓ should pass script_valid vector #318: 0x03 0x000080 0x04 0x00000080 NUMEQUAL ✓ should pass script_valid vector #319: 0x03 0x100080 0x04 0x10000080 NUMEQUAL ✓ should pass script_valid vector #320: 0x03 0x100000 0x04 0x10000000 NUMEQUAL ✓ should pass script_valid vector #321: NOP NOP 1 (The following tests check the if(stack.size() < N) tests in each opcode) ✓ should pass script_valid vector #322: 1 IF 1 ENDIF (They are here to catch copy-and-paste errors) ✓ should pass script_valid vector #323: 0 NOTIF 1 ENDIF (Most of them are duplicated elsewhere,) ✓ should pass script_valid vector #324: 1 VERIFY 1 (but, hey, more is always better, right?) ✓ should pass script_valid vector #325: 0 TOALTSTACK 1 ✓ should pass script_valid vector #326: 1 TOALTSTACK FROMALTSTACK ✓ should pass script_valid vector #327: 0 0 2DROP 1 ✓ should pass script_valid vector #328: 0 1 2DUP ✓ should pass script_valid vector #329: 0 0 1 3DUP ✓ should pass script_valid vector #330: 0 1 0 0 2OVER ✓ should pass script_valid vector #331: 0 1 0 0 0 0 2ROT ✓ should pass script_valid vector #332: 0 1 0 0 2SWAP ✓ should pass script_valid vector #333: 1 IFDUP ✓ should pass script_valid vector #334: NOP DEPTH 1 ✓ should pass script_valid vector #335: 0 DROP 1 ✓ should pass script_valid vector #336: 1 DUP ✓ should pass script_valid vector #337: 0 1 NIP ✓ should pass script_valid vector #338: 1 0 OVER ✓ should pass script_valid vector #339: 1 0 0 0 3 PICK ✓ should pass script_valid vector #340: 1 0 PICK ✓ should pass script_valid vector #341: 1 0 0 0 3 ROLL ✓ should pass script_valid vector #342: 1 0 ROLL ✓ should pass script_valid vector #343: 1 0 0 ROT ✓ should pass script_valid vector #344: 1 0 SWAP ✓ should pass script_valid vector #345: 0 1 TUCK ✓ should pass script_valid vector #346: 1 SIZE ✓ should pass script_valid vector #347: 0 0 EQUAL ✓ should pass script_valid vector #348: 0 0 EQUALVERIFY 1 ✓ should pass script_valid vector #349: 0 1ADD ✓ should pass script_valid vector #350: 2 1SUB ✓ should pass script_valid vector #351: -1 NEGATE ✓ should pass script_valid vector #352: -1 ABS ✓ should pass script_valid vector #353: 0 NOT ✓ should pass script_valid vector #354: -1 0NOTEQUAL ✓ should pass script_valid vector #355: 1 0 ADD ✓ should pass script_valid vector #356: 1 0 SUB ✓ should pass script_valid vector #357: -1 -1 BOOLAND ✓ should pass script_valid vector #358: -1 0 BOOLOR ✓ should pass script_valid vector #359: 0 0 NUMEQUAL ✓ should pass script_valid vector #360: 0 0 NUMEQUALVERIFY 1 ✓ should pass script_valid vector #361: -1 0 NUMNOTEQUAL ✓ should pass script_valid vector #362: -1 0 LESSTHAN ✓ should pass script_valid vector #363: 1 0 GREATERTHAN ✓ should pass script_valid vector #364: 0 0 LESSTHANOREQUAL ✓ should pass script_valid vector #365: 0 0 GREATERTHANOREQUAL ✓ should pass script_valid vector #366: -1 0 MIN ✓ should pass script_valid vector #367: 1 0 MAX ✓ should pass script_valid vector #368: -1 -1 0 WITHIN ✓ should pass script_valid vector #369: 0 RIPEMD160 ✓ should pass script_valid vector #370: 0 SHA1 ✓ should pass script_valid vector #371: 0 SHA256 ✓ should pass script_valid vector #372: 0 HASH160 ✓ should pass script_valid vector #373: 0 HASH256 ✓ should pass script_valid vector #374: NOP CODESEPARATOR 1 ✓ should pass script_valid vector #375: NOP NOP1 1 ✓ should pass script_valid vector #376: NOP NOP2 1 ✓ should pass script_valid vector #377: NOP NOP3 1 ✓ should pass script_valid vector #378: NOP NOP4 1 ✓ should pass script_valid vector #379: NOP NOP5 1 ✓ should pass script_valid vector #380: NOP NOP6 1 ✓ should pass script_valid vector #381: NOP NOP7 1 ✓ should pass script_valid vector #382: NOP NOP8 1 ✓ should pass script_valid vector #383: NOP NOP9 1 ✓ should pass script_valid vector #384: NOP NOP10 1 ✓ should pass script_valid vector #385: 0 0 0 CHECKMULTISIG VERIFY DEPTH 0 EQUAL (CHECKMULTISIG is allowed to have zero keys and/or sigs) ✓ should pass script_valid vector #386: 0 0 0 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #387: 0 0 0 1 CHECKMULTISIG VERIFY DEPTH 0 EQUAL (Zero sigs means no sigs are checked) ✓ should pass script_valid vector #388: 0 0 0 1 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #389: 0 0 0 CHECKMULTISIG VERIFY DEPTH 0 EQUAL (CHECKMULTISIG is allowed to have zero keys and/or sigs) ✓ should pass script_valid vector #390: 0 0 0 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #391: 0 0 0 1 CHECKMULTISIG VERIFY DEPTH 0 EQUAL (Zero sigs means no sigs are checked) ✓ should pass script_valid vector #392: 0 0 0 1 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #393: 0 0 'a' 'b' 2 CHECKMULTISIG VERIFY DEPTH 0 EQUAL (Test from up to 20 pubkeys, all not checked) ✓ should pass script_valid vector #394: 0 0 'a' 'b' 'c' 3 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #395: 0 0 'a' 'b' 'c' 'd' 4 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #396: 0 0 'a' 'b' 'c' 'd' 'e' 5 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #397: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 6 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #398: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 7 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #399: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 8 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #400: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 9 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #401: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 10 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #402: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 11 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #403: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 12 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #404: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 13 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #405: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 14 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #406: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 15 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #407: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 16 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #408: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 17 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #409: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 18 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #410: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 19 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #411: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG VERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #412: 0 0 'a' 1 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #413: 0 0 'a' 'b' 2 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #414: 0 0 'a' 'b' 'c' 3 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #415: 0 0 'a' 'b' 'c' 'd' 4 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #416: 0 0 'a' 'b' 'c' 'd' 'e' 5 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #417: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 6 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #418: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 7 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #419: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 8 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #420: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 9 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #421: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 10 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #422: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 11 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #423: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 12 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #424: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 13 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #425: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 14 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #426: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 15 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #427: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 16 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #428: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 17 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #429: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 18 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #430: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 19 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #431: 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY DEPTH 0 EQUAL ✓ should pass script_valid vector #432: 0 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG (nOpCount is incremented by the number of keys evaluated in addition to the usual one op per op. In this case we have zero keys, so we can execute 201 CHECKMULTISIGS) ✓ should pass script_valid vector #433: 1 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY 0 0 0 CHECKMULTISIGVERIFY ✓ should pass script_valid vector #434: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG (Even though there are no signatures being checked nOpCount is incremented by the number of keys.) ✓ should pass script_valid vector #435: 1 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY ✓ should pass script_valid vector #436: 0 0x01 1 HASH160 0x14 0xda1745e9b549bd0bfa1a569971c77eba30cd5a4b EQUAL (Very basic P2SH) ✓ should pass script_valid vector #437: 0x4c 0 0x01 1 HASH160 0x14 0xda1745e9b549bd0bfa1a569971c77eba30cd5a4b EQUAL ✓ should pass script_valid vector #438: 0x40 0x42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242 0x4d 0x4000 0x42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242 EQUAL (Basic PUSH signedness check) ✓ should pass script_valid vector #439: 0x4c 0x40 0x42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242 0x4d 0x4000 0x42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242 EQUAL (Basic PUSHDATA1 signedness check) ✓ should pass script_valid vector #440: 0x4c 0x4b 0x111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0x4b 0x111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 EQUAL (PUSHDATA1 of 75 bytes equals direct push of it) ✓ should pass script_valid vector #441: 0x4d 0xFF00 0x111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0x4c 0xFF 0x111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 EQUAL (PUSHDATA2 of 255 bytes equals PUSHDATA1 of it) ✓ should pass script_valid vector #442: 0x00 SIZE 0 EQUAL (Basic OP_0 execution) ✓ should pass script_valid vector #443: 0x01 0x81 0x4f EQUAL (OP1_NEGATE pushes 0x81) ✓ should pass script_valid vector #444: 0x01 0x01 0x51 EQUAL (OP_1 pushes 0x01) ✓ should pass script_valid vector #445: 0x01 0x02 0x52 EQUAL (OP_2 pushes 0x02) ✓ should pass script_valid vector #446: 0x01 0x03 0x53 EQUAL (OP_3 pushes 0x03) ✓ should pass script_valid vector #447: 0x01 0x04 0x54 EQUAL (OP_4 pushes 0x04) ✓ should pass script_valid vector #448: 0x01 0x05 0x55 EQUAL (OP_5 pushes 0x05) ✓ should pass script_valid vector #449: 0x01 0x06 0x56 EQUAL (OP_6 pushes 0x06) ✓ should pass script_valid vector #450: 0x01 0x07 0x57 EQUAL (OP_7 pushes 0x07) ✓ should pass script_valid vector #451: 0x01 0x08 0x58 EQUAL (OP_8 pushes 0x08) ✓ should pass script_valid vector #452: 0x01 0x09 0x59 EQUAL (OP_9 pushes 0x09) ✓ should pass script_valid vector #453: 0x01 0x0a 0x5a EQUAL (OP_10 pushes 0x0a) ✓ should pass script_valid vector #454: 0x01 0x0b 0x5b EQUAL (OP_11 pushes 0x0b) ✓ should pass script_valid vector #455: 0x01 0x0c 0x5c EQUAL (OP_12 pushes 0x0c) ✓ should pass script_valid vector #456: 0x01 0x0d 0x5d EQUAL (OP_13 pushes 0x0d) ✓ should pass script_valid vector #457: 0x01 0x0e 0x5e EQUAL (OP_14 pushes 0x0e) ✓ should pass script_valid vector #458: 0x01 0x0f 0x5f EQUAL (OP_15 pushes 0x0f) ✓ should pass script_valid vector #459: 0x01 0x10 0x60 EQUAL (OP_16 pushes 0x10) ✓ should pass script_valid vector #460: 0x02 0x8000 128 NUMEQUAL (0x8000 equals 128) ✓ should pass script_valid vector #461: 0x01 0x00 0 NUMEQUAL (0x00 numequals 0) ✓ should pass script_valid vector #462: 0x01 0x80 0 NUMEQUAL (0x80 (negative zero) numequals 0) ✓ should pass script_valid vector #463: 0x02 0x0080 0 NUMEQUAL (0x0080 numequals 0) ✓ should pass script_valid vector #464: 0x02 0x0500 5 NUMEQUAL (0x0500 numequals 5) ✓ should pass script_valid vector #465: 0x03 0xff7f80 0x02 0xffff NUMEQUAL ✓ should pass script_valid vector #466: 0x03 0xff7f00 0x02 0xff7f NUMEQUAL ✓ should pass script_valid vector #467: 0x04 0xffff7f80 0x03 0xffffff NUMEQUAL ✓ should pass script_valid vector #468: 0x04 0xffff7f00 0x03 0xffff7f NUMEQUAL ✓ should pass script_valid vector #469: 0 IF 0x4c 0x00 ENDIF 1 (non-minimal PUSHDATA1 ignored) ✓ should pass script_valid vector #470: 0 IF 0x4d 0x0000 ENDIF 1 (non-minimal PUSHDATA2 ignored) ✓ should pass script_valid vector #471: 0 IF 0x4c 0x00000000 ENDIF 1 (non-minimal PUSHDATA4 ignored) ✓ should pass script_valid vector #472: 0 IF 0x01 0x81 ENDIF 1 (1NEGATE equiv) ✓ should pass script_valid vector #473: 0 IF 0x01 0x01 ENDIF 1 (OP_1 equiv) ✓ should pass script_valid vector #474: 0 IF 0x01 0x02 ENDIF 1 (OP_2 equiv) ✓ should pass script_valid vector #475: 0 IF 0x01 0x03 ENDIF 1 (OP_3 equiv) ✓ should pass script_valid vector #476: 0 IF 0x01 0x04 ENDIF 1 (OP_4 equiv) ✓ should pass script_valid vector #477: 0 IF 0x01 0x05 ENDIF 1 (OP_5 equiv) ✓ should pass script_valid vector #478: 0 IF 0x01 0x06 ENDIF 1 (OP_6 equiv) ✓ should pass script_valid vector #479: 0 IF 0x01 0x07 ENDIF 1 (OP_7 equiv) ✓ should pass script_valid vector #480: 0 IF 0x01 0x08 ENDIF 1 (OP_8 equiv) ✓ should pass script_valid vector #481: 0 IF 0x01 0x09 ENDIF 1 (OP_9 equiv) ✓ should pass script_valid vector #482: 0 IF 0x01 0x0a ENDIF 1 (OP_10 equiv) ✓ should pass script_valid vector #483: 0 IF 0x01 0x0b ENDIF 1 (OP_11 equiv) ✓ should pass script_valid vector #484: 0 IF 0x01 0x0c ENDIF 1 (OP_12 equiv) ✓ should pass script_valid vector #485: 0 IF 0x01 0x0d ENDIF 1 (OP_13 equiv) ✓ should pass script_valid vector #486: 0 IF 0x01 0x0e ENDIF 1 (OP_14 equiv) ✓ should pass script_valid vector #487: 0 IF 0x01 0x0f ENDIF 1 (OP_15 equiv) ✓ should pass script_valid vector #488: 0 IF 0x01 0x10 ENDIF 1 (OP_16 equiv) ✓ should pass script_valid vector #489: 0x01 0x00 1 ✓ should pass script_valid vector #490: 0x01 0x80 1 ✓ should pass script_valid vector #491: 0x02 0x0180 1 ✓ should pass script_valid vector #492: 0x02 0x0100 1 ✓ should pass script_valid vector #493: 0x02 0x0200 1 ✓ should pass script_valid vector #494: 0x02 0x0300 1 ✓ should pass script_valid vector #495: 0x02 0x0400 1 ✓ should pass script_valid vector #496: 0x02 0x0500 1 ✓ should pass script_valid vector #497: 0x02 0x0600 1 ✓ should pass script_valid vector #498: 0x02 0x0700 1 ✓ should pass script_valid vector #499: 0x02 0x0800 1 ✓ should pass script_valid vector #500: 0x02 0x0900 1 ✓ should pass script_valid vector #501: 0x02 0x0a00 1 ✓ should pass script_valid vector #502: 0x02 0x0b00 1 ✓ should pass script_valid vector #503: 0x02 0x0c00 1 ✓ should pass script_valid vector #504: 0x02 0x0d00 1 ✓ should pass script_valid vector #505: 0x02 0x0e00 1 ✓ should pass script_valid vector #506: 0x02 0x0f00 1 ✓ should pass script_valid vector #507: 0x02 0x1000 1 ✓ should pass script_valid vector #508: 1 0x02 0x0000 PICK DROP ✓ should pass script_valid vector #509: 1 0x02 0x0000 ROLL DROP 1 ✓ should pass script_valid vector #510: 0x02 0x0000 1ADD DROP 1 ✓ should pass script_valid vector #511: 0x02 0x0000 1SUB DROP 1 ✓ should pass script_valid vector #512: 0x02 0x0000 NEGATE DROP 1 ✓ should pass script_valid vector #513: 0x02 0x0000 ABS DROP 1 ✓ should pass script_valid vector #514: 0x02 0x0000 NOT DROP 1 ✓ should pass script_valid vector #515: 0x02 0x0000 0NOTEQUAL DROP 1 ✓ should pass script_valid vector #516: 0 0x02 0x0000 ADD DROP 1 ✓ should pass script_valid vector #517: 0x02 0x0000 0 ADD DROP 1 ✓ should pass script_valid vector #518: 0 0x02 0x0000 SUB DROP 1 ✓ should pass script_valid vector #519: 0x02 0x0000 0 SUB DROP 1 ✓ should pass script_valid vector #520: 0 0x02 0x0000 BOOLAND DROP 1 ✓ should pass script_valid vector #521: 0x02 0x0000 0 BOOLAND DROP 1 ✓ should pass script_valid vector #522: 0 0x02 0x0000 BOOLOR DROP 1 ✓ should pass script_valid vector #523: 0x02 0x0000 0 BOOLOR DROP 1 ✓ should pass script_valid vector #524: 0 0x02 0x0000 NUMEQUAL DROP 1 ✓ should pass script_valid vector #525: 0x02 0x0000 1 NUMEQUAL DROP 1 ✓ should pass script_valid vector #526: 0 0x02 0x0000 NUMEQUALVERIFY 1 ✓ should pass script_valid vector #527: 0x02 0x0000 0 NUMEQUALVERIFY 1 ✓ should pass script_valid vector #528: 0 0x02 0x0000 NUMNOTEQUAL DROP 1 ✓ should pass script_valid vector #529: 0x02 0x0000 0 NUMNOTEQUAL DROP 1 ✓ should pass script_valid vector #530: 0 0x02 0x0000 LESSTHAN DROP 1 ✓ should pass script_valid vector #531: 0x02 0x0000 0 LESSTHAN DROP 1 ✓ should pass script_valid vector #532: 0 0x02 0x0000 GREATERTHAN DROP 1 ✓ should pass script_valid vector #533: 0x02 0x0000 0 GREATERTHAN DROP 1 ✓ should pass script_valid vector #534: 0 0x02 0x0000 LESSTHANOREQUAL DROP 1 ✓ should pass script_valid vector #535: 0x02 0x0000 0 LESSTHANOREQUAL DROP 1 ✓ should pass script_valid vector #536: 0 0x02 0x0000 GREATERTHANOREQUAL DROP 1 ✓ should pass script_valid vector #537: 0x02 0x0000 0 GREATERTHANOREQUAL DROP 1 ✓ should pass script_valid vector #538: 0 0x02 0x0000 MIN DROP 1 ✓ should pass script_valid vector #539: 0x02 0x0000 0 MIN DROP 1 ✓ should pass script_valid vector #540: 0 0x02 0x0000 MAX DROP 1 ✓ should pass script_valid vector #541: 0x02 0x0000 0 MAX DROP 1 ✓ should pass script_valid vector #542: 0x02 0x0000 0 0 WITHIN DROP 1 ✓ should pass script_valid vector #543: 0 0x02 0x0000 0 WITHIN DROP 1 ✓ should pass script_valid vector #544: 0 0 0x02 0x0000 WITHIN DROP 1 ✓ should pass script_valid vector #545: 0 0 0x02 0x0000 CHECKMULTISIG DROP 1 ✓ should pass script_valid vector #546: 0 0x02 0x0000 0 CHECKMULTISIG DROP 1 ✓ should pass script_valid vector #547: 0 0x02 0x0000 0 1 CHECKMULTISIG DROP 1 ✓ should pass script_valid vector #548: 0 0 0x02 0x0000 CHECKMULTISIGVERIFY 1 ✓ should pass script_valid vector #549: 0 0x02 0x0000 0 CHECKMULTISIGVERIFY 1 ✓ should pass script_valid vector #550: 0 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501 2 0 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 2 CHECKMULTISIG NOT (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.) (66ms) ✓ should pass script_valid vector #551: 0 0 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501 2 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 2 CHECKMULTISIG NOT (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.) (66ms) ✓ should pass script_valid vector #552: 0x47 0x3044022053205076a7bb13d2db3162a2d97d8197631f829b065948b7019b15482af819a902204328dcc02c994ca086b1226d0d5f1674d23cfae0d846143df812b81cab3391e801 0x41 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG (P2PK) (39ms) ✓ should pass script_valid vector #553: 0x47 0x304402206e05a6fe23c59196ffe176c9ddc31e73a9885638f9d1328d47c0c703863b8876022076feb53811aa5b04e0e79f938eb19906cc5e67548bc555a8e8b8b0fc603d840c01 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 DUP HASH160 0x14 0x1018853670f9f3b0582c5b9ee8ce93764ac32b93 EQUALVERIFY CHECKSIG (P2PKH) (46ms) ✓ should pass script_valid vector #554: 0x47 0x304402204710a85181663b32d25c70ec2bbd14adff5ddfff6cb50d09e155ef5f541fc86c0220056b0cc949be9386ecc5f6c2ac0493269031dbb185781db90171b54ac127790281 0x41 0x048282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f5150811f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf CHECKSIG (P2PK anyonecanpay) (39ms) ✓ should pass script_valid vector #555: 0x47 0x304402202166fcd5e607de452d3c6f15e059505cf21654346592f9650ba906b9e8be88fa022005d976d28eb8de477102feba28807b3ad361e7fa24796d259c9d61452f7c318c01 0x23 0x210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac HASH160 0x14 0x23b0ad3477f2178bc0b3eed26e4e6316f4e83aa1 EQUAL (P2SH(P2PK)) (44ms) ✓ should pass script_valid vector #556: 0x47 0x3044022064cc90ca89ad721384b231653b945579359a24b928ef8539b331172628c9cc6102203e238869ab5dac3fc293db53c12e7dd3079e86cfde9024b689efc7227e4d671001 0x19 0x76a9147cf9c846cd4882efec4bf07e44ebdad495c94f4b88ac HASH160 0x14 0x2df519943d5acc0ef5222091f9dfe3543f489a82 EQUAL (P2SH(P2PKH), bad sig but no VERIFY_P2SH) ✓ should pass script_valid vector #557: 0 0x47 0x3044022051254b9fb476a52d85530792b578f86fea70ec1ffb4393e661bcccb23d8d63d3022076505f94a403c86097841944e044c70c2045ce90e36de51f7e9d3828db98a07501 0x47 0x304402206d32e6d6b131ef2fe77b6a9b90b120d74e3e238e79dcffb10523a6ec94f93d65022067ae8772632ddf4c389258c6b70ed0ff94f20ee8f60207aa192a52a2469cddd901 0x47 0x304402200955d031fff71d8653221e85e36c3c85533d2312fc3045314b19650b7ae2f81002202a6bb8505e36201909d0921f01abff390ae6b7ff97bbf959f98aedeb0a56730901 3 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 3 CHECKMULTISIG (3-of-3) (135ms) ✓ should pass script_valid vector #558: 0 0x47 0x304402205b7d2c2f177ae76cfbbf14d589c113b0b35db753d305d5562dd0b61cbf366cfb02202e56f93c4f08a27f986cd424ffc48a462c3202c4902104d4d0ff98ed28f4bf8001 0x47 0x304402204511cf05e85c2be07c6c176c5338a08ed3cb34212667f39613340881169986c002207cc48b27aa3691a20706a5773ec9923cadd20fedffd00c24457d85f83f0b51fe01 0x4c69 0x52210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f8179821038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f515082103363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff464053ae HASH160 0x14 0xc9e4a896d149702d0d1695434feddd52e24ad78d EQUAL (P2SH(2-of-3)) (88ms) ✓ should pass script_valid vector #559: 0x47 0x30440220001d6702bfa4f49c3a2542af9b1c2844a2eaac55f86f310f42d26a5dd17d6a8002202cdadbe608c00b50dd951c6ba0877d5b07a970f3e265c18697bc413a0a86f69901 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKSIG (P2PK with too much R padding but no DERSIG) (46ms) ✓ should pass script_valid vector #560: 0x48 0x304502207d2b258e959605e2ea50b46fea1325b7391ffb0c14a5b58ef8ad3851da3644380221007e75136df5f2e38216c4338b31c97e8307102edb97d611e06914e1f8fba68ead01 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKSIG (P2PK with too much S padding but no DERSIG) (46ms) ✓ should pass script_valid vector #561: 0x47 0x30440220d7a0417c3f6d1a15094d1cf2a3378ca0503eb8a57630953a9e2987e21ddd0a6502207a6266d686c99090920249991d3d42065b6d43eb70187b219c0db82e4f94d1a201 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKSIG (P2PK with too little R padding but no DERSIG) (44ms) ✓ should pass script_valid vector #562: 0x47 0x30440220003040725f724b0e2142fc44ac71f6e13161f6410aeb6dee477952ede3b6a6ca022041ff4940ee3d88116ad281d7cc556e1f2c9427d82290bd7974a25addbcd5bede01 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 CHECKSIG NOT (P2PK NOT with bad sig with too much R padding but no DERSIG) (44ms) ✓ should pass script_valid vector #563: 0x49 0x304502203e4516da7253cf068effec6b95c41221c0cf3a8e6ccb8cbf1725b562e9afde2c022100ab1e3da73d67e32045a20e0b999e049978ea8d6ee5480d485fcf2ce0d03b2ef05101 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 CHECKSIG (P2PK with high S but no LOW_S) (44ms) ✓ should pass script_valid vector #564: 0x47 0x30440220745d63eb70d45652128b450aa5ca7d9b513439963f261cb1c40a60f0785e7ee402204877785b38945ca9dbec78e1c1d4dd12148cc25c868bd27480023b49ae0f310501 0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG (P2PK with hybrid pubkey but no STRICTENC) (39ms) ✓ should pass script_valid vector #565: 0x47 0x30440220606f6f9f6cebc84ebfb6a4bff0b682bd99f05511295545ce9b275e98be3c946102206871d6a76f4e1b43d9763cfc5647844e4811682b1cab0325f060f44ddf44002201 0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG NOT (P2PK NOT with invalid hybrid pubkey but no STRICTENC) ✓ should pass script_valid vector #566: 0 0x47 0x304402203a5ee39032637c431af0a3ac42e32e0627390bd44f6f98c9c04e6d714635ad0202207b42fcd889c3ae8a1b515608f38535f1f9be815176ee8d1b65a27c767cf37aed01 1 0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 2 CHECKMULTISIG (1-of-2 with the second 1 hybrid pubkey and no STRICTENC) (43ms) ✓ should pass script_valid vector #567: 0 0x47 0x304402203a5ee39032637c431af0a3ac42e32e0627390bd44f6f98c9c04e6d714635ad0202207b42fcd889c3ae8a1b515608f38535f1f9be815176ee8d1b65a27c767cf37aed01 1 0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 2 CHECKMULTISIG (1-of-2 with the second 1 hybrid pubkey) (60ms) ✓ should pass script_valid vector #568: 0x47 0x304402201c215cb13e4954e60ce4f6de74941904c771f998de7b1d9627e82a1949fde517022031c2197455f3dbecbb78321201308d7b039424e38d480772d7cd4eb465a083f405 0x41 0x048282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f5150811f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf CHECKSIG (P2PK with undefined hashtype but no STRICTENC) (39ms) ✓ should pass script_valid vector #569: 0x47 0x304402207409b5b320296e5e2136a7b281a7f803028ca4ca44e2b83eebd46932677725de02202d4eea1c8d3c98e6f42614f54764e6e5e6542e213eb4d079737e9a8b6e9812ec05 0x41 0x048282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f5150811f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf CHECKSIG NOT (P2PK NOT with invalid sig and undefined hashtype but no STRICTENC) ✓ should pass script_valid vector #570: 1 0x47 0x3044022051254b9fb476a52d85530792b578f86fea70ec1ffb4393e661bcccb23d8d63d3022076505f94a403c86097841944e044c70c2045ce90e36de51f7e9d3828db98a07501 0x47 0x304402206d32e6d6b131ef2fe77b6a9b90b120d74e3e238e79dcffb10523a6ec94f93d65022067ae8772632ddf4c389258c6b70ed0ff94f20ee8f60207aa192a52a2469cddd901 0x47 0x304402200955d031fff71d8653221e85e36c3c85533d2312fc3045314b19650b7ae2f81002202a6bb8505e36201909d0921f01abff390ae6b7ff97bbf959f98aedeb0a56730901 3 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 3 CHECKMULTISIG (3-of-3 with nonzero dummy but no NULLDUMMY) (131ms) ✓ should pass script_valid vector #571: 1 0x47 0x304402201bb2edab700a5d020236df174fefed78087697143731f659bea59642c759c16d022061f42cdbae5bcd3e8790f20bf76687443436e94a634321c16a72aa54cbc7c2ea01 0x47 0x304402204bb4a64f2a6e5c7fb2f07fef85ee56fde5e6da234c6a984262307a20e99842d702206f8303aaba5e625d223897e2ffd3f88ef1bcffef55f38dc3768e5f2e94c923f901 0x47 0x3044022040c2809b71fffb155ec8b82fe7a27f666bd97f941207be4e14ade85a1249dd4d02204d56c85ec525dd18e29a0533d5ddf61b6b1bb32980c2f63edf951aebf7a27bfe01 3 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 3 CHECKMULTISIG NOT (3-of-3 NOT with invalid sig and nonzero dummy but no NULLDUMMY) (46ms) ✓ should pass script_valid vector #572: 0 0x47 0x304402206cb053202e1501e6faa24e6e309bf46a2f9255aa9484ff4a26efb7434f78a58a0220132b10419c3b99601f154bf86cf12259aacd8c6f363a73dacb1d0b941680bb4c01 DUP 2 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 2 CHECKMULTISIG (2-of-2 with two identical keys and sigs pushed using OP_DUP but no SIGPUSHONLY) (89ms) ✓ should pass script_valid vector #573: 0 0x47 0x304402206cb053202e1501e6faa24e6e309bf46a2f9255aa9484ff4a26efb7434f78a58a0220132b10419c3b99601f154bf86cf12259aacd8c6f363a73dacb1d0b941680bb4c01 0x47 0x304402206cb053202e1501e6faa24e6e309bf46a2f9255aa9484ff4a26efb7434f78a58a0220132b10419c3b99601f154bf86cf12259aacd8c6f363a73dacb1d0b941680bb4c01 2 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 2 CHECKMULTISIG (2-of-2 with two identical keys and sigs pushed) (89ms) ✓ should pass script_invalid vector #1: DEPTH (Test the test: we should have an empty stack after scriptSig evaluation) ✓ should pass script_invalid vector #2: DEPTH (and multiple spaces should not change that.) ✓ should pass script_invalid vector #3: DEPTH ✓ should pass script_invalid vector #4: DEPTH ✓ should pass script_invalid vector #5: ✓ should pass script_invalid vector #6: NOP ✓ should pass script_invalid vector #7: NOP DEPTH ✓ should pass script_invalid vector #8: NOP ✓ should pass script_invalid vector #9: NOP DEPTH ✓ should pass script_invalid vector #10: NOP NOP ✓ should pass script_invalid vector #11: NOP NOP DEPTH ✓ should pass script_invalid vector #12: DEPTH ✓ should pass script_invalid vector #13: 0x4c01 0x01 NOP (PUSHDATA1 with not enough bytes) ✓ should pass script_invalid vector #14: 0x4d0200ff 0x01 NOP (PUSHDATA2 with not enough bytes) ✓ should pass script_invalid vector #15: 0x4e03000000ffff 0x01 NOP (PUSHDATA4 with not enough bytes) ✓ should pass script_invalid vector #16: 1 IF 0x50 ENDIF 1 (0x50 is reserved) ✓ should pass script_invalid vector #17: 0x52 0x5f ADD 0x60 EQUAL (0x51 through 0x60 push 1 through 16 onto stack) ✓ should pass script_invalid vector #18: 0 NOP ✓ should pass script_invalid vector #19: 1 IF VER ELSE 1 ENDIF (VER non-functional) ✓ should pass script_invalid vector #20: 0 IF VERIF ELSE 1 ENDIF (VERIF illegal everywhere) ✓ should pass script_invalid vector #21: 0 IF ELSE 1 ELSE VERIF ENDIF (VERIF illegal everywhere) ✓ should pass script_invalid vector #22: 0 IF VERNOTIF ELSE 1 ENDIF (VERNOTIF illegal everywhere) ✓ should pass script_invalid vector #23: 0 IF ELSE 1 ELSE VERNOTIF ENDIF (VERNOTIF illegal everywhere) ✓ should pass script_invalid vector #24: 1 IF 1 ENDIF (IF/ENDIF can't span scriptSig/scriptPubKey) ✓ should pass script_invalid vector #25: 1 IF 0 ENDIF 1 ENDIF ✓ should pass script_invalid vector #26: 1 ELSE 0 ENDIF 1 ✓ should pass script_invalid vector #27: 0 NOTIF 123 ✓ should pass script_invalid vector #28: 0 DUP IF ENDIF ✓ should pass script_invalid vector #29: 0 IF 1 ENDIF ✓ should pass script_invalid vector #30: 0 DUP IF ELSE ENDIF ✓ should pass script_invalid vector #31: 0 IF 1 ELSE ENDIF ✓ should pass script_invalid vector #32: 0 NOTIF ELSE 1 ENDIF ✓ should pass script_invalid vector #33: 0 1 IF IF 1 ELSE 0 ENDIF ENDIF ✓ should pass script_invalid vector #34: 0 0 IF IF 1 ELSE 0 ENDIF ENDIF ✓ should pass script_invalid vector #35: 1 0 IF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF ✓ should pass script_invalid vector #36: 0 1 IF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF ✓ should pass script_invalid vector #37: 0 0 NOTIF IF 1 ELSE 0 ENDIF ENDIF ✓ should pass script_invalid vector #38: 0 1 NOTIF IF 1 ELSE 0 ENDIF ENDIF ✓ should pass script_invalid vector #39: 1 1 NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF ✓ should pass script_invalid vector #40: 0 0 NOTIF IF 1 ELSE 0 ENDIF ELSE IF 0 ELSE 1 ENDIF ENDIF ✓ should pass script_invalid vector #41: 1 IF RETURN ELSE ELSE 1 ENDIF (Multiple ELSEs) ✓ should pass script_invalid vector #42: 1 IF 1 ELSE ELSE RETURN ENDIF ✓ should pass script_invalid vector #43: 1 ENDIF (Malformed IF/ELSE/ENDIF sequence) ✓ should pass script_invalid vector #44: 1 ELSE ENDIF ✓ should pass script_invalid vector #45: 1 ENDIF ELSE ✓ should pass script_invalid vector #46: 1 ENDIF ELSE IF ✓ should pass script_invalid vector #47: 1 IF ELSE ENDIF ELSE ✓ should pass script_invalid vector #48: 1 IF ELSE ENDIF ELSE ENDIF ✓ should pass script_invalid vector #49: 1 IF ENDIF ENDIF ✓ should pass script_invalid vector #50: 1 IF ELSE ELSE ENDIF ENDIF ✓ should pass script_invalid vector #51: 1 RETURN ✓ should pass script_invalid vector #52: 1 DUP IF RETURN ENDIF ✓ should pass script_invalid vector #53: 1 RETURN 'data' (canonical prunable txout format) ✓ should pass script_invalid vector #54: 0 IF RETURN ENDIF 1 (still prunable because IF/ENDIF can't span scriptSig/scriptPubKey) ✓ should pass script_invalid vector #55: 0 VERIFY 1 ✓ should pass script_invalid vector #56: 1 VERIFY ✓ should pass script_invalid vector #57: 1 VERIFY 0 ✓ should pass script_invalid vector #58: 1 TOALTSTACK FROMALTSTACK 1 (alt stack not shared between sig/pubkey) ✓ should pass script_invalid vector #59: IFDUP DEPTH 0 EQUAL ✓ should pass script_invalid vector #60: DROP DEPTH 0 EQUAL ✓ should pass script_invalid vector #61: DUP DEPTH 0 EQUAL ✓ should pass script_invalid vector #62: 1 DUP 1 ADD 2 EQUALVERIFY 0 EQUAL ✓ should pass script_invalid vector #63: NOP NIP ✓ should pass script_invalid vector #64: NOP 1 NIP ✓ should pass script_invalid vector #65: NOP 1 0 NIP ✓ should pass script_invalid vector #66: NOP OVER 1 ✓ should pass script_invalid vector #67: 1 OVER ✓ should pass script_invalid vector #68: 0 1 OVER DEPTH 3 EQUALVERIFY ✓ should pass script_invalid vector #69: 19 20 21 PICK 19 EQUALVERIFY DEPTH 2 EQUAL ✓ should pass script_invalid vector #70: NOP 0 PICK ✓ should pass script_invalid vector #71: 1 -1 PICK ✓ should pass script_invalid vector #72: 19 20 21 0 PICK 20 EQUALVERIFY DEPTH 3 EQUAL ✓ should pass script_invalid vector #73: 19 20 21 1 PICK 21 EQUALVERIFY DEPTH 3 EQUAL ✓ should pass script_invalid vector #74: 19 20 21 2 PICK 22 EQUALVERIFY DEPTH 3 EQUAL ✓ should pass script_invalid vector #75: NOP 0 ROLL ✓ should pass script_invalid vector #76: 1 -1 ROLL ✓ should pass script_invalid vector #77: 19 20 21 0 ROLL 20 EQUALVERIFY DEPTH 2 EQUAL ✓ should pass script_invalid vector #78: 19 20 21 1 ROLL 21 EQUALVERIFY DEPTH 2 EQUAL ✓ should pass script_invalid vector #79: 19 20 21 2 ROLL 22 EQUALVERIFY DEPTH 2 EQUAL ✓ should pass script_invalid vector #80: NOP ROT 1 ✓ should pass script_invalid vector #81: NOP 1 ROT 1 ✓ should pass script_invalid vector #82: NOP 1 2 ROT 1 ✓ should pass script_invalid vector #83: NOP 0 1 2 ROT ✓ should pass script_invalid vector #84: NOP SWAP 1 ✓ should pass script_invalid vector #85: 1 SWAP 1 ✓ should pass script_invalid vector #86: 0 1 SWAP 1 EQUALVERIFY ✓ should pass script_invalid vector #87: NOP TUCK 1 ✓ should pass script_invalid vector #88: 1 TUCK 1 ✓ should pass script_invalid vector #89: 1 0 TUCK DEPTH 3 EQUALVERIFY SWAP 2DROP ✓ should pass script_invalid vector #90: NOP 2DUP 1 ✓ should pass script_invalid vector #91: 1 2DUP 1 ✓ should pass script_invalid vector #92: NOP 3DUP 1 ✓ should pass script_invalid vector #93: 1 3DUP 1 ✓ should pass script_invalid vector #94: 1 2 3DUP 1 ✓ should pass script_invalid vector #95: NOP 2OVER 1 ✓ should pass script_invalid vector #96: 1 2 3 2OVER 1 ✓ should pass script_invalid vector #97: NOP 2SWAP 1 ✓ should pass script_invalid vector #98: 1 2 3 2SWAP 1 ✓ should pass script_invalid vector #99: 'a' 'b' CAT (CAT disabled) ✓ should pass script_invalid vector #100: 'a' 'b' 0 IF CAT ELSE 1 ENDIF (CAT disabled) ✓ should pass script_invalid vector #101: 'abc' 1 1 SUBSTR (SUBSTR disabled) ✓ should pass script_invalid vector #102: 'abc' 1 1 0 IF SUBSTR ELSE 1 ENDIF (SUBSTR disabled) ✓ should pass script_invalid vector #103: 'abc' 2 0 IF LEFT ELSE 1 ENDIF (LEFT disabled) ✓ should pass script_invalid vector #104: 'abc' 2 0 IF RIGHT ELSE 1 ENDIF (RIGHT disabled) ✓ should pass script_invalid vector #105: NOP SIZE 1 ✓ should pass script_invalid vector #106: 'abc' IF INVERT ELSE 1 ENDIF (INVERT disabled) ✓ should pass script_invalid vector #107: 1 2 0 IF AND ELSE 1 ENDIF NOP (AND disabled) ✓ should pass script_invalid vector #108: 1 2 0 IF OR ELSE 1 ENDIF NOP (OR disabled) ✓ should pass script_invalid vector #109: 1 2 0 IF XOR ELSE 1 ENDIF NOP (XOR disabled) ✓ should pass script_invalid vector #110: 2 0 IF 2MUL ELSE 1 ENDIF NOP (2MUL disabled) ✓ should pass script_invalid vector #111: 2 0 IF 2DIV ELSE 1 ENDIF NOP (2DIV disabled) ✓ should pass script_invalid vector #112: 2 2 0 IF MUL ELSE 1 ENDIF NOP (MUL disabled) ✓ should pass script_invalid vector #113: 2 2 0 IF DIV ELSE 1 ENDIF NOP (DIV disabled) ✓ should pass script_invalid vector #114: 2 2 0 IF MOD ELSE 1 ENDIF NOP (MOD disabled) ✓ should pass script_invalid vector #115: 2 2 0 IF LSHIFT ELSE 1 ENDIF NOP (LSHIFT disabled) ✓ should pass script_invalid vector #116: 2 2 0 IF RSHIFT ELSE 1 ENDIF NOP (RSHIFT disabled) ✓ should pass script_invalid vector #117: 0 1 EQUAL ✓ should pass script_invalid vector #118: 1 1 ADD 0 EQUAL ✓ should pass script_invalid vector #119: 11 1 ADD 12 SUB 11 EQUAL ✓ should pass script_invalid vector #120: 2147483648 0 ADD NOP (arithmetic operands must be in range [-2^31...2^31] ) ✓ should pass script_invalid vector #121: -2147483648 0 ADD NOP (arithmetic operands must be in range [-2^31...2^31] ) ✓ should pass script_invalid vector #122: 2147483647 DUP ADD 4294967294 NUMEQUAL (NUMEQUAL must be in numeric range) ✓ should pass script_invalid vector #123: 'abcdef' NOT 0 EQUAL (NOT is an arithmetic operand) ✓ should pass script_invalid vector #124: 2 DUP MUL 4 EQUAL (disabled) ✓ should pass script_invalid vector #125: 2 DUP DIV 1 EQUAL (disabled) ✓ should pass script_invalid vector #126: 2 2MUL 4 EQUAL (disabled) ✓ should pass script_invalid vector #127: 2 2DIV 1 EQUAL (disabled) ✓ should pass script_invalid vector #128: 7 3 MOD 1 EQUAL (disabled) ✓ should pass script_invalid vector #129: 2 2 LSHIFT 8 EQUAL (disabled) ✓ should pass script_invalid vector #130: 2 1 RSHIFT 1 EQUAL (disabled) ✓ should pass script_invalid vector #131: 1 NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 2 EQUAL ✓ should pass script_invalid vector #132: 'NOP_1_to_10' NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 'NOP_1_to_11' EQUAL ✓ should pass script_invalid vector #133: 1 NOP1 ✓ should pass script_invalid vector #134: 1 NOP2 ✓ should pass script_invalid vector #135: 1 NOP3 ✓ should pass script_invalid vector #136: 1 NOP4 ✓ should pass script_invalid vector #137: 1 NOP5 ✓ should pass script_invalid vector #138: 1 NOP6 ✓ should pass script_invalid vector #139: 1 NOP7 ✓ should pass script_invalid vector #140: 1 NOP8 ✓ should pass script_invalid vector #141: 1 NOP9 ✓ should pass script_invalid vector #142: 1 NOP10 ✓ should pass script_invalid vector #143: NOP10 1 (Discouraged NOP10 in scriptSig) ✓ should pass script_invalid vector #144: 1 0x01 0xb9 HASH160 0x14 0x15727299b05b45fdaf9ac9ecf7565cfe27c3e567 EQUAL (Discouraged NOP10 in redeemScript) ✓ should pass script_invalid vector #145: 0x50 1 (opcode 0x50 is reserved) ✓ should pass script_invalid vector #146: 1 IF 0xba ELSE 1 ENDIF (opcodes above NOP10 invalid if executed) ✓ should pass script_invalid vector #147: 1 IF 0xbb ELSE 1 ENDIF ✓ should pass script_invalid vector #148: 1 IF 0xbc ELSE 1 ENDIF ✓ should pass script_invalid vector #149: 1 IF 0xbd ELSE 1 ENDIF ✓ should pass script_invalid vector #150: 1 IF 0xbe ELSE 1 ENDIF ✓ should pass script_invalid vector #151: 1 IF 0xbf ELSE 1 ENDIF ✓ should pass script_invalid vector #152: 1 IF 0xc0 ELSE 1 ENDIF ✓ should pass script_invalid vector #153: 1 IF 0xc1 ELSE 1 ENDIF ✓ should pass script_invalid vector #154: 1 IF 0xc2 ELSE 1 ENDIF ✓ should pass script_invalid vector #155: 1 IF 0xc3 ELSE 1 ENDIF ✓ should pass script_invalid vector #156: 1 IF 0xc4 ELSE 1 ENDIF ✓ should pass script_invalid vector #157: 1 IF 0xc5 ELSE 1 ENDIF ✓ should pass script_invalid vector #158: 1 IF 0xc6 ELSE 1 ENDIF ✓ should pass script_invalid vector #159: 1 IF 0xc7 ELSE 1 ENDIF ✓ should pass script_invalid vector #160: 1 IF 0xc8 ELSE 1 ENDIF ✓ should pass script_invalid vector #161: 1 IF 0xc9 ELSE 1 ENDIF ✓ should pass script_invalid vector #162: 1 IF 0xca ELSE 1 ENDIF ✓ should pass script_invalid vector #163: 1 IF 0xcb ELSE 1 ENDIF ✓ should pass script_invalid vector #164: 1 IF 0xcc ELSE 1 ENDIF ✓ should pass script_invalid vector #165: 1 IF 0xcd ELSE 1 ENDIF ✓ should pass script_invalid vector #166: 1 IF 0xce ELSE 1 ENDIF ✓ should pass script_invalid vector #167: 1 IF 0xcf ELSE 1 ENDIF ✓ should pass script_invalid vector #168: 1 IF 0xd0 ELSE 1 ENDIF ✓ should pass script_invalid vector #169: 1 IF 0xd1 ELSE 1 ENDIF ✓ should pass script_invalid vector #170: 1 IF 0xd2 ELSE 1 ENDIF ✓ should pass script_invalid vector #171: 1 IF 0xd3 ELSE 1 ENDIF ✓ should pass script_invalid vector #172: 1 IF 0xd4 ELSE 1 ENDIF ✓ should pass script_invalid vector #173: 1 IF 0xd5 ELSE 1 ENDIF ✓ should pass script_invalid vector #174: 1 IF 0xd6 ELSE 1 ENDIF ✓ should pass script_invalid vector #175: 1 IF 0xd7 ELSE 1 ENDIF ✓ should pass script_invalid vector #176: 1 IF 0xd8 ELSE 1 ENDIF ✓ should pass script_invalid vector #177: 1 IF 0xd9 ELSE 1 ENDIF ✓ should pass script_invalid vector #178: 1 IF 0xda ELSE 1 ENDIF ✓ should pass script_invalid vector #179: 1 IF 0xdb ELSE 1 ENDIF ✓ should pass script_invalid vector #180: 1 IF 0xdc ELSE 1 ENDIF ✓ should pass script_invalid vector #181: 1 IF 0xdd ELSE 1 ENDIF ✓ should pass script_invalid vector #182: 1 IF 0xde ELSE 1 ENDIF ✓ should pass script_invalid vector #183: 1 IF 0xdf ELSE 1 ENDIF ✓ should pass script_invalid vector #184: 1 IF 0xe0 ELSE 1 ENDIF ✓ should pass script_invalid vector #185: 1 IF 0xe1 ELSE 1 ENDIF ✓ should pass script_invalid vector #186: 1 IF 0xe2 ELSE 1 ENDIF ✓ should pass script_invalid vector #187: 1 IF 0xe3 ELSE 1 ENDIF ✓ should pass script_invalid vector #188: 1 IF 0xe4 ELSE 1 ENDIF ✓ should pass script_invalid vector #189: 1 IF 0xe5 ELSE 1 ENDIF ✓ should pass script_invalid vector #190: 1 IF 0xe6 ELSE 1 ENDIF ✓ should pass script_invalid vector #191: 1 IF 0xe7 ELSE 1 ENDIF ✓ should pass script_invalid vector #192: 1 IF 0xe8 ELSE 1 ENDIF ✓ should pass script_invalid vector #193: 1 IF 0xe9 ELSE 1 ENDIF ✓ should pass script_invalid vector #194: 1 IF 0xea ELSE 1 ENDIF ✓ should pass script_invalid vector #195: 1 IF 0xeb ELSE 1 ENDIF ✓ should pass script_invalid vector #196: 1 IF 0xec ELSE 1 ENDIF ✓ should pass script_invalid vector #197: 1 IF 0xed ELSE 1 ENDIF ✓ should pass script_invalid vector #198: 1 IF 0xee ELSE 1 ENDIF ✓ should pass script_invalid vector #199: 1 IF 0xef ELSE 1 ENDIF ✓ should pass script_invalid vector #200: 1 IF 0xf0 ELSE 1 ENDIF ✓ should pass script_invalid vector #201: 1 IF 0xf1 ELSE 1 ENDIF ✓ should pass script_invalid vector #202: 1 IF 0xf2 ELSE 1 ENDIF ✓ should pass script_invalid vector #203: 1 IF 0xf3 ELSE 1 ENDIF ✓ should pass script_invalid vector #204: 1 IF 0xf4 ELSE 1 ENDIF ✓ should pass script_invalid vector #205: 1 IF 0xf5 ELSE 1 ENDIF ✓ should pass script_invalid vector #206: 1 IF 0xf6 ELSE 1 ENDIF ✓ should pass script_invalid vector #207: 1 IF 0xf7 ELSE 1 ENDIF ✓ should pass script_invalid vector #208: 1 IF 0xf8 ELSE 1 ENDIF ✓ should pass script_invalid vector #209: 1 IF 0xf9 ELSE 1 ENDIF ✓ should pass script_invalid vector #210: 1 IF 0xfa ELSE 1 ENDIF ✓ should pass script_invalid vector #211: 1 IF 0xfb ELSE 1 ENDIF ✓ should pass script_invalid vector #212: 1 IF 0xfc ELSE 1 ENDIF ✓ should pass script_invalid vector #213: 1 IF 0xfd ELSE 1 ENDIF ✓ should pass script_invalid vector #214: 1 IF 0xfe ELSE 1 ENDIF ✓ should pass script_invalid vector #215: 1 IF 0xff ELSE 1 ENDIF ✓ should pass script_invalid vector #216: 1 IF 1 ELSE 0xff ENDIF (invalid because scriptSig and scriptPubKey are processed separately) ✓ should pass script_invalid vector #217: NOP RIPEMD160 ✓ should pass script_invalid vector #218: NOP SHA1 ✓ should pass script_invalid vector #219: NOP SHA256 ✓ should pass script_invalid vector #220: NOP HASH160 ✓ should pass script_invalid vector #221: NOP HASH256 ✓ should pass script_invalid vector #222: NOP 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' (>520 byte push) ✓ should pass script_invalid vector #223: 0 IF 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' ENDIF 1 (>520 byte push in non-executed IF branch) ✓ should pass script_invalid vector #224: 1 0x61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 (>201 opcodes executed. 0x61 is NOP) ✓ should pass script_invalid vector #225: 0 IF 0x6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 ENDIF 1 (>201 opcodes including non-executed IF branch. 0x61 is NOP) ✓ should pass script_invalid vector #226: 1 2 3 4 5 0x6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f 1 2 3 4 5 6 0x6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f (>1,000 stack size (0x6f is 3DUP)) ✓ should pass script_invalid vector #227: 1 2 3 4 5 0x6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f 1 TOALTSTACK 2 TOALTSTACK 3 4 5 6 0x6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f (>1,000 stack+altstack size) ✓ should pass script_invalid vector #228: NOP 0 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 0x6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f 2DUP 0x616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 (10,001-byte scriptPubKey) ✓ should pass script_invalid vector #229: NOP1 NOP10 ✓ should pass script_invalid vector #230: 1 VER (OP_VER is reserved) ✓ should pass script_invalid vector #231: 1 VERIF (OP_VERIF is reserved) ✓ should pass script_invalid vector #232: 1 VERNOTIF (OP_VERNOTIF is reserved) ✓ should pass script_invalid vector #233: 1 RESERVED (OP_RESERVED is reserved) ✓ should pass script_invalid vector #234: 1 RESERVED1 (OP_RESERVED1 is reserved) ✓ should pass script_invalid vector #235: 1 RESERVED2 (OP_RESERVED2 is reserved) ✓ should pass script_invalid vector #236: 1 0xba (0xba == OP_NOP10 + 1) ✓ should pass script_invalid vector #237: 2147483648 1ADD 1 (We cannot do math on 5-byte integers) ✓ should pass script_invalid vector #238: 2147483648 NEGATE 1 (We cannot do math on 5-byte integers) ✓ should pass script_invalid vector #239: -2147483648 1ADD 1 (Because we use a sign bit, -2147483648 is also 5 bytes) ✓ should pass script_invalid vector #240: 2147483647 1ADD 1SUB 1 (We cannot do math on 5-byte integers, even if the result is 4-bytes) ✓ should pass script_invalid vector #241: 2147483648 1SUB 1 (We cannot do math on 5-byte integers, even if the result is 4-bytes) ✓ should pass script_invalid vector #242: 2147483648 1 BOOLOR 1 (We cannot do BOOLOR on 5-byte integers (but we can still do IF etc)) ✓ should pass script_invalid vector #243: 2147483648 1 BOOLAND 1 (We cannot do BOOLAND on 5-byte integers) ✓ should pass script_invalid vector #244: 1 1 ENDIF (ENDIF without IF) ✓ should pass script_invalid vector #245: 1 IF 1 (IF without ENDIF) ✓ should pass script_invalid vector #246: 1 IF 1 ENDIF (IFs don't carry over) ✓ should pass script_invalid vector #247: NOP IF 1 ENDIF (The following tests check the if(stack.size() < N) tests in each opcode) ✓ should pass script_invalid vector #248: NOP NOTIF 1 ENDIF (They are here to catch copy-and-paste errors) ✓ should pass script_invalid vector #249: NOP VERIFY 1 (Most of them are duplicated elsewhere,) ✓ should pass script_invalid vector #250: NOP TOALTSTACK 1 (but, hey, more is always better, right?) ✓ should pass script_invalid vector #251: 1 FROMALTSTACK ✓ should pass script_invalid vector #252: 1 2DROP 1 ✓ should pass script_invalid vector #253: 1 2DUP ✓ should pass script_invalid vector #254: 1 1 3DUP ✓ should pass script_invalid vector #255: 1 1 1 2OVER ✓ should pass script_invalid vector #256: 1 1 1 1 1 2ROT ✓ should pass script_invalid vector #257: 1 1 1 2SWAP ✓ should pass script_invalid vector #258: NOP IFDUP 1 ✓ should pass script_invalid vector #259: NOP DROP 1 ✓ should pass script_invalid vector #260: NOP DUP 1 ✓ should pass script_invalid vector #261: 1 NIP ✓ should pass script_invalid vector #262: 1 OVER ✓ should pass script_invalid vector #263: 1 1 1 3 PICK ✓ should pass script_invalid vector #264: 0 PICK 1 ✓ should pass script_invalid vector #265: 1 1 1 3 ROLL ✓ should pass script_invalid vector #266: 0 ROLL 1 ✓ should pass script_invalid vector #267: 1 1 ROT ✓ should pass script_invalid vector #268: 1 SWAP ✓ should pass script_invalid vector #269: 1 TUCK ✓ should pass script_invalid vector #270: NOP SIZE 1 ✓ should pass script_invalid vector #271: 1 EQUAL 1 ✓ should pass script_invalid vector #272: 1 EQUALVERIFY 1 ✓ should pass script_invalid vector #273: NOP 1ADD 1 ✓ should pass script_invalid vector #274: NOP 1SUB 1 ✓ should pass script_invalid vector #275: NOP NEGATE 1 ✓ should pass script_invalid vector #276: NOP ABS 1 ✓ should pass script_invalid vector #277: NOP NOT 1 ✓ should pass script_invalid vector #278: NOP 0NOTEQUAL 1 ✓ should pass script_invalid vector #279: 1 ADD ✓ should pass script_invalid vector #280: 1 SUB ✓ should pass script_invalid vector #281: 1 BOOLAND ✓ should pass script_invalid vector #282: 1 BOOLOR ✓ should pass script_invalid vector #283: 1 NUMEQUAL ✓ should pass script_invalid vector #284: 1 NUMEQUALVERIFY 1 ✓ should pass script_invalid vector #285: 1 NUMNOTEQUAL ✓ should pass script_invalid vector #286: 1 LESSTHAN ✓ should pass script_invalid vector #287: 1 GREATERTHAN ✓ should pass script_invalid vector #288: 1 LESSTHANOREQUAL ✓ should pass script_invalid vector #289: 1 GREATERTHANOREQUAL ✓ should pass script_invalid vector #290: 1 MIN ✓ should pass script_invalid vector #291: 1 MAX ✓ should pass script_invalid vector #292: 1 1 WITHIN ✓ should pass script_invalid vector #293: NOP RIPEMD160 1 ✓ should pass script_invalid vector #294: NOP SHA1 1 ✓ should pass script_invalid vector #295: NOP SHA256 1 ✓ should pass script_invalid vector #296: NOP HASH160 1 ✓ should pass script_invalid vector #297: NOP HASH256 1 ✓ should pass script_invalid vector #298: 0 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG 0 0 CHECKMULTISIG (202 CHECKMULTISIGS, fails due to 201 op limit) ✓ should pass script_invalid vector #299: 1 0 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY 0 0 CHECKMULTISIGVERIFY ✓ should pass script_invalid vector #300: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIG (Fails due to 201 sig op limit) ✓ should pass script_invalid vector #301: 1 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY 0 0 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 20 CHECKMULTISIGVERIFY ✓ should pass script_invalid vector #302: 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 21 CHECKMULTISIG 1 (nPubKeys > 20) ✓ should pass script_invalid vector #303: 0 'sig' 1 0 CHECKMULTISIG 1 (nSigs > nPubKeys) ✓ should pass script_invalid vector #304: NOP 0x01 1 HASH160 0x14 0xda1745e9b549bd0bfa1a569971c77eba30cd5a4b EQUAL (Tests for Script.IsPushOnly()) ✓ should pass script_invalid vector #305: NOP1 0x01 1 HASH160 0x14 0xda1745e9b549bd0bfa1a569971c77eba30cd5a4b EQUAL ✓ should pass script_invalid vector #306: 0 0x01 0x50 HASH160 0x14 0xece424a6bb6ddf4db592c0faed60685047a361b1 EQUAL (OP_RESERVED in P2SH should fail) ✓ should pass script_invalid vector #307: 0 0x01 VER HASH160 0x14 0x0f4d7845db968f2a81b530b6f3c1d6246d4c7e01 EQUAL (OP_VER in P2SH should fail) ✓ should pass script_invalid vector #308: 0x00 '00' EQUAL (Basic OP_0 execution) ✓ should pass script_invalid vector #309: 0x4c 0x00 DROP 1 (Empty vector minimally represented by OP_0) ✓ should pass script_invalid vector #310: 0x01 0x81 DROP 1 (-1 minimally represented by OP_1NEGATE) ✓ should pass script_invalid vector #311: 0x01 0x01 DROP 1 (1 to 16 minimally represented by OP_1 to OP_16) ✓ should pass script_invalid vector #312: 0x01 0x02 DROP 1 ✓ should pass script_invalid vector #313: 0x01 0x03 DROP 1 ✓ should pass script_invalid vector #314: 0x01 0x04 DROP 1 ✓ should pass script_invalid vector #315: 0x01 0x05 DROP 1 ✓ should pass script_invalid vector #316: 0x01 0x06 DROP 1 ✓ should pass script_invalid vector #317: 0x01 0x07 DROP 1 ✓ should pass script_invalid vector #318: 0x01 0x08 DROP 1 ✓ should pass script_invalid vector #319: 0x01 0x09 DROP 1 ✓ should pass script_invalid vector #320: 0x01 0x0a DROP 1 ✓ should pass script_invalid vector #321: 0x01 0x0b DROP 1 ✓ should pass script_invalid vector #322: 0x01 0x0c DROP 1 ✓ should pass script_invalid vector #323: 0x01 0x0d DROP 1 ✓ should pass script_invalid vector #324: 0x01 0x0e DROP 1 ✓ should pass script_invalid vector #325: 0x01 0x0f DROP 1 ✓ should pass script_invalid vector #326: 0x01 0x10 DROP 1 ✓ should pass script_invalid vector #327: 0x4c 0x48 0x111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 DROP 1 (PUSHDATA1 of 72 bytes minimally represented by direct push) ✓ should pass script_invalid vector #328: 0x4d 0xFF00 0x111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 DROP 1 (PUSHDATA2 of 255 bytes minimally represented by PUSHDATA1) ✓ should pass script_invalid vector #329: 0x4f 0x00100000 0x11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 DROP 1 (PUSHDATA4 of 256 bytes minimally represented by PUSHDATA2) ✓ should pass script_invalid vector #330: 0x01 0x00 NOT DROP 1 (numequals 0) ✓ should pass script_invalid vector #331: 0x02 0x0000 NOT DROP 1 (numequals 0) ✓ should pass script_invalid vector #332: 0x01 0x80 NOT DROP 1 (0x80 (negative zero) numequals 0) ✓ should pass script_invalid vector #333: 0x02 0x0080 NOT DROP 1 (numequals 0) ✓ should pass script_invalid vector #334: 0x02 0x0500 NOT DROP 1 (numequals 5) ✓ should pass script_invalid vector #335: 0x03 0x050000 NOT DROP 1 (numequals 5) ✓ should pass script_invalid vector #336: 0x02 0x0580 NOT DROP 1 (numequals -5) ✓ should pass script_invalid vector #337: 0x03 0x050080 NOT DROP 1 (numequals -5) ✓ should pass script_invalid vector #338: 0x03 0xff7f80 NOT DROP 1 (Minimal encoding is 0xffff) ✓ should pass script_invalid vector #339: 0x03 0xff7f00 NOT DROP 1 (Minimal encoding is 0xff7f) ✓ should pass script_invalid vector #340: 0x04 0xffff7f80 NOT DROP 1 (Minimal encoding is 0xffffff) ✓ should pass script_invalid vector #341: 0x04 0xffff7f00 NOT DROP 1 (Minimal encoding is 0xffff7f) ✓ should pass script_invalid vector #342: 1 0x02 0x0000 PICK DROP ✓ should pass script_invalid vector #343: 1 0x02 0x0000 ROLL DROP 1 ✓ should pass script_invalid vector #344: 0x02 0x0000 1ADD DROP 1 ✓ should pass script_invalid vector #345: 0x02 0x0000 1SUB DROP 1 ✓ should pass script_invalid vector #346: 0x02 0x0000 NEGATE DROP 1 ✓ should pass script_invalid vector #347: 0x02 0x0000 ABS DROP 1 ✓ should pass script_invalid vector #348: 0x02 0x0000 NOT DROP 1 ✓ should pass script_invalid vector #349: 0x02 0x0000 0NOTEQUAL DROP 1 ✓ should pass script_invalid vector #350: 0 0x02 0x0000 ADD DROP 1 ✓ should pass script_invalid vector #351: 0x02 0x0000 0 ADD DROP 1 ✓ should pass script_invalid vector #352: 0 0x02 0x0000 SUB DROP 1 ✓ should pass script_invalid vector #353: 0x02 0x0000 0 SUB DROP 1 ✓ should pass script_invalid vector #354: 0 0x02 0x0000 BOOLAND DROP 1 ✓ should pass script_invalid vector #355: 0x02 0x0000 0 BOOLAND DROP 1 ✓ should pass script_invalid vector #356: 0 0x02 0x0000 BOOLOR DROP 1 ✓ should pass script_invalid vector #357: 0x02 0x0000 0 BOOLOR DROP 1 ✓ should pass script_invalid vector #358: 0 0x02 0x0000 NUMEQUAL DROP 1 ✓ should pass script_invalid vector #359: 0x02 0x0000 1 NUMEQUAL DROP 1 ✓ should pass script_invalid vector #360: 0 0x02 0x0000 NUMEQUALVERIFY 1 ✓ should pass script_invalid vector #361: 0x02 0x0000 0 NUMEQUALVERIFY 1 ✓ should pass script_invalid vector #362: 0 0x02 0x0000 NUMNOTEQUAL DROP 1 ✓ should pass script_invalid vector #363: 0x02 0x0000 0 NUMNOTEQUAL DROP 1 ✓ should pass script_invalid vector #364: 0 0x02 0x0000 LESSTHAN DROP 1 ✓ should pass script_invalid vector #365: 0x02 0x0000 0 LESSTHAN DROP 1 ✓ should pass script_invalid vector #366: 0 0x02 0x0000 GREATERTHAN DROP 1 ✓ should pass script_invalid vector #367: 0x02 0x0000 0 GREATERTHAN DROP 1 ✓ should pass script_invalid vector #368: 0 0x02 0x0000 LESSTHANOREQUAL DROP 1 ✓ should pass script_invalid vector #369: 0x02 0x0000 0 LESSTHANOREQUAL DROP 1 ✓ should pass script_invalid vector #370: 0 0x02 0x0000 GREATERTHANOREQUAL DROP 1 ✓ should pass script_invalid vector #371: 0x02 0x0000 0 GREATERTHANOREQUAL DROP 1 ✓ should pass script_invalid vector #372: 0 0x02 0x0000 MIN DROP 1 ✓ should pass script_invalid vector #373: 0x02 0x0000 0 MIN DROP 1 ✓ should pass script_invalid vector #374: 0 0x02 0x0000 MAX DROP 1 ✓ should pass script_invalid vector #375: 0x02 0x0000 0 MAX DROP 1 ✓ should pass script_invalid vector #376: 0x02 0x0000 0 0 WITHIN DROP 1 ✓ should pass script_invalid vector #377: 0 0x02 0x0000 0 WITHIN DROP 1 ✓ should pass script_invalid vector #378: 0 0 0x02 0x0000 WITHIN DROP 1 ✓ should pass script_invalid vector #379: 0 0 0x02 0x0000 CHECKMULTISIG DROP 1 ✓ should pass script_invalid vector #380: 0 0x02 0x0000 0 CHECKMULTISIG DROP 1 ✓ should pass script_invalid vector #381: 0 0x02 0x0000 0 1 CHECKMULTISIG DROP 1 ✓ should pass script_invalid vector #382: 0 0 0x02 0x0000 CHECKMULTISIGVERIFY 1 ✓ should pass script_invalid vector #383: 0 0x02 0x0000 0 CHECKMULTISIGVERIFY 1 ✓ should pass script_invalid vector #384: 0 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501 2 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 0 2 CHECKMULTISIG NOT (2-of-2 CHECKMULTISIG NOT with the first pubkey invalid, and both signatures validly encoded.) ✓ should pass script_invalid vector #385: 0 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501 0 2 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 2 CHECKMULTISIG NOT (2-of-2 CHECKMULTISIG NOT with both pubkeys valid, but first signature invalid.) ✓ should pass script_invalid vector #386: 0x47 0x3044022053205076a7bb12d2db3162a2d97d8197631f829b065948b7019b15482af819a902204328dcc02c994ca086b1226d0d5f1674d23cfae0d846143df812b81cab3391e801 0x41 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG (P2PK, bad sig) (39ms) ✓ should pass script_invalid vector #387: 0x47 0x30440220151ea78fa148b59f399b23731b634645ebc142f299ee9838d46fb78cf7e0bc0102200d62327dcd54ac6bcfb1516b035b1bf8eaea438c52c62d3450d1f3a8f030e0de01 0x21 0x03363d90d446b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 DUP HASH160 0x14 0xc0834c0c158f53be706d234c38fd52de7eece656 EQUALVERIFY CHECKSIG (P2PKH, bad pubkey) ✓ should pass script_invalid vector #388: 0x47 0x304402204710a85181663b32d25c70ec2bbd14adff5ddfff6cb50d09e155ef5f541fc86c0220056b0cc949be9386ecc5f6c2ac0493269031dbb185781db90171b54ac127790201 0x41 0x048282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f5150811f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf CHECKSIG (P2PK anyonecanpay marked with normal hashtype) (41ms) ✓ should pass script_invalid vector #389: 0x47 0x304402202166fcd5e607de452d3c6f15e059505cf21654346592f9650ba906b9e8be88fa022005d976d28eb8de477102feba28807b3ad361e7fa24796d259c9d61452f7c318c01 0x23 0x210279be667ef9dcbbac54a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac HASH160 0x14 0x23b0ad3477f2178bc0b3eed26e4e6316f4e83aa1 EQUAL (P2SH(P2PK), bad redeemscript) ✓ should pass script_invalid vector #390: 0x47 0x3044022064cc90ca89ad721384b231653b945579359a24b928ef8539b331172628c9cc6102203e238869ab5dac3fc293db53c12e7dd3079e86cfde9024b689efc7227e4d671001 0x19 0x76a9147cf9c846cd4882efec4bf07e44ebdad495c94f4b88ac HASH160 0x14 0x2df519943d5acc0ef5222091f9dfe3543f489a82 EQUAL (P2SH(P2PKH), bad sig) ✓ should pass script_invalid vector #391: 0 0x47 0x3044022051254b9fb476a52d85530792b578f86fea70ec1ffb4393e661bcccb23d8d63d3022076505f94a403c86097841944e044c70c2045ce90e36de51f7e9d3828db98a07501 0x47 0x304402206d32e6d6b131ef2fe77b6a9b90b120d74e3e238e79dcffb10523a6ec94f93d65022067ae8772632ddf4c389258c6b70ed0ff94f20ee8f60207aa192a52a2469cddd901 0 3 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 3 CHECKMULTISIG (3-of-3, 2 sigs) ✓ should pass script_invalid vector #392: 0 0x47 0x304402205b7d2c2f177ae76cfbbf14d589c113b0b35db753d305d5562dd0b61cbf366cfb02202e56f93c4f08a27f986cd424ffc48a462c3202c4902104d4d0ff98ed28f4bf8001 0 0x4c69 0x52210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f8179821038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f515082103363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff464053ae HASH160 0x14 0xc9e4a896d149702d0d1695434feddd52e24ad78d EQUAL (P2SH(2-of-3), 1 sig) ✓ should pass script_invalid vector #393: 0x47 0x30440220001d6702bfa4f49c3a2542af9b1c2844a2eaac55f86f310f42d26a5dd17d6a8002202cdadbe608c00b50dd951c6ba0877d5b07a970f3e265c18697bc413a0a86f69901 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKSIG (P2PK with too much R padding) ✓ should pass script_invalid vector #394: 0x48 0x304502207d2b258e959605e2ea50b46fea1325b7391ffb0c14a5b58ef8ad3851da3644380221007e75136df5f2e38216c4338b31c97e8307102edb97d611e06914e1f8fba68ead01 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKSIG (P2PK with too much S padding) ✓ should pass script_invalid vector #395: 0x47 0x30440220d7a0417c3f6d1a15094d1cf2a3378ca0503eb8a57630953a9e2987e21ddd0a6502207a6266d686c99090920249991d3d42065b6d43eb70187b219c0db82e4f94d1a201 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKSIG (P2PK with too little R padding) ✓ should pass script_invalid vector #396: 0x47 0x30440220003040725f724b0e2142fc44ac71f6e13161f6410aeb6dee477952ede3b6a6ca022041ff4940ee3d88116ad281d7cc556e1f2c9427d82290bd7974a25addbcd5bede01 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 CHECKSIG NOT (P2PK NOT with bad sig with too much R padding) ✓ should pass script_invalid vector #397: 0x47 0x30440220003040725f724a0e2142fc44ac71f6e13161f6410aeb6dee477952ede3b6a6ca022041ff4940ee3d88116ad281d7cc556e1f2c9427d82290bd7974a25addbcd5bede01 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 CHECKSIG NOT (P2PK NOT with too much R padding but no DERSIG) (44ms) ✓ should pass script_invalid vector #398: 0x47 0x30440220003040725f724a0e2142fc44ac71f6e13161f6410aeb6dee477952ede3b6a6ca022041ff4940ee3d88116ad281d7cc556e1f2c9427d82290bd7974a25addbcd5bede01 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 CHECKSIG NOT (P2PK NOT with too much R padding) ✓ should pass script_invalid vector #399: 0x49 0x304502203e4516da7253cf068effec6b95c41221c0cf3a8e6ccb8cbf1725b562e9afde2c022100ab1e3da73d67e32045a20e0b999e049978ea8d6ee5480d485fcf2ce0d03b2ef05101 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 CHECKSIG (P2PK with high S) ✓ should pass script_invalid vector #400: 0x47 0x30440220745d63eb70d45652128b450aa5ca7d9b513439963f261cb1c40a60f0785e7ee402204877785b38945ca9dbec78e1c1d4dd12148cc25c868bd27480023b49ae0f310501 0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG (P2PK with hybrid pubkey) ✓ should pass script_invalid vector #401: 0x47 0x30440220606f6f9f6cebc94ebfb6a4bff0b682bd99f05511295545ce9b275e98be3c946102206871d6a76f4e1b43d9763cfc5647844e4811682b1cab0325f060f44ddf44002201 0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG NOT (P2PK NOT with hybrid pubkey but no STRICTENC) (38ms) ✓ should pass script_invalid vector #402: 0x47 0x30440220606f6f9f6cebc94ebfb6a4bff0b682bd99f05511295545ce9b275e98be3c946102206871d6a76f4e1b43d9763cfc5647844e4811682b1cab0325f060f44ddf44002201 0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG NOT (P2PK NOT with hybrid pubkey) ✓ should pass script_invalid vector #403: 0x47 0x30440220606f6f9f6cebc84ebfb6a4bff0b682bd99f05511295545ce9b275e98be3c946102206871d6a76f4e1b43d9763cfc5647844e4811682b1cab0325f060f44ddf44002201 0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKSIG NOT (P2PK NOT with invalid hybrid pubkey) ✓ should pass script_invalid vector #404: 0 0x47 0x304402203cdcf66792fe97e3955655ede5dad004950e58b369831ffa7743132c507b272c022031fbcfb4a72b3e00217abf2f5557585f1f9891f12827d2f0a2ae2978e7f9f11001 1 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 2 CHECKMULTISIG (1-of-2 with the first 1 hybrid pubkey) ✓ should pass script_invalid vector #405: 0x47 0x304402201c215cb13e4954e60ce4f6de74941904c771f998de7b1d9627e82a1949fde517022031c2197455f3dbecbb78321201308d7b039424e38d480772d7cd4eb465a083f405 0x41 0x048282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f5150811f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf CHECKSIG (P2PK with undefined hashtype) ✓ should pass script_invalid vector #406: 0x47 0x304402207409b5b320296e5e2136a7b281a7f803028ca4ca44e2b83eebd46932677725de02202d4eea1c8d3c98e6f42614f54764e6e5e6542e213eb4d079737e9a8b6e9812ec05 0x41 0x048282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f5150811f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf CHECKSIG NOT (P2PK NOT with invalid sig and undefined hashtype) ✓ should pass script_invalid vector #407: 1 0x47 0x3044022051254b9fb476a52d85530792b578f86fea70ec1ffb4393e661bcccb23d8d63d3022076505f94a403c86097841944e044c70c2045ce90e36de51f7e9d3828db98a07501 0x47 0x304402206d32e6d6b131ef2fe77b6a9b90b120d74e3e238e79dcffb10523a6ec94f93d65022067ae8772632ddf4c389258c6b70ed0ff94f20ee8f60207aa192a52a2469cddd901 0x47 0x304402200955d031fff71d8653221e85e36c3c85533d2312fc3045314b19650b7ae2f81002202a6bb8505e36201909d0921f01abff390ae6b7ff97bbf959f98aedeb0a56730901 3 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 3 CHECKMULTISIG (3-of-3 with nonzero dummy) (134ms) ✓ should pass script_invalid vector #408: 1 0x47 0x304402201bb2edab700a5d020236df174fefed78087697143731f659bea59642c759c16d022061f42cdbae5bcd3e8790f20bf76687443436e94a634321c16a72aa54cbc7c2ea01 0x47 0x304402204bb4a64f2a6e5c7fb2f07fef85ee56fde5e6da234c6a984262307a20e99842d702206f8303aaba5e625d223897e2ffd3f88ef1bcffef55f38dc3768e5f2e94c923f901 0x47 0x3044022040c2809b71fffb155ec8b82fe7a27f666bd97f941207be4e14ade85a1249dd4d02204d56c85ec525dd18e29a0533d5ddf61b6b1bb32980c2f63edf951aebf7a27bfe01 3 0x21 0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 3 CHECKMULTISIG NOT (3-of-3 NOT with invalid sig with nonzero dummy) (46ms) ✓ should pass script_invalid vector #409: 0 0x47 0x304402206cb053202e1501e6faa24e6e309bf46a2f9255aa9484ff4a26efb7434f78a58a0220132b10419c3b99601f154bf86cf12259aacd8c6f363a73dacb1d0b941680bb4c01 DUP 2 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 2 CHECKMULTISIG (2-of-2 with two identical keys and sigs pushed using OP_DUP) ✓ should pass script_invalid vector #410: 0x47 0x304402203e4516da7253cf068effec6b95c41221c0cf3a8e6ccb8cbf1725b562e9afde2c022054e1c258c2981cdfba5df1f46661fb6541c44f77ca0092f3600331abfffb125101 0x23 0x2103363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640ac 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 CHECKSIG (P2SH(P2PK) with non-push scriptSig but no SIGPUSHONLY) ✓ should pass script_invalid vector #411: 0x47 0x304402203e4516da7253cf068effec6b95c41221c0cf3a8e6ccb8cbf1725b562e9afde2c022054e1c258c2981cdfba5df1f46661fb6541c44f77ca0092f3600331abfffb125101 0x23 0x2103363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640ac 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 CHECKSIG (P2SH(P2PK) with non-push scriptSig) bitcoind transaction evaluation fixtures ✓ should pass tx_valid vector 1 (80ms) ✓ should pass tx_valid vector 2 (77ms) ✓ should pass tx_valid vector 3 (77ms) ✓ should pass tx_valid vector 4 (76ms) ✓ should pass tx_valid vector 5 (78ms) ✓ should pass tx_valid vector 6 (38ms) ✓ should pass tx_valid vector 7 (43ms) ✓ should pass tx_valid vector 8 (42ms) ✓ should pass tx_valid vector 9 (82ms) ✓ should pass tx_valid vector 10 (48ms) ✓ should pass tx_valid vector 11 ✓ should pass tx_valid vector 12 (45ms) ✓ should pass tx_valid vector 13 (46ms) ✓ should pass tx_valid vector 14 (42ms) ✓ should pass tx_valid vector 15 ✓ should pass tx_valid vector 16 ✓ should pass tx_valid vector 17 (87ms) ✓ should pass tx_valid vector 18 (87ms) ✓ should pass tx_valid vector 19 (133ms) ✓ should pass tx_valid vector 20 (39ms) ✓ should pass tx_valid vector 21 (133ms) ✓ should pass tx_valid vector 22 (44ms) ✓ should pass tx_valid vector 23 ✓ should pass tx_valid vector 24 ✓ should pass tx_valid vector 25 (44ms) ✓ should pass tx_valid vector 26 (47ms) ✓ should pass tx_valid vector 27 ✓ should pass tx_valid vector 28 (43ms) ✓ should pass tx_valid vector 29 (43ms) ✓ should pass tx_valid vector 30 (44ms) ✓ should pass tx_valid vector 31 (45ms) ✓ should pass tx_valid vector 32 (89ms) ✓ should pass tx_valid vector 33 (90ms) ✓ should pass tx_valid vector 34 (89ms) ✓ should pass tx_valid vector 35 (91ms) ✓ should pass tx_valid vector 36 (89ms) ✓ should pass tx_valid vector 37 (133ms) ✓ should pass tx_valid vector 38 (132ms) ✓ should pass tx_valid vector 39 ✓ should pass tx_valid vector 40 ✓ should pass tx_valid vector 41 ✓ should pass tx_valid vector 42 ✓ should pass tx_valid vector 43 ✓ should pass tx_valid vector 44 ✓ should pass tx_valid vector 45 ✓ should pass tx_valid vector 46 ✓ should pass tx_valid vector 47 ✓ should pass tx_valid vector 48 ✓ should pass tx_valid vector 49 ✓ should pass tx_valid vector 50 ✓ should pass tx_invalid vector 1 (40ms) ✓ should pass tx_invalid vector 2 (45ms) ✓ should pass tx_invalid vector 3 (44ms) ✓ should pass tx_invalid vector 4 ✓ should pass tx_invalid vector 5 ✓ should pass tx_invalid vector 6 (44ms) ✓ should pass tx_invalid vector 7 (43ms) ✓ should pass tx_invalid vector 8 (44ms) ✓ should pass tx_invalid vector 9 (46ms) ✓ should pass tx_invalid vector 10 (90ms) ✓ should pass tx_invalid vector 11 ✓ should pass tx_invalid vector 12 ✓ should pass tx_invalid vector 13 ✓ should pass tx_invalid vector 14 (91ms) ✓ should pass tx_invalid vector 15 (88ms) ✓ should pass tx_invalid vector 16 ✓ should pass tx_invalid vector 17 (79ms) ✓ should pass tx_invalid vector 18 (77ms) ✓ should pass tx_invalid vector 19 (76ms) ✓ should pass tx_invalid vector 20 ✓ should pass tx_invalid vector 21 ✓ should pass tx_invalid vector 22 ✓ should pass tx_invalid vector 23 ✓ should pass tx_invalid vector 24 ✓ should pass tx_invalid vector 25 ✓ should pass tx_invalid vector 26 ✓ should pass tx_invalid vector 27 ✓ should pass tx_invalid vector 28 ✓ should pass tx_invalid vector 29 ✓ should pass tx_invalid vector 30 ✓ should pass tx_invalid vector 31 ✓ should pass tx_invalid vector 32 ✓ should pass tx_invalid vector 33 ✓ should pass tx_invalid vector 34 ✓ should pass tx_invalid vector 35 ✓ should pass tx_invalid vector 36 ✓ should pass tx_invalid vector 37 ✓ should pass tx_invalid vector 38 ✓ should pass tx_invalid vector 39 ✓ should pass tx_invalid vector 40 Script ✓ should make a new script #fromBuffer ✓ should parse this buffer containing an OP code ✓ should parse this buffer containing another OP code ✓ should parse this buffer containing three bytes of data ✓ should parse this buffer containing OP_PUSHDATA1 and three bytes of data ✓ should parse this buffer containing OP_PUSHDATA2 and three bytes of data ✓ should parse this buffer containing OP_PUSHDATA4 and three bytes of data ✓ should parse this buffer an OP code, data, and another OP code #toBuffer ✓ should output this buffer containing an OP code ✓ should output this buffer containing another OP code ✓ should output this buffer containing three bytes of data ✓ should output this buffer containing OP_PUSHDATA1 and three bytes of data ✓ should output this buffer containing OP_PUSHDATA2 and three bytes of data ✓ should output this buffer containing OP_PUSHDATA4 and three bytes of data ✓ should output this buffer an OP code, data, and another OP code #fromASM ✓ should parse this known script in ASM #fromString ✓ should parse these known scripts #toString ✓ should work with an empty script ✓ should output this buffer an OP code, data, and another OP code ✓ should output this known script as ASM toHex ✓ should return an hexa string "03010203" as expected from [3, 1, 2, 3] #isDataOut ✓ should know this is a (blank) OP_RETURN script ✓ validates that this 40-byte OP_RETURN is standard ✓ validates that this 80-byte OP_RETURN is standard ✓ validates that this 40-byte long OP_CHECKMULTISIG is not standard op_return ✓ validates that this 81-byte OP_RETURN is not a valid standard OP_RETURN #isPublicKeyIn ✓ correctly identify scriptSig as a public key in #isPublicKeyHashIn ✓ should identify this known pubkeyhashin (uncompressed pubkey version) ✓ should identify this known pubkeyhashin (hybrid pubkey version w/06) ✓ should identify this known pubkeyhashin (hybrid pubkey version w/07) ✓ should identify this known pubkeyhashin (compressed pubkey w/ 0x02) ✓ should identify this known pubkeyhashin (compressed pubkey w/ 0x03) ✓ should identify this known non-pubkeyhashin (bad ops length) ✓ should identify this known pubkey ✓ should identify this known non-pubkeyhashin (bad version) ✓ should identify this known non-pubkeyhashin (bad signature version) ✓ should identify this known non-pubkeyhashin (no public key) ✓ should identify this known non-pubkeyhashin (no signature) #isPublicKeyHashOut ✓ should identify this known pubkeyhashout as pubkeyhashout ✓ should identify this known non-pubkeyhashout as not pubkeyhashout 1 ✓ should identify this known non-pubkeyhashout as not pubkeyhashout 2 #isMultisigOut ✓ should identify known multisig out 1 ✓ should identify known multisig out 2 ✓ should identify known multisig out 3 ✓ should identify non-multisig out 1 ✓ should identify non-multisig out 2 #isMultisigIn ✓ should identify multisig in 1 ✓ should identify multisig in 2 ✓ should identify non-multisig in 1 ✓ should identify non-multisig in 2 #isScriptHashIn ✓ should identify this known scripthashin ✓ should identify this known non-scripthashin ✓ should identify this problematic non-scripthashin scripts ✓ identifies this other problematic non-p2sh in #isScripthashOut ✓ should identify this known p2shout as p2shout ✓ should identify result of .isScriptHashOut() as p2sh ✓ should identify these known non-p2shout as not p2shout #isPushOnly ✓ should know these scripts are or aren't push only #classifyInput ✓ shouldn't classify public key hash out ✓ should classify public key hash in ✓ shouldn't classify script hash out ✓ should classify script hash in ✓ shouldn't classify MULTISIG out ✓ should classify MULTISIG in ✓ shouldn't classify OP_RETURN data out ✓ shouldn't classify public key out ✓ should classify public key in ✓ should classify unknown ✓ should classify scriptHashIn, eventhough it's opreturn #classifyOutput ✓ should classify public key hash out ✓ shouldn't classify public key hash in ✓ should classify script hash out ✓ shouldn't classify script hash in ✓ should classify MULTISIG out ✓ shouldn't classify MULTISIG in ✓ should classify OP_RETURN data out ✓ should classify public key out ✓ shouldn't classify public key in ✓ should classify unknown ✓ should classify opreturn eventhough it also looks like a scriptHashIn #classify ✓ should classify public key hash out ✓ should classify public key hash in ✓ should classify script hash out ✓ should classify script hash in ✓ should classify MULTISIG out ✓ should classify MULTISIG in ✓ should classify OP_RETURN data out ✓ should classify public key out ✓ should classify public key in ✓ should classify unknown ✓ should classify opreturn eventhough it also looks like a scriptHashIn ✓ should classify scriptHashIn eventhough it is opreturn when script is marked is input ✓ should classify unknown eventhough it is public key hash when marked as input ✓ should classify unknown eventhough it is public key hash in when marked as output #add and #prepend ✓ should add these ops ✓ should prepend these ops ✓ should add and prepend correctly ✓ should add these push data ✓ should add both pushdata and non-pushdata chunks ✓ should work for no data OP_RETURN ✓ works with objects ✓ works with another script ✓ fails with wrong type #isStandard ✓ should classify correctly standard script ✓ should classify correctly non standard script #buildMultisigOut ✓ should create sorted script by default ✓ should fail when number of required signatures is greater than number of pubkeys ✓ should create unsorted script if specified ✓ should create 1-of-1 ✓ should create 1-of-2 ✓ should create 2-of-2 ✓ should create 1-of-3 (52ms) ✓ should create 2-of-3 (51ms) ✓ should create 3-of-3 (52ms) ✓ should create 1-of-4 (68ms) ✓ should create 2-of-4 (70ms) ✓ should create 3-of-4 (70ms) ✓ should create 4-of-4 (77ms) ✓ should create 1-of-5 (97ms) ✓ should create 2-of-5 (89ms) ✓ should create 3-of-5 (87ms) ✓ should create 4-of-5 (85ms) ✓ should create 5-of-5 (86ms) #buildPublicKeyHashOut ✓ should create script from livenet address ✓ should create script from testnet address ✓ should create script from public key #buildPublicKeyOut ✓ should create script from public key #buildDataOut ✓ should create script from no data ✓ should create script from empty data ✓ should create script from some data ✓ should create script from string ✓ should create script from a hex string #buildScriptHashOut ✓ should create script from another script ✓ inherits network property from other script ✓ inherits network property form an address #toScriptHashOut ✓ should create script from another script #removeCodeseparators ✓ should remove any OP_CODESEPARATORs #findAndDelete ✓ should find and delete this buffer ✓ should do nothing #checkMinimalPush ✓ should check these minimal pushes getData returns associated data ✓ works with this testnet transaction ✓ for a P2PKH address ✓ for a P2SH address ✓ for a standard opreturn output ✓ fails if content is not recognized toAddress ✓ priorize the network argument ✓ use the inherited network ✓ uses default network ✓ for a P2PKH address ✓ for a P2SH address ✓ fails if content is not recognized ✓ works for p2pkh output ✓ works for p2pkh input ✓ works for p2sh output ✓ works for p2sh input ✓ works for OP_RETURN script equals ✓ returns true for same script ✓ returns false for different chunks sizes ✓ returns false for different opcodes ✓ returns false for different data ✓ returns false for different data #getSignatureOperationsCount ✓ should return zero for empty scripts ✓ should handle multi-sig multisig scripts from string ✓ should handle multi-sig-out scripts from utility function (53ms) ✓ should handle P2SH-multisig-in scripts from utility (52ms) ✓ should default the one and only argument to true Transaction deserialization valid transaction test case ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 ✓ vector #0 invalid transaction test case ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 ✓ invalid vector #0 Output ✓ throws error with unrecognized argument ✓ can be assigned a satoshi amount in big number ✓ can be assigned a satoshi amount with a string ✓ deserializes correctly a simple output ✓ can instantiate from an object ✓ can set a script from a buffer ✓ has a inspect property ✓ toBufferWriter ✓ roundtrips to/from object ✓ toObject will handle an invalid (null) script ✓ #toObject roundtrip will handle an invalid (null) script ✓ inspect will work with an invalid (null) script ✓ roundtrips to/from JSON ✓ setScript fails with invalid input ✓ sets script to null if it is an InvalidBuffer ✓ should throw an error if Script throws an error that is not InvalidBuffer will error if output is not a positive integer ✓ -100 ✓ 1.1 ✓ NaN ✓ Infinity sighash ✓ test vector from bitcoind #1 (31af167a6cf3f9d5) ✓ test vector from bitcoind #2 (48d6a1bd2cd9eec5) ✓ test vector from bitcoind #3 (2a3d95b09237b720) ✓ test vector from bitcoind #4 (06e328de263a87b0) ✓ test vector from bitcoind #5 (f03aa4fc5f97e826) ✓ test vector from bitcoind #6 (746306f322de2b4b) ✓ test vector from bitcoind #7 (5c9d3a2ce9365bb7) ✓ test vector from bitcoind #8 (c336b2f7d3702fbb) ✓ test vector from bitcoind #9 (29aa6d2d752d3310) ✓ test vector from bitcoind #10 (bf5fdc314ded2372) ✓ test vector from bitcoind #11 (191ab180b0d75376) ✓ test vector from bitcoind #12 (b6632ac53578a741) ✓ test vector from bitcoind #13 (6e3735d37a4b28c4) ✓ test vector from bitcoind #14 (d76d0fc0abfa72d6) ✓ test vector from bitcoind #15 (6e48f3da3a4ac07e) ✓ test vector from bitcoind #16 (c6076b6a45e6fcfb) ✓ test vector from bitcoind #17 (aeb8c5a62e8a0b57) ✓ test vector from bitcoind #18 (a6e6cb69f409ec14) ✓ test vector from bitcoind #19 (7ca0f75e6530ec9f) ✓ test vector from bitcoind #20 (58294f0d7f2e68fe) ✓ test vector from bitcoind #21 (8b300032a1915a4a) ✓ test vector from bitcoind #22 (d55ed1e6c53510f2) ✓ test vector from bitcoind #23 (2765bbdcd3ebb8b1) ✓ test vector from bitcoind #24 (663c999a52288c99) ✓ test vector from bitcoind #25 (b9c3aee8515a4a3b) ✓ test vector from bitcoind #26 (be567cb47170b34f) ✓ test vector from bitcoind #27 (2149e79c3f4513da) ✓ test vector from bitcoind #28 (32db877b6b1ca556) ✓ test vector from bitcoind #29 (edf73e2396694e58) ✓ test vector from bitcoind #30 (f0a2deee7fd8a3a9) ✓ test vector from bitcoind #31 (aa418d096929394c) ✓ test vector from bitcoind #32 (eb9ceecc3b401224) ✓ test vector from bitcoind #33 (88fdee1c2d4aeead) ✓ test vector from bitcoind #34 (f6a1ecb50bd7c259) ✓ test vector from bitcoind #35 (f7efb74b1dcc49d3) ✓ test vector from bitcoind #36 (f2286001af0b0170) ✓ test vector from bitcoind #37 (30df2473e1403e2b) ✓ test vector from bitcoind #38 (7f21b62267ed5246) ✓ test vector from bitcoind #39 (8af0b4cbdbc011be) ✓ test vector from bitcoind #40 (40ed8e7bbbd893e1) ✓ test vector from bitcoind #41 (136beb95459fe6b1) ✓ test vector from bitcoind #42 (9eb8adf2caecb4bf) ✓ test vector from bitcoind #43 (5ca70e727d91b1a4) ✓ test vector from bitcoind #44 (2be27a686eb7940d) ✓ test vector from bitcoind #45 (49c8a6940a461cc7) ✓ test vector from bitcoind #46 (7f208df9a5507e98) ✓ test vector from bitcoind #47 (5fa09d43c8aef6f6) ✓ test vector from bitcoind #48 (713ddeeefcfe0492) ✓ test vector from bitcoind #49 (fe42f73a8742676e) ✓ test vector from bitcoind #50 (551ce975d58647f1) ✓ test vector from bitcoind #51 (069f38fd5d47abff) ✓ test vector from bitcoind #52 (6da32416deb45a0d) ✓ test vector from bitcoind #53 (76c4013c40bfa148) ✓ test vector from bitcoind #54 (fb7eca81d816354b) ✓ test vector from bitcoind #55 (8085e904164ab9a8) ✓ test vector from bitcoind #56 (9db4e320208185ee) ✓ test vector from bitcoind #57 (0133f1a161363b71) ✓ test vector from bitcoind #58 (d1df1f4bba2484cf) ✓ test vector from bitcoind #59 (40b4f03c68288bdc) ✓ test vector from bitcoind #60 (2ef025e907f0fa45) ✓ test vector from bitcoind #61 (1f8a3aca573a609f) ✓ test vector from bitcoind #62 (0d17a92c8d5041ba) ✓ test vector from bitcoind #63 (8221d5dfb75fc301) ✓ test vector from bitcoind #64 (13e8b5ab4e5b2cee) ✓ test vector from bitcoind #65 (87ddf1f9acb66404) ✓ test vector from bitcoind #66 (da8405db28726dc4) ✓ test vector from bitcoind #67 (ed53cc766cf7cb80) ✓ test vector from bitcoind #68 (e1a2568540999070) ✓ test vector from bitcoind #69 (abe441209165d25b) ✓ test vector from bitcoind #70 (0dd1bd5c25533bf5) ✓ test vector from bitcoind #71 (73fe22099c826c34) ✓ test vector from bitcoind #72 (eea96a48ee572aea) ✓ test vector from bitcoind #73 (5ec805e74ee934aa) ✓ test vector from bitcoind #74 (42f5ba6f5fe1e00e) ✓ test vector from bitcoind #75 (8449d5247071325e) ✓ test vector from bitcoind #76 (f98f95d0c5ec3ac3) ✓ test vector from bitcoind #77 (f79e6b776e2592ba) ✓ test vector from bitcoind #78 (771d4d87f1591a13) ✓ test vector from bitcoind #79 (726bb88cdf3af2f7) ✓ test vector from bitcoind #80 (1e0da47eedbbb381) ✓ test vector from bitcoind #81 (55591346aec65298) ✓ test vector from bitcoind #82 (f5b38b0f06e246e4) ✓ test vector from bitcoind #83 (eb2d8dea38e9175d) ✓ test vector from bitcoind #84 (13d12a51598b3485) ✓ test vector from bitcoind #85 (53ab197fa7e27b8a) ✓ test vector from bitcoind #86 (93c34627f526d73f) ✓ test vector from bitcoind #87 (bbc9069b8615f3a5) ✓ test vector from bitcoind #88 (5848d93491044d7f) ✓ test vector from bitcoind #89 (603a9b61cd30fcea) ✓ test vector from bitcoind #90 (3b320dd47f270245) ✓ test vector from bitcoind #91 (079fa62e9d9d7654) ✓ test vector from bitcoind #92 (2921a0e5e3ba83c5) ✓ test vector from bitcoind #93 (4aae6648f856994b) ✓ test vector from bitcoind #94 (3f988922d8cd11c7) ✓ test vector from bitcoind #95 (bd36a50e0e0a4ecb) ✓ test vector from bitcoind #96 (41bead1b073e1e9f) ✓ test vector from bitcoind #97 (71dfcd2eb7f2e647) ✓ test vector from bitcoind #98 (0d31a221c69bd322) ✓ test vector from bitcoind #99 (daec2af5622bbe22) ✓ test vector from bitcoind #100 (75a7db0df41485a2) ✓ test vector from bitcoind #101 (ced7ef84aad4097e) ✓ test vector from bitcoind #102 (c503001c16fbff82) ✓ test vector from bitcoind #103 (e84444d91580da41) ✓ test vector from bitcoind #104 (ef4bd7622eb7b2bb) ✓ test vector from bitcoind #105 (4012f5ff2f1238a0) ✓ test vector from bitcoind #106 (e1600e6df8a6160a) ✓ test vector from bitcoind #107 (05cf0ec9c61f1a15) ✓ test vector from bitcoind #108 (d309da5afd91b7af) ✓ test vector from bitcoind #109 (72b7da10704c3ca7) ✓ test vector from bitcoind #110 (393aa6c758e0eed1) ✓ test vector from bitcoind #111 (60b7544319b42e41) ✓ test vector from bitcoind #112 (6a9ac3f7da4c7735) ✓ test vector from bitcoind #113 (cfe147982afacde0) ✓ test vector from bitcoind #114 (35e94b3776a6729d) ✓ test vector from bitcoind #115 (ee4ea49d2aae0dbb) ✓ test vector from bitcoind #116 (299dcaac2bdaa627) ✓ test vector from bitcoind #117 (a4c0773204ab418a) ✓ test vector from bitcoind #118 (cc180c4f797c16a6) ✓ test vector from bitcoind #119 (566953eb806d40a9) ✓ test vector from bitcoind #120 (6e6307cef4f3a9b3) ✓ test vector from bitcoind #121 (577bf2b3520b40ae) ✓ test vector from bitcoind #122 (730bc25699b46703) ✓ test vector from bitcoind #123 (66c488603b2bc53f) ✓ test vector from bitcoind #124 (051c0df7ac688c2c) ✓ test vector from bitcoind #125 (ddfd902bba312a06) ✓ test vector from bitcoind #126 (96c2b32f0a00a592) ✓ test vector from bitcoind #127 (bf078519fa87b79f) ✓ test vector from bitcoind #128 (e33d5ee08c0f3c13) ✓ test vector from bitcoind #129 (8b57a7c3170c6c02) ✓ test vector from bitcoind #130 (3cb5b030e7da0b60) ✓ test vector from bitcoind #131 (add7f5da27262f13) ✓ test vector from bitcoind #132 (883a6ea3b2cc53fe) ✓ test vector from bitcoind #133 (b5dab912bcabedff) ✓ test vector from bitcoind #134 (7fc74de39ce6ca46) ✓ test vector from bitcoind #135 (ab6baa6da3b2bc85) ✓ test vector from bitcoind #136 (91178482112f94d1) ✓ test vector from bitcoind #137 (5e1849e7368cf4f0) ✓ test vector from bitcoind #138 (e9995065e1fddef7) ✓ test vector from bitcoind #139 (0e9c47973ef2c292) ✓ test vector from bitcoind #140 (32154c09174a9906) ✓ test vector from bitcoind #141 (4605ae5fd3d50f9c) ✓ test vector from bitcoind #142 (ff9d7394002f3f19) ✓ test vector from bitcoind #143 (59fc2959bb7bb245) ✓ test vector from bitcoind #144 (e9f53d531c12cce1) ✓ test vector from bitcoind #145 (fb51eb9d7e47d32f) ✓ test vector from bitcoind #146 (57a34ddeb1bf36d2) ✓ test vector from bitcoind #147 (edb7c74223d1f10f) ✓ test vector from bitcoind #148 (f0672638a0e568a9) ✓ test vector from bitcoind #149 (722efdd69a7d51d3) ✓ test vector from bitcoind #150 (659cd3203095d4a8) ✓ test vector from bitcoind #151 (d82d4ccd9b67810f) ✓ test vector from bitcoind #152 (8eebac87e60da524) ✓ test vector from bitcoind #153 (046de666545330e5) ✓ test vector from bitcoind #154 (478ee06501b4965b) ✓ test vector from bitcoind #155 (db0329439490efc6) ✓ test vector from bitcoind #156 (92364ba3c7a85d4e) ✓ test vector from bitcoind #157 (1f4209fd4ce7f13d) ✓ test vector from bitcoind #158 (b596f206d7eba22b) ✓ test vector from bitcoind #159 (e19b796c14a03736) ✓ test vector from bitcoind #160 (6e3e5ba77f760b6b) ✓ test vector from bitcoind #161 (fad092fc98f17c2c) ✓ test vector from bitcoind #162 (5418cf059b5f1577) ✓ test vector from bitcoind #163 (0d66003aff5bf78c) ✓ test vector from bitcoind #164 (4e4c9a781f626b59) ✓ test vector from bitcoind #165 (a869c18a0edf563d) ✓ test vector from bitcoind #166 (b1c50d58b753e8f6) ✓ test vector from bitcoind #167 (6b1459536f51482f) ✓ test vector from bitcoind #168 (154ff7a9f0875edc) ✓ test vector from bitcoind #169 (849033a2321b5755) ✓ test vector from bitcoind #170 (8556fe52d1d07823) ✓ test vector from bitcoind #171 (d9684685c99ce48f) ✓ test vector from bitcoind #172 (7e975a72db5adaa3) ✓ test vector from bitcoind #173 (47bc8ab070273e1f) ✓ test vector from bitcoind #174 (f3374253d64ac264) ✓ test vector from bitcoind #175 (8d7794703dad18e2) ✓ test vector from bitcoind #176 (4e6357da0057fb7f) ✓ test vector from bitcoind #177 (83deef4a698b62a7) ✓ test vector from bitcoind #178 (98ccde2dc14d14f5) ✓ test vector from bitcoind #179 (a903c84d8c5e7113) ✓ test vector from bitcoind #180 (83c68b3c5a89260c) ✓ test vector from bitcoind #181 (9c5fa02abfd34d0f) ✓ test vector from bitcoind #182 (f0bd4ca8e97203b9) ✓ test vector from bitcoind #183 (5509eba029cc11d7) ✓ test vector from bitcoind #184 (4ca73da4fcd5f1b1) ✓ test vector from bitcoind #185 (fb018ae54206fdd2) ✓ test vector from bitcoind #186 (001b0b176f0451df) ✓ test vector from bitcoind #187 (ac87b1b93a6baab6) ✓ test vector from bitcoind #188 (0767e09bba8cd66d) ✓ test vector from bitcoind #189 (de35c84a58f2458c) ✓ test vector from bitcoind #190 (e2fa3e1976aed82c) ✓ test vector from bitcoind #191 (7de4ba875b2e584a) ✓ test vector from bitcoind #192 (6b77ca70cc452cc8) ✓ test vector from bitcoind #193 (bd7d26bb3a98fc8c) ✓ test vector from bitcoind #194 (355ccaf30697c9c5) ✓ test vector from bitcoind #195 (353ca9619ccb0210) ✓ test vector from bitcoind #196 (b35bb1b72d02fab8) ✓ test vector from bitcoind #197 (7615b4a7b3be8656) ✓ test vector from bitcoind #198 (4f2ccf981598639b) ✓ test vector from bitcoind #199 (984efe0d8d12e438) ✓ test vector from bitcoind #200 (4a74f365a161bc6c) ✓ test vector from bitcoind #201 (08bbb746a596991a) ✓ test vector from bitcoind #202 (8ca11838775822f9) ✓ test vector from bitcoind #203 (9bc5bb772c553831) ✓ test vector from bitcoind #204 (78eb6b24365ac1ed) ✓ test vector from bitcoind #205 (f6da59b9deac63e8) ✓ test vector from bitcoind #206 (04c5ee48514cd033) ✓ test vector from bitcoind #207 (2e42ead953c9f4f8) ✓ test vector from bitcoind #208 (d9096de94d70c633) ✓ test vector from bitcoind #209 (ed5622ac642d11f9) ✓ test vector from bitcoind #210 (f926d4036eac7f01) ✓ test vector from bitcoind #211 (255c125b60ee85f4) ✓ test vector from bitcoind #212 (5a0a05e32ce4cd05) ✓ test vector from bitcoind #213 (52b9e0778206af68) ✓ test vector from bitcoind #214 (b6b684e2d2ecec8a) ✓ test vector from bitcoind #215 (e5da9a416ea883be) ✓ test vector from bitcoind #216 (41ecca1e8152ec55) ✓ test vector from bitcoind #217 (ff8a4016dfdd918f) ✓ test vector from bitcoind #218 (bad77967f98941af) ✓ test vector from bitcoind #219 (df1c87cf3ba70e75) ✓ test vector from bitcoind #220 (71c294523c48fd77) ✓ test vector from bitcoind #221 (110d90fea9470dfe) ✓ test vector from bitcoind #222 (0322ca570446869e) ✓ test vector from bitcoind #223 (8b5b3d00d9c658f0) ✓ test vector from bitcoind #224 (b79f31c289e95d9d) ✓ test vector from bitcoind #225 (89ec7fab7cfe7d8d) ✓ test vector from bitcoind #226 (78e01310a228f645) ✓ test vector from bitcoind #227 (4cc85cbc2863ee7d) ✓ test vector from bitcoind #228 (2d642ceee910abff) ✓ test vector from bitcoind #229 (a17b66d6bb427f42) ✓ test vector from bitcoind #230 (8e221a6c4bf81ca0) ✓ test vector from bitcoind #231 (714d8b14699835b2) ✓ test vector from bitcoind #232 (91082410630337a5) ✓ test vector from bitcoind #233 (458aec3b5089a585) ✓ test vector from bitcoind #234 (bbed77ff0f808aa8) ✓ test vector from bitcoind #235 (3212c6d6dd8d9d3b) ✓ test vector from bitcoind #236 (c40fd7dfa72321ac) ✓ test vector from bitcoind #237 (919144aada50db86) ✓ test vector from bitcoind #238 (305fc8ff5dc04ebd) ✓ test vector from bitcoind #239 (2420dd722e229ecc) ✓ test vector from bitcoind #240 (4370d05c07e231d6) ✓ test vector from bitcoind #241 (2f9993e0a84a6ca5) ✓ test vector from bitcoind #242 (02040283ef2291d8) ✓ test vector from bitcoind #243 (f24be499c58295f3) ✓ test vector from bitcoind #244 (1c8655969b241e71) ✓ test vector from bitcoind #245 (94338cd47a4639be) ✓ test vector from bitcoind #246 (60caf46a7625f303) ✓ test vector from bitcoind #247 (c834a5485e68dc13) ✓ test vector from bitcoind #248 (99b32b5679d91e0f) ✓ test vector from bitcoind #249 (5071f8acf96aea41) ✓ test vector from bitcoind #250 (9cb0dd04e9fe287b) ✓ test vector from bitcoind #251 (47207b4877772753) ✓ test vector from bitcoind #252 (b8f3d255549909c0) ✓ test vector from bitcoind #253 (ad01ec9d6dbae325) ✓ test vector from bitcoind #254 (595a3c0225456463) ✓ test vector from bitcoind #255 (9c051a7092fe17fa) ✓ test vector from bitcoind #256 (4d8efb3b99b9064d) ✓ test vector from bitcoind #257 (a638cc17fd91f4b1) ✓ test vector from bitcoind #258 (c10ccc9db8a92d7d) ✓ test vector from bitcoind #259 (0ca673a1ee66f962) ✓ test vector from bitcoind #260 (2c8be597620d95ab) ✓ test vector from bitcoind #261 (26b22e18d5d9081f) ✓ test vector from bitcoind #262 (8e0697d8cd8a9cce) ✓ test vector from bitcoind #263 (7cda43f1ff9191c6) ✓ test vector from bitcoind #264 (4435e62ff6531ac7) ✓ test vector from bitcoind #265 (913060c7454e6c80) ✓ test vector from bitcoind #266 (bae189eb3d64aedb) ✓ test vector from bitcoind #267 (cfeaa36790bc3987) ✓ test vector from bitcoind #268 (ec91eda1149f75bf) ✓ test vector from bitcoind #269 (3aad18a209fab8db) ✓ test vector from bitcoind #270 (86970af23c89b72a) ✓ test vector from bitcoind #271 (d0c4a780e4e0bc22) ✓ test vector from bitcoind #272 (fb4bd26a91b5cf22) ✓ test vector from bitcoind #273 (8e795aeef18f510d) ✓ test vector from bitcoind #274 (b6ed4a3721be3c3c) ✓ test vector from bitcoind #275 (935892c6f02948f3) ✓ test vector from bitcoind #276 (30c4cd4bd6b291f7) ✓ test vector from bitcoind #277 (2707ca714af09494) ✓ test vector from bitcoind #278 (4abce77432a86dfe) ✓ test vector from bitcoind #279 (48411efeb133c6b7) ✓ test vector from bitcoind #280 (b575a04b0bb56e38) ✓ test vector from bitcoind #281 (fc93cc056c70d5e0) ✓ test vector from bitcoind #282 (e095003ca82af897) ✓ test vector from bitcoind #283 (c6ec1b7cb5c16a1b) ✓ test vector from bitcoind #284 (5eeb03e03806cd7b) ✓ test vector from bitcoind #285 (b8db8d57fe40ab3a) ✓ test vector from bitcoind #286 (c6675bf229737e00) ✓ test vector from bitcoind #287 (205f3653f0142b35) ✓ test vector from bitcoind #288 (3275e98dca37243b) ✓ test vector from bitcoind #289 (508129278ef07b43) ✓ test vector from bitcoind #290 (fe516df92299e995) ✓ test vector from bitcoind #291 (d582c442e0ecc400) ✓ test vector from bitcoind #292 (f151f1ec305f698d) ✓ test vector from bitcoind #293 (d1b1d79001b4a032) ✓ test vector from bitcoind #294 (1d25d16d84d5793b) ✓ test vector from bitcoind #295 (f3bbab70b759fe6c) ✓ test vector from bitcoind #296 (41617b27321a830c) ✓ test vector from bitcoind #297 (20fd0eee5b5716d6) ✓ test vector from bitcoind #298 (ba0a2c987fcdd74b) ✓ test vector from bitcoind #299 (62cd3413d9d819fb) ✓ test vector from bitcoind #300 (37ed6fae36fcb336) ✓ test vector from bitcoind #301 (1c9d6816c2086584) ✓ test vector from bitcoind #302 (249c4513a49076c6) ✓ test vector from bitcoind #303 (2cc1c7514fdc512f) ✓ test vector from bitcoind #304 (6beca0e0388f824c) ✓ test vector from bitcoind #305 (5990b13945184734) ✓ test vector from bitcoind #306 (dbc7935d718328d2) ✓ test vector from bitcoind #307 (793a3d3c37f6494f) ✓ test vector from bitcoind #308 (b5bd080bbcb8cd65) ✓ test vector from bitcoind #309 (0c1fd44476ff28bf) ✓ test vector from bitcoind #310 (86f26e23822afd1b) ✓ test vector from bitcoind #311 (3cd85f84aae6d702) ✓ test vector from bitcoind #312 (961ff413850336d3) ✓ test vector from bitcoind #313 (e88ed2eea9143f25) ✓ test vector from bitcoind #314 (b8f1e1f35e3e1368) ✓ test vector from bitcoind #315 (c49af297dffe2d80) ✓ test vector from bitcoind #316 (18da6ceb011cd36f) ✓ test vector from bitcoind #317 (3078b1d1a7713c6d) ✓ test vector from bitcoind #318 (0e0bed1bf2ff255a) ✓ test vector from bitcoind #319 (ab61497afd39e61f) ✓ test vector from bitcoind #320 (680336db57347d81) ✓ test vector from bitcoind #321 (1c29f110576f4a3b) ✓ test vector from bitcoind #322 (c670219a93234929) ✓ test vector from bitcoind #323 (716a8180e417228f) ✓ test vector from bitcoind #324 (d36ee79fc80db2e6) ✓ test vector from bitcoind #325 (eacc47c5a53734d6) ✓ test vector from bitcoind #326 (59a34b3ed3a1cce0) ✓ test vector from bitcoind #327 (643a7b4c8d832e14) ✓ test vector from bitcoind #328 (56d29f5e300ddfed) ✓ test vector from bitcoind #329 (1536da582a0b6de0) ✓ test vector from bitcoind #330 (6cf9cd409b7185b1) ✓ test vector from bitcoind #331 (1efbf3d37a92bc03) ✓ test vector from bitcoind #332 (0898b26dd3ca0863) ✓ test vector from bitcoind #333 (979782dc3f36d908) ✓ test vector from bitcoind #334 (674a4bcb04247f8d) ✓ test vector from bitcoind #335 (3afacaca0ef6be9d) ✓ test vector from bitcoind #336 (241a23e7b1982d5f) ✓ test vector from bitcoind #337 (1326a46f4c21e761) ✓ test vector from bitcoind #338 (1ddaab7f973551d7) ✓ test vector from bitcoind #339 (925037c7dc7625f3) ✓ test vector from bitcoind #340 (7e058ca5dd07640e) ✓ test vector from bitcoind #341 (49870a961263354c) ✓ test vector from bitcoind #342 (eea7d2212bda2d40) ✓ test vector from bitcoind #343 (0090803a20102a77) ✓ test vector from bitcoind #344 (5c46f7ac3d6460af) ✓ test vector from bitcoind #345 (9cf05990421ea853) ✓ test vector from bitcoind #346 (fd44fc98639ca32c) ✓ test vector from bitcoind #347 (9a95e692e1f78efd) ✓ test vector from bitcoind #348 (62a36c6e8da03720) ✓ test vector from bitcoind #349 (476868cecd1763c9) ✓ test vector from bitcoind #350 (f64f805f0ff7f237) ✓ test vector from bitcoind #351 (c2cefaec2293134a) ✓ test vector from bitcoind #352 (d66924d49f03a696) ✓ test vector from bitcoind #353 (502967a6f999f7ee) ✓ test vector from bitcoind #354 (f58637277d2bc42e) ✓ test vector from bitcoind #355 (b098eb9aff1bbd37) ✓ test vector from bitcoind #356 (19dd32190ed2a37b) ✓ test vector from bitcoind #357 (3a1c6742d4c374f0) ✓ test vector from bitcoind #358 (9afe3f4978df6a86) ✓ test vector from bitcoind #359 (6629a1e75c6ae8f4) ✓ test vector from bitcoind #360 (818a7ceaf963f52b) ✓ test vector from bitcoind #361 (dfcf484111801989) ✓ test vector from bitcoind #362 (d0f32a6db43378af) ✓ test vector from bitcoind #363 (68c7bd717b399b1e) ✓ test vector from bitcoind #364 (978dc178ecd03d40) ✓ test vector from bitcoind #365 (0d936cceda2f56c7) ✓ test vector from bitcoind #366 (2f9b734860033651) ✓ test vector from bitcoind #367 (cfa4b7573559b3b1) ✓ test vector from bitcoind #368 (880330ccde009915) ✓ test vector from bitcoind #369 (bde3dd0575164d7e) ✓ test vector from bitcoind #370 (a3d65a8cd0c1eea8) ✓ test vector from bitcoind #371 (4eba3055bc2b5876) ✓ test vector from bitcoind #372 (6b80d74eb0e7ee59) ✓ test vector from bitcoind #373 (164c32a263f357e3) ✓ test vector from bitcoind #374 (8858bb47a042243f) ✓ test vector from bitcoind #375 (c84fcaf9d779df73) ✓ test vector from bitcoind #376 (e562579d1a2b10d1) ✓ test vector from bitcoind #377 (fa4676c374ae3a41) ✓ test vector from bitcoind #378 (e8e10ed162b1a43b) ✓ test vector from bitcoind #379 (a5bc0356f56b2b41) ✓ test vector from bitcoind #380 (556c3f90aa81f9b4) ✓ test vector from bitcoind #381 (0ef7b6e87c782fa3) ✓ test vector from bitcoind #382 (a7aa34bf8a5644f0) ✓ test vector from bitcoind #383 (bc46f3f83058ddf5) ✓ test vector from bitcoind #384 (f804fc4d81f03900) ✓ test vector from bitcoind #385 (270445ab77258ced) ✓ test vector from bitcoind #386 (4a3415eb1677ae4e) ✓ test vector from bitcoind #387 (d60bbadd2cc06741) ✓ test vector from bitcoind #388 (b276584d3514e5b4) ✓ test vector from bitcoind #389 (f1f2a489682e42a6) ✓ test vector from bitcoind #390 (bdfaff8a4e775379) ✓ test vector from bitcoind #391 (c629d93b02037f40) ✓ test vector from bitcoind #392 (c1c7df8206e661d5) ✓ test vector from bitcoind #393 (39c2aaa2496212b3) ✓ test vector from bitcoind #394 (877e347ec7487497) ✓ test vector from bitcoind #395 (47585dc25469d04f) ✓ test vector from bitcoind #396 (09ed6563a454814a) ✓ test vector from bitcoind #397 (c19caada8e71535e) ✓ test vector from bitcoind #398 (6a815ba155270af1) ✓ test vector from bitcoind #399 (552ff97d7924f51c) ✓ test vector from bitcoind #400 (e9a7f21fc2d38be7) ✓ test vector from bitcoind #401 (cdf51f6e3a9dc2be) ✓ test vector from bitcoind #402 (62094f98234a05bf) ✓ test vector from bitcoind #403 (d37532e7b2b8e7db) ✓ test vector from bitcoind #404 (5cef9d8e18a2d5a7) ✓ test vector from bitcoind #405 (26dc2cba4bd5334e) ✓ test vector from bitcoind #406 (3e5aa0200248d8d8) ✓ test vector from bitcoind #407 (b5280b9610c0625a) ✓ test vector from bitcoind #408 (04c9ef72f33668ca) ✓ test vector from bitcoind #409 (8f07ece7d65e509f) ✓ test vector from bitcoind #410 (e2358dfb51831ee8) ✓ test vector from bitcoind #411 (502a2435fd02898d) ✓ test vector from bitcoind #412 (7ba99b289c04718a) ✓ test vector from bitcoind #413 (92d53b4390262e6b) ✓ test vector from bitcoind #414 (5d366a7f4346ae18) ✓ test vector from bitcoind #415 (bbee941bbad95042) ✓ test vector from bitcoind #416 (5c5a9c3a5de7dc7a) ✓ test vector from bitcoind #417 (a3bdf8771c899097) ✓ test vector from bitcoind #418 (8c29ea8ef60c5a92) ✓ test vector from bitcoind #419 (d5f1c1cb35956a57) ✓ test vector from bitcoind #420 (37b794b05d0687c9) ✓ test vector from bitcoind #421 (ea117348e94de863) ✓ test vector from bitcoind #422 (a7aff48f3b8aeb7a) ✓ test vector from bitcoind #423 (0a281172d306b6a3) ✓ test vector from bitcoind #424 (82ebc07b16cff007) ✓ test vector from bitcoind #425 (418acc156c2bc76a) ✓ test vector from bitcoind #426 (228ca52a0a376fe0) ✓ test vector from bitcoind #427 (d2fa7e13c34cecda) ✓ test vector from bitcoind #428 (499da7d74032388f) ✓ test vector from bitcoind #429 (1125645b49202dca) ✓ test vector from bitcoind #430 (5350a31ac954a0b4) ✓ test vector from bitcoind #431 (3c05473a816621a3) ✓ test vector from bitcoind #432 (936eff8cdfd771be) ✓ test vector from bitcoind #433 (69c0b30f4c630a6c) ✓ test vector from bitcoind #434 (f8757fbb4448ca34) ✓ test vector from bitcoind #435 (e7d873aa079a19ec) ✓ test vector from bitcoind #436 (311094b4d73e31ae) ✓ test vector from bitcoind #437 (06277201504e6bf8) ✓ test vector from bitcoind #438 (7912573937824058) ✓ test vector from bitcoind #439 (24cb420a53b4f8bb) ✓ test vector from bitcoind #440 (69264faadcd1a581) ✓ test vector from bitcoind #441 (bd0e88829afa6bdc) ✓ test vector from bitcoind #442 (f99c29a79f1d73d2) ✓ test vector from bitcoind #443 (9615541884dfb1fe) ✓ test vector from bitcoind #444 (6e3f97955490d93d) ✓ test vector from bitcoind #445 (b3b336de141d4f07) ✓ test vector from bitcoind #446 (7928ae8e86c0b0ca) ✓ test vector from bitcoind #447 (4a92fec1eb03f5bd) ✓ test vector from bitcoind #448 (8b7dd0ff12ca0d8f) ✓ test vector from bitcoind #449 (8bb7a0129eaf4b8f) ✓ test vector from bitcoind #450 (55acd8293ed0be67) ✓ test vector from bitcoind #451 (b362da5634f20be7) ✓ test vector from bitcoind #452 (2b822737c2affeef) ✓ test vector from bitcoind #453 (20732d5073805419) ✓ test vector from bitcoind #454 (685d67d84755906d) ✓ test vector from bitcoind #455 (123916c6485cf23b) ✓ test vector from bitcoind #456 (f43378a0b7822ad6) ✓ test vector from bitcoind #457 (ff18c5bffd086e00) ✓ test vector from bitcoind #458 (cb6e4322955af12e) ✓ test vector from bitcoind #459 (e8d89a302ae62689) ✓ test vector from bitcoind #460 (0278adbcc476d135) ✓ test vector from bitcoind #461 (b7ca991ab2e20d01) ✓ test vector from bitcoind #462 (437e89bb6f70fd2e) ✓ test vector from bitcoind #463 (535ba819d74770d4) ✓ test vector from bitcoind #464 (d4737f3b58f3e508) ✓ test vector from bitcoind #465 (3282a2ec6b8c87c9) ✓ test vector from bitcoind #466 (55611a5fb1483bce) ✓ test vector from bitcoind #467 (b3ff10f21e71ebc8) ✓ test vector from bitcoind #468 (9b360c3310d55c84) ✓ test vector from bitcoind #469 (2f482b97178f1728) ✓ test vector from bitcoind #470 (6390ab0963cf611e) ✓ test vector from bitcoind #471 (f77c3322c97b1681) ✓ test vector from bitcoind #472 (5299b0fb7fc16f40) ✓ test vector from bitcoind #473 (67483ee62516be17) ✓ test vector from bitcoind #474 (48315a95e49277ab) ✓ test vector from bitcoind #475 (74d6a2fa7866fd8b) ✓ test vector from bitcoind #476 (1bc8ad76f9b7c366) ✓ test vector from bitcoind #477 (a575fa4f59a8e90c) ✓ test vector from bitcoind #478 (a72a760b361af418) ✓ test vector from bitcoind #479 (2c45d021db545df7) ✓ test vector from bitcoind #480 (32f3c012eca9a823) ✓ test vector from bitcoind #481 (c76146f68f430372) ✓ test vector from bitcoind #482 (1d849b92eedb9bf2) ✓ test vector from bitcoind #483 (bbee17c858251474) ✓ test vector from bitcoind #484 (84af1623366c4db6) ✓ test vector from bitcoind #485 (ccfdba36d9445f44) ✓ test vector from bitcoind #486 (5532717402a2da01) ✓ test vector from bitcoind #487 (9a0435996cc58bdb) ✓ test vector from bitcoind #488 (1d1757a782cb5860) ✓ test vector from bitcoind #489 (e69dba3efb5c02af) ✓ test vector from bitcoind #490 (b0dc030661783dd9) ✓ test vector from bitcoind #491 (1dec0d5eb921bf5b) ✓ test vector from bitcoind #492 (0a2ff41f6d155d8d) ✓ test vector from bitcoind #493 (e05e3d383631a7ed) ✓ test vector from bitcoind #494 (e657e2c8ec4ebc76) ✓ test vector from bitcoind #495 (da86c260d42a6923) ✓ test vector from bitcoind #496 (397c68803b7ce953) ✓ test vector from bitcoind #497 (fe1dc9e8554deecf) ✓ test vector from bitcoind #498 (950f4b4f72ccdf8a) ✓ test vector from bitcoind #499 (d5981bd4467817c1) ✓ test vector from bitcoind #500 (076b9f844f6ae429) TransactionSignature ✓ can be created without the `new` keyword (61ms) ✓ can be retrieved from Transaction#getSignatures ✓ fails when trying to create from invalid arguments ✓ returns the same object if called with a TransactionSignature ✓ gets returned by a P2SH multisig output (51ms) ✓ can be aplied to a Transaction with Transaction#addSignature (54ms) serialization ✓ serializes to an object and roundtrips correctly (59ms) ✓ can be deserialized with fromObject (61ms) ✓ can deserialize when signature is a buffer (59ms) ✓ can roundtrip to/from json (94ms) ✓ can parse a previously known json string ✓ can deserialize a previously known object (38ms) Transaction ✓ should serialize and deserialize correctly a given transaction ✓ fails if an invalid parameter is passed to constructor ✓ can serialize to a plain javascript object ✓ will not accept NaN as an amount ✓ returns the fee correctly ✓ will return zero as the fee for a coinbase ✓ serialize to Object roundtrip ✓ toObject/fromObject with signatures and custom fee (54ms) ✓ toObject/fromObject with p2sh signatures and custom fee (198ms) ✓ fromObject with pay-to-public-key previous outputs ✓ constructor returns a shallow copy of another transaction ✓ should display correctly in console ✓ standard hash of transaction should be decoded correctly ✓ serializes an empty transaction ✓ serializes and deserializes correctly ✓ handles anyone-can-spend utxo ✓ handles unsupported utxo in tx object ✓ will error if object hash does not match transaction hash transaction creation test vector ✓ case 1 (53ms) ✓ case 2 (51ms) ✓ case 3 (104ms) ✓ case 4 (53ms) 2) case 5 3) case 6 adding inputs ✓ adds just once one utxo isFullySigned ✓ works for normal p2pkh (56ms) ✓ fails when Inputs are not subclassed and isFullySigned is called ✓ fails when Inputs are not subclassed and verifySignature is called ✓ passes result of input.isValidSignature change address ✓ can calculate simply the output amount (54ms) ✓ accepts a P2SH address for change (52ms) ✓ can recalculate the change amount (105ms) ✓ adds no fee if no change is available (52ms) ✓ adds no fee if no money is available (52ms) ✓ fee can be set up manually (54ms) ✓ fee per kb can be set up manually (397ms) ✓ if satoshis are invalid (54ms) ✓ if fee is too small, fail serialization (55ms) ✓ on second call to sign, change is not recalculated (109ms) ✓ getFee() returns the difference between inputs and outputs if no change address set serialization ✓ stores the change address correctly ✓ can avoid checked serialize ✓ stores the fee set by the user checked serialize ✓ fails if no change address was set ✓ fails if a high fee was set ✓ fails if a dust output is created (54ms) ✓ doesn't fail if a dust output is not dust (54ms) ✓ doesn't fail if a dust output is an op_return (55ms) ✓ fails when outputs and fee don't add to total input (55ms) ✓ checks output amount before fee errors ✓ will throw fee error with disableMoreOutputThanInput enabled (but not triggered) skipping checks ✓ can skip the check for too much fee (55ms) ✓ can skip the check for a fee that is too small (54ms) ✓ can skip the check that prevents dust outputs (52ms) ✓ can skip the check that prevents unsigned outputs ✓ can skip the check that avoids spending more bitcoins than the inputs for a transaction (56ms) #verify ✓ not if _satoshis and _satoshisBN have different values ✓ not if _satoshis is negative ✓ not if transaction is greater than max block size ✓ not if has null input (and not coinbase) to and from JSON ✓ takes a string that is a valid JSON and deserializes from it (56ms) ✓ serializes the `change` information ✓ serializes correctly p2sh multisig signed tx serialization of inputs ✓ can serialize and deserialize a P2PKH input ✓ can serialize and deserialize a P2SH input (39ms) checks on adding inputs ✓ fails if no output script is provided ✓ fails if no satoshi amount is provided ✓ allows output and transaction to be feed as arguments ✓ does not allow a threshold number greater than the amount of public keys ✓ will add an empty script if not supplied removeInput and removeOutput ✓ can remove an input by index ✓ can remove an input by transaction id ✓ fails if the index provided is invalid ✓ an output can be removed by index handling the nLockTime ✓ handles a null locktime ✓ handles a simple example ✓ accepts a date instance ✓ accepts a number instance with a timestamp ✓ accepts a block height ✓ fails if the block height is too high ✓ fails if the date is too early ✓ fails if the block height is negative ✓ has a non-max sequenceNumber for effective date locktime tx ✓ has a non-max sequenceNumber for effective blockheight locktime tx ✓ should serialize correctly for date locktime ✓ should serialize correctly for a block height locktime inputAmount + outputAmount ✓ returns correct values for simple transaction ✓ returns correct values for transaction with change ✓ returns correct values for coinjoin transaction output ordering ✓ allows the user to sort outputs according to a criteria ✓ allows the user to randomize the output order ✓ fails if the provided function does not work as expected ✓ shuffle without change clearOutputs ✓ removes all outputs and maintains the transaction in order BIP69 Sorting ✓ sorts inputs correctly ✓ sorts outputs correctly bitcoinjs fixtures ✓ Ordered by txId, descending (reverse-byte-order ascending) ✓ Ordered by vout, ascending ✓ Ordered by txId, then vout ✓ BIP69 test vector 1 ✓ BIP69 test vector 2 ✓ Ordered by Amount, ascending ✓ Ordered by Script, ascending ✓ Ordered by Amount, then Script ✓ Sorting is irrelevant for equivalent outputs ✓ BIP69 test vector 1 ✓ BIP69 test vector 2 Replace-by-fee #enableRBF ✓ only enable inputs not already enabled (0xffffffff) (95ms) ✓ enable for inputs with 0xffffffff and 0xfffffffe (98ms) #isRBF ✓ enable and determine opt-in (54ms) ✓ determine opt-out with default sequence number (58ms) ✓ determine opt-out with 0xfffffffe (103ms) ✓ determine opt-out with 0xffffffff (101ms) ✓ determine opt-in with 0xfffffffd (first input) (94ms) ✓ determine opt-in with 0xfffffffd (second input) (100ms) UnspentOutput ✓ roundtrip from raw data ✓ can be created without "new" operand ✓ fails if no tx id is provided ✓ fails if vout is not a number ✓ displays nicely on the console ✓ toString returns txid:vout ✓ to/from JSON roundtrip checking the constructor parameters ✓ fails when no amount is defined ✓ does not fail when amount is zero buffer utils equals ✓ recognizes these two equal buffers ✓ no false positive: returns false with two different buffers ✓ coverage: quickly realizes a difference in size and returns false ✓ "equals" is an an alias for "equal" fill ✓ checks arguments ✓ works correctly for a small buffer isBuffer ✓ has no false positive ✓ has no false negative emptyBuffer ✓ creates a buffer filled with zeros ✓ checks arguments single byte buffer <=> integer ✓ integerAsSingleByteBuffer should return a buffer of length 1 ✓ should check the type ✓ works correctly for edge cases ✓ does a round trip 4byte buffer integer <=> integer ✓ integerAsBuffer should return a buffer of length 4 ✓ is little endian ✓ should check the type ✓ works correctly for edge cases ✓ does a round trip buffer to hex ✓ returns an expected value in hexa ✓ checks the argument type ✓ round trips reverse ✓ reverses a buffer js utils isValidJSON ✓ does not mistake an integer as valid json object ✓ correctly validates a json object ✓ correctly validates an array json object isNaturalNumber ✓ false for float ✓ false for string float ✓ false for string integer ✓ false for negative integer ✓ false for negative integer string ✓ false for infinity ✓ false for NaN ✓ true for zero ✓ true for positive integer preconditions ✓ can be used to assert state ✓ throws no false negative ✓ can be used to check an argument ✓ can be used to check an argument type ✓ has no false negatives when used to check an argument type ✓ can be used to check an argument type for a class ✓ has no false negatives when checking a type for a class ✓ formats correctly a message on InvalidArgument() ✓ formats correctly a message on checkArgument Proposal 4) should create new proposal ✓ should throw error if invalid date ✓ should throw error if end_epoch is invalid date ✓ should throw error if start date >= end date ✓ should throw error if end date < now ✓ should throw error if payment address is invalid ✓ should throw error if amount <= 0 ✓ should throw error if invalid url ✓ should throw error if proposal name is invalid 5) should create a new proposal from a JSON object 6) should create a new proposal from a stringified JSON object ✓ should create a new proposal from a hex string ✓ should return error if not valid stringified JSON ✓ should return error if property name is missing ✓ should return error if property start_epoch is missing ✓ should return error if property end_epoch is missing ✓ should return error if property payment_address is missing ✓ should return error if property payment_amount is missing ✓ should return error if property type is missing ✓ should return error if property url is missing ✓ should return error if property name is bad typed ✓ should return error if property start_epoch is bad typed ✓ should return error if property end_epoch is bad typed ✓ should return error if property payment_address is bad typed ✓ should return error if property payment_amount is bad typed ✓ should return error if property type is bad typed ✓ should return error if property type is not a proposal ✓ should return error if property url is bad typed Transaction.Input ✓ has abstract methods: "getSignatures", "isFullySigned", "addSignature", "clearSignatures" ✓ detects coinbase transactions ✓ _estimateSize returns correct size instantiation ✓ works without new ✓ fails with no script info ✓ fromObject should work ✓ fromObject should work MultiSigInput 7) can count missing signatures 8) can count missing signatures, signed with key 3 and 1 9) returns a list of public keys with missing signatures 10) can clear all signatures 11) can estimate how heavy is the output going to be 12) uses SIGHASH_ALL by default 13) roundtrips to/from object 14) roundtrips to/from object when not signed 15) can parse list of signature buffers, from TX signed with key 1 and 2 16) can parse list of signature buffers, from TX signed with key 3 and 1 MultiSigScriptHashInput 17) can count missing signatures 18) returns a list of public keys with missing signatures 19) can clear all signatures 20) can estimate how heavy is the output going to be 21) uses SIGHASH_ALL by default 22) roundtrips to/from object 23) roundtrips to/from object when not signed PublicKeyInput ✓ will correctly sign a publickey out transaction (86ms) ✓ count can count missing signatures (71ms) ✓ it's size can be estimated ✓ it's signature can be removed (72ms) ✓ returns an empty array if private key mismatches (50ms) PublicKeyHashInput 24) can count missing signatures 25) it's size can be estimated 26) it's signature can be removed 27) returns an empty array if private key mismatches 3077 passing (19s) 27 failing 1) Address validation addresses with whitespace are validated correctly: AssertionError: expected [TypeError: Address has mismatched network type.] to not exist 2) Transaction transaction creation test vector case 5: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:584:10) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/transaction.js:185:34) 3) Transaction transaction creation test vector case 6: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:584:10) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/transaction.js:185:34) 4) Proposal should create new proposal: AssertionError: expected '5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e74697475732e6f7267227d5d5d' to equal '5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e646173682e6f7267227d5d5d' + expected - actual -5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e74697475732e6f7267227d5d5d +5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e646173682e6f7267227d5d5d at Context. (test/govobject/types/proposal.js:44:37) 5) Proposal should create a new proposal from a JSON object: AssertionError: expected '5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e74697475732e6f7267227d5d5d' to equal '5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e646173682e6f7267227d5d5d' + expected - actual -5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e74697475732e6f7267227d5d5d +5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e646173682e6f7267227d5d5d at Context. (test/govobject/types/proposal.js:203:37) 6) Proposal should create a new proposal from a stringified JSON object: AssertionError: expected '5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e74697475732e6f7267227d5d5d' to equal '5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e646173682e6f7267227d5d5d' + expected - actual -5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e74697475732e6f7267227d5d5d +5b5b2270726f706f73616c222c7b22656e645f65706f6368223a313736303035343430302c226e616d65223a225465737450726f706f73616c222c227061796d656e745f61646472657373223a22795847654e505158594658684c414e315a4b72416a787a7a426e5a324a5a4e4b6e68222c227061796d656e745f616d6f756e74223a31302c2273746172745f65706f6368223a313434343433353230302c2274797065223a312c2275726c223a22687474703a2f2f7777772e646173682e6f7267227d5d5d at Context. (test/govobject/types/proposal.js:221:37) 7) MultiSigInput can count missing signatures: Invalid state: Provided public keys don't match to the provided output script Error at NodeError (lib/errors/index.js:20:41) at Object.checkState (lib/util/preconditions.js:9:13) at new MultiSigInput (lib/transaction/input/multisig.js:27:5) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:592:17) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisig.js:34:10) 8) MultiSigInput can count missing signatures, signed with key 3 and 1: Invalid state: Provided public keys don't match to the provided output script Error at NodeError (lib/errors/index.js:20:41) at Object.checkState (lib/util/preconditions.js:9:13) at new MultiSigInput (lib/transaction/input/multisig.js:27:5) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:592:17) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisig.js:52:10) 9) MultiSigInput returns a list of public keys with missing signatures: Invalid state: Provided public keys don't match to the provided output script Error at NodeError (lib/errors/index.js:20:41) at Object.checkState (lib/util/preconditions.js:9:13) at new MultiSigInput (lib/transaction/input/multisig.js:27:5) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:592:17) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisig.js:70:8) 10) MultiSigInput can clear all signatures: Invalid state: Provided public keys don't match to the provided output script Error at NodeError (lib/errors/index.js:20:41) at Object.checkState (lib/util/preconditions.js:9:13) at new MultiSigInput (lib/transaction/input/multisig.js:27:5) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:592:17) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisig.js:89:8) 11) MultiSigInput can estimate how heavy is the output going to be: Invalid state: Provided public keys don't match to the provided output script Error at NodeError (lib/errors/index.js:20:41) at Object.checkState (lib/util/preconditions.js:9:13) at new MultiSigInput (lib/transaction/input/multisig.js:27:5) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:592:17) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisig.js:101:8) 12) MultiSigInput uses SIGHASH_ALL by default: Invalid state: Provided public keys don't match to the provided output script Error at NodeError (lib/errors/index.js:20:41) at Object.checkState (lib/util/preconditions.js:9:13) at new MultiSigInput (lib/transaction/input/multisig.js:27:5) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:592:17) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisig.js:108:8) 13) MultiSigInput roundtrips to/from object: Invalid state: Provided public keys don't match to the provided output script Error at NodeError (lib/errors/index.js:20:41) at Object.checkState (lib/util/preconditions.js:9:13) at new MultiSigInput (lib/transaction/input/multisig.js:27:5) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:592:17) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisig.js:116:8) 14) MultiSigInput roundtrips to/from object when not signed: Invalid state: Provided public keys don't match to the provided output script Error at NodeError (lib/errors/index.js:20:41) at Object.checkState (lib/util/preconditions.js:9:13) at new MultiSigInput (lib/transaction/input/multisig.js:27:5) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:592:17) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisig.js:125:8) 15) MultiSigInput can parse list of signature buffers, from TX signed with key 1 and 2: Invalid state: Provided public keys don't match to the provided output script Error at NodeError (lib/errors/index.js:20:41) at Object.checkState (lib/util/preconditions.js:9:13) at new MultiSigInput (lib/transaction/input/multisig.js:27:5) at Context. (test/transaction/input/multisig.js:146:29) 16) MultiSigInput can parse list of signature buffers, from TX signed with key 3 and 1: Invalid state: Provided public keys don't match to the provided output script Error at NodeError (lib/errors/index.js:20:41) at Object.checkState (lib/util/preconditions.js:9:13) at new MultiSigInput (lib/transaction/input/multisig.js:27:5) at Context. (test/transaction/input/multisig.js:169:29) 17) MultiSigScriptHashInput can count missing signatures: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:584:10) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisigscripthash.js:35:8) 18) MultiSigScriptHashInput returns a list of public keys with missing signatures: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:584:10) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisigscripthash.js:53:8) 19) MultiSigScriptHashInput can clear all signatures: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:584:10) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisigscripthash.js:72:8) 20) MultiSigScriptHashInput can estimate how heavy is the output going to be: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:584:10) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisigscripthash.js:84:8) 21) MultiSigScriptHashInput uses SIGHASH_ALL by default: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:584:10) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisigscripthash.js:91:8) 22) MultiSigScriptHashInput roundtrips to/from object: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:584:10) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisigscripthash.js:99:8) 23) MultiSigScriptHashInput roundtrips to/from object when not signed: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromMultisigUtxo (lib/transaction/transaction.js:584:10) at Transaction.from (lib/transaction/transaction.js:552:10) at Context. (test/transaction/input/multisigscripthash.js:108:8) 24) PublicKeyHashInput can count missing signatures: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromNonP2SH (lib/transaction/transaction.js:561:10) at Transaction.from (lib/transaction/transaction.js:554:10) at Context. (test/transaction/input/publickeyhash.js:31:8) 25) PublicKeyHashInput it's size can be estimated: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromNonP2SH (lib/transaction/transaction.js:561:10) at Transaction.from (lib/transaction/transaction.js:554:10) at Context. (test/transaction/input/publickeyhash.js:41:8) 26) PublicKeyHashInput it's signature can be removed: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromNonP2SH (lib/transaction/transaction.js:561:10) at Transaction.from (lib/transaction/transaction.js:554:10) at Context. (test/transaction/input/publickeyhash.js:48:8) 27) PublicKeyHashInput returns an empty array if private key mismatches: TypeError: Address has mismatched network type. at Function.Address._transformBuffer (lib/address.js:202:11) at Function.Address._transformString (lib/address.js:280:22) at Address._classifyArguments (lib/address.js:107:20) at new Address (lib/address.js:73:19) at new UnspentOutput (lib/transaction/unspentoutput.js:34:32) at Transaction._fromNonP2SH (lib/transaction/transaction.js:561:10) at Transaction.from (lib/transaction/transaction.js:554:10) at Context. (test/transaction/input/publickeyhash.js:58:8) [02:07:08] 'test:node' errored after 20 s [02:07:08] Error in plugin 'gulp-mocha' Message: 27 tests failed. [02:07:08] 'test' errored after 20 s [02:07:08] Error in plugin 'run-sequence(test:node)' Error at finish (/home/jonas/tituscoin/insight/bitcore-lib-titus/node_modules/run-sequence/index.js:56:13) at Gulp.onError (/home/jonas/tituscoin/insight/bitcore-lib-titus/node_modules/run-sequence/index.js:67:4) at emitOne (events.js:101:20) at Gulp.emit (events.js:191:7) at Gulp.Orchestrator._emitTaskDone (/home/jonas/tituscoin/insight/bitcore-lib-titus/node_modules/orchestrator/index.js:264:8) at /home/jonas/tituscoin/insight/bitcore-lib-titus/node_modules/orchestrator/index.js:275:23 at finish (/home/jonas/tituscoin/insight/bitcore-lib-titus/node_modules/orchestrator/lib/runTask.js:21:8) at Stream. (/home/jonas/tituscoin/insight/bitcore-lib-titus/node_modules/orchestrator/lib/runTask.js:52:4) at Stream.f (/home/jonas/tituscoin/insight/bitcore-lib-titus/node_modules/end-of-stream/node_modules/once/once.js:17:25) at emitOne (events.js:101:20)