Skip to content

Instantly share code, notes, and snippets.

@sistemd
Created March 27, 2022 19:07
Show Gist options
  • Save sistemd/d227ea50ff34ecfce2456059235a8ce0 to your computer and use it in GitHub Desktop.
Save sistemd/d227ea50ff34ecfce2456059235a8ce0 to your computer and use it in GitHub Desktop.
use bitcoin::consensus::Decodable;
use bitcoin::consensus::Encodable;
use bitcoin::hashes::hex::FromHex;
use bitcoin::hashes::hex::ToHex;
use bitcoin::secp256k1::Secp256k1;
use bitcoin::secp256k1::SecretKey;
use bitcoin::PrivateKey;
use bitcoin::Transaction;
use std::str::FromStr;
const NETWORK: bitcoin::Network = bitcoin::Network::Regtest;
fn main() {
let secp = Secp256k1::new();
let secret_key =
SecretKey::from_str("83944441c1074a55d99c133a2382f9a1cf1e1d3dfca531d4b63b9865c17b24af")
.unwrap();
let priv1 = PrivateKey::new(secret_key, NETWORK);
let pub1 = priv1.public_key(&secp);
let amount = 100000000u64;
println!("Public key: {}", pub1);
println!();
let spent_tx = Transaction::consensus_decode(Vec::from_hex("020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff03510101ffffffff0200f2052a01000000160014b0aba9a0afad607e37e30446165dc53264b5cb270000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000").unwrap().as_slice()).unwrap();
let mut spent_raw = Vec::new();
spent_tx.consensus_encode(&mut spent_raw).unwrap();
let spending_tx = Transaction::consensus_decode(Vec::from_hex("0200000000010101170f4ffbba5c63d92a7aa66fe7a0b3a28216f9b4ac3b58ca2e1357c2a11d430000000000feffffff0200e1f505000000001600142174044c09001566cd515988428c6c022a8e48afecd90f24010000001600145cfe83788f9ba86b83781eb971cd53ff2898ecdf0247304402203835c973d95c5379202e3feef8063a5ad7a3d49542d54dbbfd2296d1477a1d0c022074d03a0c9ea31b9a7d01f141d235c434cea4dd49482dad802f33655a6d98a4a2012103f544e82757dd299dfd7d6f81f0c4c3270c38d8bcb55f9d47104984ffdb936e4c65000000").unwrap().as_slice()).unwrap();
let mut spending_raw = Vec::new();
spending_tx.consensus_encode(&mut spending_raw).unwrap();
println!("Spent: {}", spent_raw.to_hex());
println!();
println!("Spending: {}", spending_raw.to_hex());
println!();
spent_tx.output[0]
.script_pubkey
.verify(0, amount, &spending_raw)
.unwrap();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment