{ "valid": [ { "description": "p2sh-*, out (from address)", "arguments": { "address": "3GETYP4cuSesh2zsPEEYVZqnRedwe4FwUT" }, "options": {}, "expected": { "hash": "9f840a5fc02407ef0ad499c2ec0eb0b942fb0086", "output": "OP_HASH160 9f840a5fc02407ef0ad499c2ec0eb0b942fb0086 OP_EQUAL", "redeem": null, "input": null, "witness": null } }, { "description": "p2sh-*, out (from hash)", "arguments": { "hash": "9f840a5fc02407ef0ad499c2ec0eb0b942fb0086" }, "expected": { "address": "3GETYP4cuSesh2zsPEEYVZqnRedwe4FwUT", "output": "OP_HASH160 9f840a5fc02407ef0ad499c2ec0eb0b942fb0086 OP_EQUAL", "redeem": null, "input": null, "witness": null } }, { "description": "p2sh-*, out (from output)", "arguments": { "output": "OP_HASH160 9f840a5fc02407ef0ad499c2ec0eb0b942fb0086 OP_EQUAL" }, "expected": { "address": "3GETYP4cuSesh2zsPEEYVZqnRedwe4FwUT", "hash": "9f840a5fc02407ef0ad499c2ec0eb0b942fb0086", "redeem": null, "input": null, "witness": null } }, { "description": "p2sh-p2pkh, out (from redeem)", "arguments": { "redeem": { "address": "this is P2PKH context, unknown and ignored by P2SH", "output": "OP_DUP OP_HASH160 c30afa58ae0673b00a45b5c17dff4633780f1400 OP_EQUALVERIFY OP_CHECKSIG" } }, "expected": { "address": "3GETYP4cuSesh2zsPEEYVZqnRedwe4FwUT", "hash": "9f840a5fc02407ef0ad499c2ec0eb0b942fb0086", "output": "OP_HASH160 9f840a5fc02407ef0ad499c2ec0eb0b942fb0086 OP_EQUAL", "input": null, "witness": null } }, { "description": "p2sh-p2wpkh, out (from redeem)", "arguments": { "redeem": { "hash": "this is P2WPKH context, unknown and ignored by P2SH", "output": "OP_0 c30afa58ae0673b00a45b5c17dff4633780f1400" } }, "expected": { "address": "325CuTNSYmvurXaBmhNFer5zDkKnDXZggu", "hash": "0432515d8fe8de31be8207987fc6d67b29d5e7cc", "output": "OP_HASH160 0432515d8fe8de31be8207987fc6d67b29d5e7cc OP_EQUAL", "input": null, "witness": null } }, { "description": "p2sh-p2pk, out (from redeem)", "arguments": { "redeem": { "output": "03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058 OP_CHECKSIG", "pubkey": "this is P2WPKH context, unknown and ignored by P2SH" } }, "expected": { "address": "36TibC8RrPB9WrBdPoGXhHqDHJosyFVtVQ", "hash": "3454c084887afe854e80221c69d6282926f809c4", "output": "OP_HASH160 3454c084887afe854e80221c69d6282926f809c4 OP_EQUAL", "input": null, "witness": null } }, { "description": "p2sh-p2pkh, in and out (from redeem)", "arguments": { "redeem": { "output": "OP_DUP OP_HASH160 c30afa58ae0673b00a45b5c17dff4633780f1400 OP_EQUALVERIFY OP_CHECKSIG", "input": "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501 03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058" } }, "expected": { "address": "3GETYP4cuSesh2zsPEEYVZqnRedwe4FwUT", "hash": "9f840a5fc02407ef0ad499c2ec0eb0b942fb0086", "output": "OP_HASH160 9f840a5fc02407ef0ad499c2ec0eb0b942fb0086 OP_EQUAL", "input": "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501 03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058 76a914c30afa58ae0673b00a45b5c17dff4633780f140088ac", "witness": [] } }, { "description": "p2sh-p2wpkh, in and out (from redeem w/ witness)", "arguments": { "redeem": { "output": "OP_0 c30afa58ae0673b00a45b5c17dff4633780f1400", "input": "", "witness": [ "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501", "03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058" ] } }, "expected": { "address": "325CuTNSYmvurXaBmhNFer5zDkKnDXZggu", "hash": "0432515d8fe8de31be8207987fc6d67b29d5e7cc", "output": "OP_HASH160 0432515d8fe8de31be8207987fc6d67b29d5e7cc OP_EQUAL", "input": "0014c30afa58ae0673b00a45b5c17dff4633780f1400", "witness": [ "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501", "03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058" ] } }, { "description": "p2sh-p2pk, in and out (from input)", "arguments": { "input": "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501 2103e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058ac" }, "expected": { "address": "36TibC8RrPB9WrBdPoGXhHqDHJosyFVtVQ", "hash": "3454c084887afe854e80221c69d6282926f809c4", "output": "OP_HASH160 3454c084887afe854e80221c69d6282926f809c4 OP_EQUAL", "redeem": { "output": "03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058 OP_CHECKSIG", "input": "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501", "witness": [] }, "witness": [] } }, { "description": "p2sh-p2wpkh, in and out (from input AND witness)", "arguments": { "input": "0014c30afa58ae0673b00a45b5c17dff4633780f1400", "witness": [ "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501", "03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058" ] }, "expected": { "address": "325CuTNSYmvurXaBmhNFer5zDkKnDXZggu", "hash": "0432515d8fe8de31be8207987fc6d67b29d5e7cc", "output": "OP_HASH160 0432515d8fe8de31be8207987fc6d67b29d5e7cc OP_EQUAL", "redeem": { "output": "OP_0 c30afa58ae0673b00a45b5c17dff4633780f1400", "input": "", "witness": [ "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501", "03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058" ] } } }, { "description": "p2sh-p2pkh, out (network derived from redeem)", "arguments": { "redeem": { "address": "this is P2PKH context, unknown and ignored by P2SH", "output": "OP_DUP OP_HASH160 c30afa58ae0673b00a45b5c17dff4633780f1400 OP_EQUALVERIFY OP_CHECKSIG", "network": "testnet" } }, "expected": { "address": "2N7nfc7zeWuADtpdR4MrR7Wq3dzr7LxTCgS", "hash": "9f840a5fc02407ef0ad499c2ec0eb0b942fb0086", "output": "OP_HASH160 9f840a5fc02407ef0ad499c2ec0eb0b942fb0086 OP_EQUAL", "input": null, "witness": null, "network": "testnet" } } ], "invalid": [ { "exception": "Not enough data", "arguments": {} }, { "description": "Non-minimally encoded (non BIP62 compliant)", "exception": "Expected property \"output\" of type Buffer\\(Length: 23\\), got Buffer\\(Length: 24\\)", "arguments": { "outputHex": "a94c14c286a1af0947f58d1ad787385b1c2c4a976f9e7187" } }, { "description": "Expected OP_HASH160", "exception": "Output is invalid", "options": {}, "arguments": { "output": "OP_HASH256 ffffffffffffffffffffffffffffffffffffffff OP_EQUAL" } }, { "description": "Unexpected OP_RESERVED", "exception": "Output is invalid", "arguments": { "output": "OP_HASH256 ffffffffffffffffffffffffffffffffffffff OP_EQUAL OP_RESERVED" } }, { "description": "address.hash != H", "exception": "Hash mismatch", "arguments": { "address": "325CuTNSYmvurXaBmhNFer5zDkKnDXZggu", "hash": "ffffffffffffffffffffffffffffffffffffffff" } }, { "description": "address.hash != output.hash", "exception": "Hash mismatch", "arguments": { "address": "325CuTNSYmvurXaBmhNFer5zDkKnDXZggu", "output": "OP_HASH160 ffffffffffffffffffffffffffffffffffffffff OP_EQUAL" } }, { "description": "output.hash != H", "exception": "Hash mismatch", "arguments": { "hash": "ffffffffffffffffffffffffffffffffffffffff", "output": "OP_HASH160 0432515d8fe8de31be8207987fc6d67b29d5e7cc OP_EQUAL" } }, { "description": "H(redeem.output) != H", "exception": "Hash mismatch", "arguments": { "hash": "ffffffffffffffffffffffffffffffffffffffff", "redeem": { "output": "03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058 OP_CHECKSIG" } } }, { "exception": "Invalid version or Network mismatch", "arguments": { "address": "134D6gYy8DsR5m4416BnmgASuMBqKvogQh" } }, { "exception": "Invalid address", "arguments": { "address": "TYPjCiGbKiwP6r12cdkmVjySbQr7mb3r" } }, { "exception": "Invalid address", "arguments": { "address": "EDaBpuERpLssFzbCV1kgy8tKJsHrcwmzY7HDMF2" } }, { "exception": "Input too short", "arguments": { "input": "" } }, { "exception": "Input too short", "arguments": { "inputHex": "01ff02ff" } }, { "exception": "Input is invalid", "arguments": { "input": "OP_0 OP_0" } }, { "exception": "Redeem.input mismatch", "arguments": { "input": "OP_0 02ffff", "redeem": { "input": "OP_CHECKSIG", "output": "ffff" } } }, { "exception": "Redeem.output mismatch", "arguments": { "input": "OP_0 02ffff", "redeem": { "input": "OP_0", "output": "fff3" } } }, { "exception": "Redeem.output too short", "arguments": { "redeem": { "input": "OP_0", "output": "" } } }, { "exception": "Redeem.output too short", "arguments": { "inputHex": "021000" } }, { "exception": "Witness and redeem.witness mismatch", "arguments": { "witness": [ "3045ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "030000000000000000000000000000000000000000000000000000000000000001" ], "redeem": { "witness": [ "3045dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd", "030000000000000000000000000000000000000000000000000000000000000001" ] } } }, { "exception": "Hash mismatch", "arguments": { "hash": "ffffffffffffffffffffffffffffffffffffffff", "redeem": { "input": "OP_0", "output": "ffff" } } }, { "exception": "Network mismatch", "arguments": { "network": "bitcoin", "redeem": { "network": "testnet" } } }, { "exception": "Network mismatch", "arguments": { "network": "testnet", "redeem": { "network": "bitcoin" } } }, { "exception": "Empty input", "arguments": { "inputHex": "01ff" } } ], "dynamic": { "depends": { "address": [ "address", "output", "hash", "redeem.output", [ "input", "witness" ] ], "hash": [ "address", "output", "hash", "redeem.output", [ "input", "witness" ] ], "output": [ "address", "output", "hash", "redeem.output", [ "input", "witness" ] ], "redeem.output": [ [ "input", "witness" ] ], "redeem.input": [ [ "input", "witness" ] ], "redeem.witness": [ [ "input", "witness" ] ], "input": [ "redeem" ], "witness": [ "redeem" ] }, "details": [ { "description": "p2sh-p2pkh", "address": "3GETYP4cuSesh2zsPEEYVZqnRedwe4FwUT", "hash": "9f840a5fc02407ef0ad499c2ec0eb0b942fb0086", "output": "OP_HASH160 9f840a5fc02407ef0ad499c2ec0eb0b942fb0086 OP_EQUAL", "redeem": { "output": "OP_DUP OP_HASH160 c30afa58ae0673b00a45b5c17dff4633780f1400 OP_EQUALVERIFY OP_CHECKSIG", "input": "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501 03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058", "witness": [] }, "input": "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501 03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058 76a914c30afa58ae0673b00a45b5c17dff4633780f140088ac", "witness": [] }, { "description": "p2sh-p2wpkh", "address": "325CuTNSYmvurXaBmhNFer5zDkKnDXZggu", "hash": "0432515d8fe8de31be8207987fc6d67b29d5e7cc", "output": "OP_HASH160 0432515d8fe8de31be8207987fc6d67b29d5e7cc OP_EQUAL", "redeem": { "output": "OP_0 c30afa58ae0673b00a45b5c17dff4633780f1400", "input": "", "witness": [ "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501", "03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058" ] }, "input": "0014c30afa58ae0673b00a45b5c17dff4633780f1400", "witness": [ "3045022100e4fce9ec72b609a2df1dc050c20dcf101d27faefb3e686b7a4cb067becdd5e8e022071287fced53806b08cf39b5ad58bbe614775b3776e98a9f8760af0d4d1d47a9501", "03e15819590382a9dd878f01e2f0cbce541564eb415e43b440472d883ecd283058" ] } ] } }