X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=rust-lightning;a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Ffunctional_test_utils.rs;fp=lightning%2Fsrc%2Fln%2Ffunctional_test_utils.rs;h=d21dc792185b0eeb2f1899b3e35fb95e3b98476c;hp=a8c4d279763950e8dda2b5d326c7587c4e089214;hb=34daef5ae560b984d4dea231ae9759da5a9bfc69;hpb=23f07aaa4b3fe8dea40ba8551434efc2c1e99402 diff --git a/lightning/src/ln/functional_test_utils.rs b/lightning/src/ln/functional_test_utils.rs index a8c4d279..d21dc792 100644 --- a/lightning/src/ln/functional_test_utils.rs +++ b/lightning/src/ln/functional_test_utils.rs @@ -475,14 +475,25 @@ pub fn create_announced_chan_between_nodes_with_value<'a, 'b, 'c, 'd>(nodes: &'a macro_rules! check_spends { ($tx: expr, $($spends_txn: expr),*) => { { - $tx.verify(|out_point| { + let get_output = |out_point: &bitcoin::blockdata::transaction::OutPoint| { $( if out_point.txid == $spends_txn.txid() { return $spends_txn.output.get(out_point.vout as usize).cloned() } )* None - }).unwrap(); + }; + let mut total_value_in = 0; + for input in $tx.input.iter() { + total_value_in += get_output(&input.previous_output).unwrap().value; + } + let mut total_value_out = 0; + for output in $tx.output.iter() { + total_value_out += output.value; + } + let min_fee = $tx.get_weight() as u64 / 4; // One sat per vbyte + assert!(total_value_out + min_fee <= total_value_in); // Must not be equal as there must be a fee! + $tx.verify(get_output).unwrap(); } } }