1pub mod dummy;
2
3use crate::Vtxo;
4use crate::vtxo::GenesisTransition;
5
6impl Vtxo {
7 pub fn invalidate_final_sig(&mut self) {
8 let fake = "cc8b93e9f6fbc2506bb85ae8bbb530b178daac49704f5ce2e3ab69c266fd59320b28d028eef212e3b9fdc42cfd2e0760a0359d3ea7d2e9e8cfe2040e3f1b71ea".parse().unwrap();
9 let item = self.genesis.last_mut().unwrap();
10 match item.transition {
11 GenesisTransition::Cosigned { ref mut signature, .. } => *signature = fake,
12 GenesisTransition::HashLockedCosigned { ref mut signature, .. } => {
13 *signature = fake;
14 },
15 GenesisTransition::Arkoor { ref mut signature, .. } => {
16 signature.replace(fake).expect("didn't have arkoor signature");
17 },
18 }
19 }
20}
21
22#[cfg(test)]
24pub fn verify_tx(
25 inputs: &[bitcoin::TxOut],
26 input_idx: usize,
27 tx: &bitcoin::Transaction,
28) -> Result<(), bitcoinkernel::KernelError> {
29 use bitcoinkernel as krn;
30 use bitcoin::consensus::encode::serialize;
31
32 krn::verify(
33 &krn::ScriptPubkey::new(inputs[input_idx].script_pubkey.as_bytes()).unwrap(),
34 Some(inputs[input_idx].value.to_sat() as i64),
35 &krn::Transaction::new(&serialize(tx)).unwrap(),
36 input_idx,
37 Some(krn::VERIFY_ALL),
38 &inputs.iter().map(|i| krn::TxOut::new(
39 &krn::ScriptPubkey::new(i.script_pubkey.as_bytes()).unwrap(),
40 i.value.to_sat() as i64,
41 )).collect::<Vec<_>>(),
42 )
43}