Tuesday, October 1, 2024

HOW TO SPEND THE P2SH solely use Redeemscript hex ? no personal key concerned

the codes i exploit to construct the transaction

import hashlib
import base58

prev_txid = ‘ec5596bf71a498fc944e912f0bc21f0ead3806965402d74f1d670c2fff7c08c2’
prev_index = 0 # Assuming the output you need to spend is the primary output of the earlier transaction
prev_amount = 0.01 # Quantity of the earlier transaction output

output_address=”tb1qyynpskfgzq7vszgra3ehvvhvu6d3xkdjqrq652″
output_amount = 0.0099 # Sending 0.01 BTC, minus 0.0001 BTC for the charge

witness_script_hex = ’76a914787be176f2618457541d957dd84d2df475b5d6ec88ac’ # Witness script
witness_script = bytes.fromhex(witness_script_hex)
witness_script_hash = hashlib.new(‘ripemd160’, hashlib.sha256(witness_script).digest()).digest()
input_script = bytes.fromhex(‘160014’) + witness_script_hash # OP_0 <witness_script_hash>

output_script = bytes.fromhex(‘0014’) + base58.b58decode(output_address)[5:] # P2WPKH output script

model = 1
locktime = 0
tx_in_count = 1
tx_out_count = 1

tx_in = (
bytes.fromhex(prev_txid)[::-1] + # prev tx id, little endian
prev_index.to_bytes(4, byteorder=”little”) + # prev index, little endian
len(input_script).to_bytes(1, byteorder=”little”) + # script size
input_script + # enter script
b’xffxffxffxff’ # sequence, little endian (0xFFFFFFFF)
)

tx_out = (
int(output_amount * 100000000).to_bytes(8, byteorder=”little”) + # worth, 8 bytes
len(output_script).to_bytes(1, byteorder=”little”) + # script size
output_script # output script
)

witness = (
len(input_script).to_bytes(1, byteorder=”little”) + # witness script size
input_script # witness script
)

final_tx = (
model.to_bytes(4, byteorder=”little”) + # model
tx_in_count.to_bytes(1, byteorder=”little”) + # variety of inputs
tx_in + # enter
tx_out_count.to_bytes(1, byteorder=”little”) + # variety of outputs
tx_out + # output
locktime.to_bytes(4, byteorder=”little”) + # lock time
b’00’ + # marker for SegWit transaction
witness # witness information
)

tx_hash = hashlib.sha256(hashlib.sha256(final_tx).digest()).digest()

final_tx_hex = final_tx.hex() + tx_hash.hex()

print(“Unsigned Transaction Hex:”)
print(final_tx_hex)

and end result rawtransaction is

0100000001c2087cff2f0c671d4fd70254960638ad0e1fc20b2f914e94fc98a471bf9655ec00000000171600141ee06adc3ff6103b173eef823f8612345d3919d5ffffffff01301b0f00000000001c00141e2361ff02e8b850288e0b3a07f4420743b1deec45d744ced1ad000000003030171600141ee06adc3ff6103b173eef823f8612345d3919d5292a3cc2d63078d6441f02a42edc1be8debddf288fbb836bba289b1b266eb183

and offers rejection
Error validating transaction: witness redeem script detected in tx with out witness information.

i obtained confused fixing the tx with out witness information, anybody will help me ?

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles