12 """Tests decoding scripts via RPC command "decodescript".""" 15 print(
'Initializing test directory ' + self.options.tmpdir)
23 signature =
'304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c509001' 24 push_signature =
'48' + signature
25 public_key =
'03b0da749730dc9b4b1f4a14d6902877a92541f5368778853d9c4a0cb7802dcfb2' 26 push_public_key =
'21' + public_key
37 assert_equal(signature +
' ' + public_key, rpc_result[
'asm'])
43 assert_equal(
'0 ' + signature +
' ' + signature, rpc_result[
'asm'])
56 public_key =
'03b0da749730dc9b4b1f4a14d6902877a92541f5368778853d9c4a0cb7802dcfb2' 57 push_public_key =
'21' + public_key
58 public_key_hash =
'11695b6cd891484c2d49ec5aa738ec2b2f897777' 59 push_public_key_hash =
'14' + public_key_hash
66 assert_equal(public_key +
' OP_CHECKSIG', rpc_result[
'asm'])
71 assert_equal(
'OP_DUP OP_HASH160 ' + public_key_hash +
' OP_EQUALVERIFY OP_CHECKSIG', rpc_result[
'asm'])
77 rpc_result = self.
nodes[0].
decodescript(
'52' + push_public_key + push_public_key + push_public_key +
'53ae')
78 assert_equal(
'2 ' + public_key +
' ' + public_key +
' ' + public_key +
' 3 OP_CHECKMULTISIG', rpc_result[
'asm'])
85 assert_equal(
'OP_HASH160 ' + public_key_hash +
' OP_EQUAL', rpc_result[
'asm'])
91 signature_imposter =
'48304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c509001' 94 assert_equal(
'OP_RETURN ' + signature_imposter[2:], rpc_result[
'asm'])
109 rpc_result = self.
nodes[0].
decodescript(
'63' + push_public_key +
'ad670320a107b17568' + push_public_key +
'ac')
110 assert_equal(
'OP_IF ' + public_key +
' OP_CHECKSIGVERIFY OP_ELSE 500000 OP_CHECKLOCKTIMEVERIFY OP_DROP OP_ENDIF ' + public_key +
' OP_CHECKSIG', rpc_result[
'asm'])
113 """Tests decoding scripts via RPC command "decoderawtransaction". 115 This test is in with the "decodescript" tests because they are testing the same "asm" script decodes. 119 tx =
'0100000001696a20784a2c70143f634e95227dbdfdf0ecd51647052e70854512235f5986ca010000008a47304402207174775824bec6c2700023309a168231ec80b82c6069282f5133e6f11cbb04460220570edc55c7c5da2ca687ebd0372d3546ebc3f810516a002350cac72dfe192dfb014104d3f898e6487787910a690410b7a917ef198905c27fb9d3b0a42da12aceae0544fc7088d239d9a48f2828a15a09e84043001f27cc80d162cb95404e1210161536ffffffff0100e1f505000000001976a914eb6c6e0cdb2d256a32d97b8df1fc75d1920d9bca88ac00000000' 121 assert_equal(
'304402207174775824bec6c2700023309a168231ec80b82c6069282f5133e6f11cbb04460220570edc55c7c5da2ca687ebd0372d3546ebc3f810516a002350cac72dfe192dfb[ALL] 04d3f898e6487787910a690410b7a917ef198905c27fb9d3b0a42da12aceae0544fc7088d239d9a48f2828a15a09e84043001f27cc80d162cb95404e1210161536', rpc_result[
'vin'][0][
'scriptSig'][
'asm'])
126 tx =
'01000000018d1f5635abd06e2c7e2ddf58dc85b3de111e4ad6e0ab51bb0dcf5e84126d927300000000fdfe0000483045022100ae3b4e589dfc9d48cb82d41008dc5fa6a86f94d5c54f9935531924602730ab8002202f88cf464414c4ed9fa11b773c5ee944f66e9b05cc1e51d97abc22ce098937ea01483045022100b44883be035600e9328a01b66c7d8439b74db64187e76b99a68f7893b701d5380220225bf286493e4c4adcf928c40f785422572eb232f84a0b83b0dea823c3a19c75014c695221020743d44be989540d27b1b4bbbcfd17721c337cb6bc9af20eb8a32520b393532f2102c0120a1dda9e51a938d39ddd9fe0ebc45ea97e1d27a7cbd671d5431416d3dd87210213820eb3d5f509d7438c9eeecb4157b2f595105e7cd564b3cdbb9ead3da41eed53aeffffffff02611e0000000000001976a914dc863734a218bfe83ef770ee9d41a27f824a6e5688acee2a02000000000017a9142a5edea39971049a540474c6a99edf0aa4074c588700000000' 128 assert_equal(
'8e3730608c3b0bb5df54f09076e196bc292a8e39a78e73b44b6ba08c78f5cbb0', rpc_result[
'txid'])
129 assert_equal(
'0 3045022100ae3b4e589dfc9d48cb82d41008dc5fa6a86f94d5c54f9935531924602730ab8002202f88cf464414c4ed9fa11b773c5ee944f66e9b05cc1e51d97abc22ce098937ea[ALL] 3045022100b44883be035600e9328a01b66c7d8439b74db64187e76b99a68f7893b701d5380220225bf286493e4c4adcf928c40f785422572eb232f84a0b83b0dea823c3a19c75[ALL] 5221020743d44be989540d27b1b4bbbcfd17721c337cb6bc9af20eb8a32520b393532f2102c0120a1dda9e51a938d39ddd9fe0ebc45ea97e1d27a7cbd671d5431416d3dd87210213820eb3d5f509d7438c9eeecb4157b2f595105e7cd564b3cdbb9ead3da41eed53ae', rpc_result[
'vin'][0][
'scriptSig'][
'asm'])
130 assert_equal(
'OP_DUP OP_HASH160 dc863734a218bfe83ef770ee9d41a27f824a6e56 OP_EQUALVERIFY OP_CHECKSIG', rpc_result[
'vout'][0][
'scriptPubKey'][
'asm'])
131 assert_equal(
'OP_HASH160 2a5edea39971049a540474c6a99edf0aa4074c58 OP_EQUAL', rpc_result[
'vout'][1][
'scriptPubKey'][
'asm'])
136 tx =
'01000000015ded05872fdbda629c7d3d02b194763ce3b9b1535ea884e3c8e765d42e316724020000006b48304502204c10d4064885c42638cbff3585915b322de33762598321145ba033fc796971e2022100bb153ad3baa8b757e30a2175bd32852d2e1cb9080f84d7e32fcdfd667934ef1b012103163c0ff73511ea1743fb5b98384a2ff09dd06949488028fd819f4d83f56264efffffffff0200000000000000000b6a0930060201000201000180380100000000001976a9141cabd296e753837c086da7a45a6c2fe0d49d7b7b88ac00000000' 138 assert_equal(
'OP_RETURN 300602010002010001', rpc_result[
'vout'][0][
'scriptPubKey'][
'asm'])
141 tx =
'01000000018d1f5635abd06e2c7e2ddf58dc85b3de111e4ad6e0ab51bb0dcf5e84126d927300000000fdfe0000483045022100ae3b4e589dfc9d48cb82d41008dc5fa6a86f94d5c54f9935531924602730ab8002202f88cf464414c4ed9fa11b773c5ee944f66e9b05cc1e51d97abc22ce098937ea01483045022100b44883be035600e9328a01b66c7d8439b74db64187e76b99a68f7893b701d5380220225bf286493e4c4adcf928c40f785422572eb232f84a0b83b0dea823c3a19c75014c695221020743d44be989540d27b1b4bbbcfd17721c337cb6bc9af20eb8a32520b393532f2102c0120a1dda9e51a938d39ddd9fe0ebc45ea97e1d27a7cbd671d5431416d3dd87210213820eb3d5f509d7438c9eeecb4157b2f595105e7cd564b3cdbb9ead3da41eed53aeffffffff02611e0000000000001976a914301102070101010101010102060101010101010188acee2a02000000000017a91430110207010101010101010206010101010101018700000000' 143 assert_equal(
'OP_DUP OP_HASH160 3011020701010101010101020601010101010101 OP_EQUALVERIFY OP_CHECKSIG', rpc_result[
'vout'][0][
'scriptPubKey'][
'asm'])
144 assert_equal(
'OP_HASH160 3011020701010101010101020601010101010101 OP_EQUAL', rpc_result[
'vout'][1][
'scriptPubKey'][
'asm'])
150 signature = push_signature[2:]
151 der_signature = signature[:-2]
152 signature_sighash_decoded = der_signature +
'[ALL]' 153 signature_2 = der_signature +
'82' 154 push_signature_2 =
'48' + signature_2
155 signature_2_sighash_decoded = der_signature +
'[NONE|ANYONECANPAY]' 160 assert_equal(signature_sighash_decoded, rpc_result[
'vin'][0][
'scriptSig'][
'asm'])
165 assert_equal(signature_2_sighash_decoded, rpc_result[
'vin'][0][
'scriptSig'][
'asm'])
168 txSave.vin[0].scriptSig =
hex_str_to_bytes(
'00' + push_signature + push_signature_2)
170 assert_equal(
'0 ' + signature_sighash_decoded +
' ' + signature_2_sighash_decoded, rpc_result[
'vin'][0][
'scriptSig'][
'asm'])
174 txSave.vin[0].scriptSig =
hex_str_to_bytes(
'6a143011020701010101010101020601010101010101')
176 assert_equal(
'OP_RETURN 3011020701010101010101020601010101010101', rpc_result[
'vin'][0][
'scriptSig'][
'asm'])
183 if __name__ ==
'__main__':
def decodescript_script_pub_key(self)
def hex_str_to_bytes(hex_str)
def start_nodes(num_nodes, dirname, extra_args=None, rpchost=None, binary=None)
def setup_network(self, split=False)
def initialize_chain_clean(test_dir, num_nodes)
UniValue decoderawtransaction(const UniValue ¶ms, bool fHelp)
def decodescript_script_sig(self)
def decoderawtransaction_asm_sighashtype(self)
def assert_equal(thing1, thing2)
def bytes_to_hex_str(byte_str)