use blvm_consensus::block::calculate_tx_id;
use blvm_consensus::types::*;
#[test]
fn test_cache_key_includes_script_pubkey() {
let tx1 = Transaction {
version: 1,
inputs: vec![TransactionInput {
prevout: OutPoint {
hash: [0u8; 32],
index: 0,
},
script_sig: vec![0x04, 0xff, 0xff, 0x00, 0x1d, 0x01, 0x0b],
sequence: 0xffffffff,
}].into_boxed_slice(),
outputs: vec![TransactionOutput {
value: 50_0000_0000,
script_pubkey: vec![0x43, 0x41, 0x04, 0x72, 0x11, 0xa8, 0x24, 0xf5, 0x5b, 0x50, 0x52, 0x28, 0xe4, 0xc3, 0xd5, 0x19, 0x4c, 0x1f, 0xcf, 0xaa, 0x15, 0xa4, 0x56, 0xab, 0xdf, 0x37, 0xf9, 0xb9, 0xd9, 0x7a, 0x40, 0x40, 0xaf, 0xc0, 0x73, 0xde, 0xe6, 0xc8],
}].into_boxed_slice(),
lock_time: 0,
};
let tx2 = Transaction {
version: 1,
inputs: vec![TransactionInput {
prevout: OutPoint {
hash: [0u8; 32],
index: 0,
},
script_sig: vec![0x04, 0xff, 0xff, 0x00, 0x1d, 0x01, 0x0b], sequence: 0xffffffff,
}].into_boxed_slice(),
outputs: vec![TransactionOutput {
value: 50_0000_0000, script_pubkey: vec![0x43, 0x41, 0x04, 0x97, 0x73, 0x67, 0x16, 0x4c, 0xa2, 0x4f, 0x1f, 0x2d, 0xe2, 0xe2, 0xcf, 0xb9, 0xe5, 0xc3, 0xf2, 0x2d, 0x51, 0x0d, 0x3f, 0x33, 0x68, 0x3d, 0xe2, 0x00, 0x28, 0x31, 0x00, 0xaf, 0x0c, 0x86, 0x67, 0xdb, 0xa7, 0xe4], }].into_boxed_slice(),
lock_time: 0,
};
let tx1_id = calculate_tx_id(&tx1);
let tx2_id = calculate_tx_id(&tx2);
assert_ne!(tx1_id, tx2_id,
"Transactions with different script_pubkey must have different txids");
let expected_tx1 = hex::decode("d5fdcc541e25de1c7a5addedf24858b8bb665c9f36ef744ee42c316022c90f9b").unwrap();
let expected_tx2 = hex::decode("442ee91b2b999fb15d61f6a88ecf2988e9c8ed48f002476128e670d3dac19fe7").unwrap();
assert_ne!(tx1_id, tx2_id, "Must have different txids");
}