def test_op_checkmultisig(): txn = Transaction.from_hex( "01000000010506344de69d47e432eb0174500d6e188a9e63c1e84a9e8796ec98c99b7559f701000000fdfd00004730440220695a28c42daa23c13e192e36a20d03a2a79994e0fe1c3c6b612d0ae23743064602200ca19003e7c1ce0cecb0bbfba9a825fc3b83cf54e4c3261cd15f080d24a8a5b901483045022100aa9096ce71995c24545694f20ab0482099a98c99b799c706c333c521e51db66002206578f023fa46f4a863a6fa7f18b95eebd1a91fcdf6ce714e8795d902bd6b682b014c69522102b66fcb1064d827094685264aaa90d0126861688932eafbd1d1a4ba149de3308b21025cab5e31095551582630f168280a38eb3a62b0b3e230b20f8807fc5463ccca3c21021098babedb3408e9ac2984adcf2a8e4c48e56a785065893f76d0fa0ff507f01053aeffffffff01c8af0000000000001976a91458b7a60f11a904feef35a639b6048de8dd4d9f1c88ac00000000" ) # nopep8 sig_script = txn.inputs[0].script redeem_script = Script(sig_script.ast[-1][-1]) script_pub_key = Script.build_p2sh(redeem_script.hash160()) si = ScriptInterpreter(txn=txn, input_index=0, sub_script=redeem_script) si.run_script(sig_script) assert len(si.stack) == 4 si.run_script(script_pub_key) assert len(si.stack) == 4 assert si.stack[-1] is True assert si.valid si._op_verify() # This will do the OP_CHECKMULTISIG si.run_script(redeem_script) assert len(si.stack) == 1 assert si.stack[0] is True assert si.valid assert len(si.stack) == 1
def test_op_checkmultisig(): txn = Transaction.from_hex("01000000010506344de69d47e432eb0174500d6e188a9e63c1e84a9e8796ec98c99b7559f701000000fdfd00004730440220695a28c42daa23c13e192e36a20d03a2a79994e0fe1c3c6b612d0ae23743064602200ca19003e7c1ce0cecb0bbfba9a825fc3b83cf54e4c3261cd15f080d24a8a5b901483045022100aa9096ce71995c24545694f20ab0482099a98c99b799c706c333c521e51db66002206578f023fa46f4a863a6fa7f18b95eebd1a91fcdf6ce714e8795d902bd6b682b014c69522102b66fcb1064d827094685264aaa90d0126861688932eafbd1d1a4ba149de3308b21025cab5e31095551582630f168280a38eb3a62b0b3e230b20f8807fc5463ccca3c21021098babedb3408e9ac2984adcf2a8e4c48e56a785065893f76d0fa0ff507f01053aeffffffff01c8af0000000000001976a91458b7a60f11a904feef35a639b6048de8dd4d9f1c88ac00000000") # nopep8 sig_script = txn.inputs[0].script redeem_script = Script(sig_script.ast[-1][-1]) script_pub_key = Script.build_p2sh(redeem_script.hash160()) si = ScriptInterpreter(txn=txn, input_index=0, sub_script=redeem_script) si.run_script(sig_script) assert len(si.stack) == 4 si.run_script(script_pub_key) assert len(si.stack) == 4 assert si.stack[-1] is True assert si.valid si._op_verify() # This will do the OP_CHECKMULTISIG si.run_script(redeem_script) assert len(si.stack) == 1 assert si.stack[0] is True assert si.valid assert len(si.stack) == 1
def test_is_p2sh(): s = Script("OP_HASH160 0x68bf827a2fa3b31e53215e5dd19260d21fdf053e OP_EQUAL") assert s.is_p2sh() assert not s.is_multisig_redeem() assert not s.is_p2pkh_sig() s = Script.build_p2sh(bytes.fromhex("68bf827a2fa3b31e53215e5dd19260d21fdf053e")) assert s.is_p2sh() s = Script("OP_ADD OP_HASH160 0x68bf827a2fa3b31e53215e5dd19260d21fdf053e OP_EQUALVERIFY") assert not s.is_p2sh() assert not s.is_multisig_redeem()