আমার কাছে লেনদেনের জন্য নিম্নলিখিত কোড আছে 663becacc6368150a46725e404ccdfa34d1fffbececa784c31f0a7849b4dad08
যা আমি অন্য দিন আমার মেমপুল থেকে বের করেছিলাম, যার হেক্স হল:
020000000001015ce1d4ffc716022f83cc0d557e6dad0500eeff9e9623bde014bdc09c5b672d750000000000fdffffff025fb7460b000000001600142cf4c1dc0352e0658971ca62a7457a1cd8c3389c4ce3a2000000000016001433f57fe374c6ceab61c8639128c038ac2a8c8db60247304402203cb50efb5c4a9aa7fd369ab6f4b226db99f44f9c610b5b50bc42f343a6aa401302201af791542eee6c1b11705e8895cc5adc36458910dc91aadcafb76a6478a29b9f01210242e811e66fd17e9a6e4ef772766c668d6e0595ca1d7f0583148bc460b575fbfdf0df0b00
use bitcoin::consensus::deserialize;
use bitcoin::hashes::{hex, sha256d, Hash};
use bitcoin::util::sighash;
use std::env;
use std::str::FromStr;
fn main() {
let rawtx = env::args().skip(1).next().unwrap();
let bytes: Vec<u8> = hex::FromHex::from_hex(&rawtx)
.expect("hex decoding");
let tx: bitcoin::Transaction = deserialize(&bytes)
.expect("tx deserialization");
let pk = bitcoin::secp256k1::PublicKey::from_str(
"0242e811e66fd17e9a6e4ef772766c668d6e0595ca1d7f0583148bc460b575fbfd",
).unwrap();
let mut sighash = sighash::SighashCache::new(&tx);
let mut out_bytes = vec![];
sighash.segwit_encode_signing_data_to(
&mut out_bytes,
0,
&bitcoin::Script::from_str("76a914f5693fbaf062221baf891d813d5856e4f8ab54eb88ac").unwrap(),
200000000,
bitcoin::EcdsaSighashType::All,
).expect("computing sighash");
println!("{}", hex::ToHex::to_hex(&out_bytes[..]));
let sig = bitcoin::secp256k1::ecdsa::Signature::from_str(
"304402203cb50efb5c4a9aa7fd369ab6f4b226db99f44f9c610b5b50bc42f343a6aa401302201af791542eee6c1b11705e8895cc5adc36458910dc91aadcafb76a6478a29b9f",
).unwrap();
let secp = bitcoin::secp256k1::Secp256k1::new();
let hash = sha256d::Hash::hash(&out_bytes);
let msg = bitcoin::secp256k1::Message::from_slice(&hash[..]).unwrap();
secp.verify_ecdsa(
&msg,
&sig,
&pk,
).unwrap();
}
এটি শুধুমাত্র এই নির্দিষ্ট p2wpkh লেনদেনের জন্য কাজ করে, তবে এটি আপনাকে শুরু করতে সাহায্য করতে পারে। অদ্ভুত জিনিস হল script_code
p2wpkh আউটপুট থেকে p2pkh আউটপুট সংশ্লেষণ করে তৈরি করা হয়েছে। p2wsh বা P2sh স্ক্রিপ্টের জন্য (যেমন যেকোন চেকমুলটিসিগ) স্ক্রিপ্ট, এটা সহজ: আপনি এখানে শুধু রিডিম/সাক্ষী স্ক্রিপ্ট ব্যবহার করতে পারেন।