from bitcoinutils.setup import setup from bitcoinutils.utils import to_satoshis from bitcoinutils.transactions import Transaction, TxInput, TxOutput from bitcoinutils.keys import P2pkhAddress, P2shAddress, PrivateKey from bitcoinutils.script import Script setup('testnet') txin = TxInput('3c286773e75e16eab9b78c23a132f445b9eee64dd0f8b3049385f9de043d3609', 0) sk = PrivateKey('cUR8enPaTgRgYW4dpB6VdjhHFpfAQKz3QuDqPiGbWMtHijhSTAVG') redeem_script = Script(["OP_SHA256", "eb2e10773d403f9972939ede70382fc05c43260b1beb0d5163f3b39dbc8f964b", "OP_EQUAL"]) txout = TxOutput(to_satoshis(0.014), redeem_script.to_p2sh_script_pub_key() ) tx = Transaction([txin], [txout]) from_addr = P2pkhAddress('mgD4equukFPx3qtFx3YMR3zz48zBY6WzL2') sig = sk.sign_input(tx, 0, from_addr.to_script_pub_key()) pk = sk.get_public_key().to_hex() txin.script_sig = Script([sig, pk]) signed_tx = tx.serialize() print("\nRaw signed transaction:\n" + signed_tx) print("\nTxId:", tx.get_txid()) print("\nAddress:\n", redeem_script.to_p2sh_script_pub_key().to_hex() )