Skip to content

Instantly share code, notes, and snippets.

@v0l
Created March 28, 2022 08:40
Show Gist options
  • Save v0l/6fbf61593db7091e11dd531c82e48e2b to your computer and use it in GitHub Desktop.
Save v0l/6fbf61593db7091e11dd531c82e48e2b to your computer and use it in GitHub Desktop.
use bitcoin::consensus::Decodable;
use bitcoin::hashes::hex::FromHex;
use bitcoin::hashes::hex::ToHex;
use bitcoin::Transaction;
use bitcoin::util::psbt::serialize::Serialize;
fn main() {
let amount = 100_000_000u64;
println!();
let spent_raw = Vec::from_hex("02000000000102ff37f428e68cdd9afb31b7abab2eac9669e30a265c37d662e5d526f9915e6dfe0000000000feffffff375bd4ad580eae38afa999d03fe8d6ac66cb7aea095922d1b320c288abc1a7960000000000feffffff0200e1f50500000000160014abde74856eac90d51dca5231eeb5f4bfd43b182b6cf1050100000000160014962e743eac6b38182fa62a5efc536eab774a859b0247304402207c19b1db558e79e1e8b11746139657b909d63d005fdf5fe3b17df9118991899402201cb07cb2f4aa5b878efb2750d72ec767808b28bc63f0383e80d0efae1158da78012102e0db007bb34217f1374f10696c3bb49ca6b4f1a71f95d16770f4a71bc778caa302473044022060b4d556333c714b1114dc66f312910381f0dfa86dc76e0edb91a4fc726229c90220273da569ca4c95ad87a9b7f5023917db0e5b348d9fe440ce1c36b4ba40105130012102e0db007bb34217f1374f10696c3bb49ca6b4f1a71f95d16770f4a71bc778caa3b1040000").unwrap();
let spent_tx = Transaction::consensus_decode(spent_raw.as_slice()).unwrap();
assert_eq!(spent_raw, spent_tx.serialize());
let spending_raw = Vec::from_hex("0200000000010372f33aca9c21b6c441be2124e01d333d332d72f74e967c533faa350b1d66cccd0000000000feffffffd2ba3b016db1c0d1bb19f50783f0ee2a937d72378e897f13c0a4beb3227bca690100000000feffffff01dadd2a9e505d563164c5c4722e1c09befb472be2a39f23121b955d6770d0740100000000feffffff023056eb0b000000001600149010685662c8d9a0057ea34b40e7770c3a310b9f00e1f50500000000160014e111f7be03b675b7e5f7476df6128a990b16fb8f02473044022026cc565cab711788ba0f8d4969ca54649a71a0861d2fb8d3dfff6d79586f9cd502203d92159487792a534a0779a3f9713a4cd5c1d627a3aa3688ddbf8c17026ce0c2012102bfdb2ab817f9f2bbaaac3dc0e4b8d8af58b94ec967123414d3d9ce2c98321d74024730440220148da7eaceab662863b0f38f97ee584f0c839df24ca4d9456400e1736fc09971022054b70a4ac1b5a2090b39087feb817224797c0019c7b0b94f5fe19630e5b20060012102bfdb2ab817f9f2bbaaac3dc0e4b8d8af58b94ec967123414d3d9ce2c98321d740247304402203c43044e9a40153593d0907916723da729bf4cb0a79c3ef023ec35544ec92019022006883444dfc6238527987c66cef841982e1f527638a3b67941ed0ce25ea17b5e012102bfdb2ab817f9f2bbaaac3dc0e4b8d8af58b94ec967123414d3d9ce2c98321d74b2040000").unwrap();
let spending_tx = Transaction::consensus_decode(spending_raw.as_slice()).unwrap();
assert_eq!(spending_raw, spending_tx.serialize());
println!("Spent: {}", spent_raw.to_hex());
println!();
println!("Spending: {}", spending_raw.to_hex());
println!();
bitcoinconsensus::verify(
&spent_tx.output[0].script_pubkey.as_bytes(),
amount,
&spending_raw,
0
)
.unwrap();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment