Cast weights to u64 to support the new rust-bitcoin api
authorElichai Turkel <elichai.turkel@gmail.com>
Fri, 23 Aug 2019 23:12:55 +0000 (19:12 -0400)
committerElichai Turkel <elichai.turkel@gmail.com>
Sat, 24 Aug 2019 15:04:41 +0000 (11:04 -0400)
src/ln/chan_utils.rs
src/ln/channel.rs
src/ln/channelmonitor.rs
src/ln/functional_test_utils.rs
src/ln/functional_tests.rs

index eab80a54e797cd9489e2fe25c59dc76f15375c48..1d8dd30760f4b7384ec247a5bfae1f6482d523a7 100644 (file)
@@ -133,7 +133,7 @@ pub fn get_revokeable_redeemscript(revocation_key: &PublicKey, to_self_delay: u1
                      .push_slice(&revocation_key.serialize())
                      .push_opcode(opcodes::all::OP_ELSE)
                      .push_int(to_self_delay as i64)
-                     .push_opcode(opcodes::OP_CSV)
+                     .push_opcode(opcodes::all::OP_CSV)
                      .push_opcode(opcodes::all::OP_DROP)
                      .push_slice(&delayed_payment_key.serialize())
                      .push_opcode(opcodes::all::OP_ENDIF)
@@ -206,7 +206,7 @@ pub fn get_htlc_redeemscript_with_explicit_keys(htlc: &HTLCOutputInCommitment, a
                              .push_opcode(opcodes::all::OP_ELSE)
                              .push_opcode(opcodes::all::OP_DROP)
                              .push_int(htlc.cltv_expiry as i64)
-                             .push_opcode(opcodes::OP_CLTV)
+                             .push_opcode(opcodes::all::OP_CLTV)
                              .push_opcode(opcodes::all::OP_DROP)
                              .push_opcode(opcodes::all::OP_CHECKSIG)
                              .push_opcode(opcodes::all::OP_ENDIF)
index 04a65b361e3cf8cfdbbf3fab118ecc8985ed6b53..c1eaad02384793a1770a622790df1c90461324ae 100644 (file)
@@ -2784,7 +2784,7 @@ impl Channel {
                        }
                }
 
-               let proposed_sat_per_kw = msg.fee_satoshis * 1000 / closing_tx.get_weight();
+               let proposed_sat_per_kw = msg.fee_satoshis * 1000 / closing_tx.get_weight() as u64;
                if self.channel_outbound {
                        let our_max_feerate = fee_estimator.get_est_sat_per_1000_weight(ConfirmationTarget::Normal);
                        if proposed_sat_per_kw > our_max_feerate {
index 4d54b6412f1050b52cae8db2b3a28c72297bee0a..5bcd74f76f10108832922ad00d8cb93ea795357a 100644 (file)
@@ -488,13 +488,13 @@ macro_rules! subtract_high_prio_fee {
        ($self: ident, $fee_estimator: expr, $value: expr, $predicted_weight: expr, $spent_txid: expr, $used_feerate: expr) => {
                {
                        $used_feerate = $fee_estimator.get_est_sat_per_1000_weight(ConfirmationTarget::HighPriority);
-                       let mut fee = $used_feerate * $predicted_weight / 1000;
+                       let mut fee = $used_feerate * ($predicted_weight as u64) / 1000;
                        if $value <= fee {
                                $used_feerate = $fee_estimator.get_est_sat_per_1000_weight(ConfirmationTarget::Normal);
-                               fee = $used_feerate * $predicted_weight / 1000;
+                               fee = $used_feerate * ($predicted_weight as u64) / 1000;
                                if $value <= fee {
                                        $used_feerate = $fee_estimator.get_est_sat_per_1000_weight(ConfirmationTarget::Background);
-                                       fee = $used_feerate * $predicted_weight / 1000;
+                                       fee = $used_feerate * ($predicted_weight as u64) / 1000;
                                        if $value <= fee {
                                                log_error!($self, "Failed to generate an on-chain punishment tx spending {} as even low priority fee ({} sat) was more than the entire claim balance ({} sat)",
                                                        $spent_txid, fee, $value);
@@ -602,7 +602,7 @@ impl ChannelMonitor {
                }
        }
 
-       fn get_witnesses_weight(inputs: &[InputDescriptors]) -> u64 {
+       fn get_witnesses_weight(inputs: &[InputDescriptors]) -> usize {
                let mut tx_weight = 2; // count segwit flags
                for inp in inputs {
                        // We use expected weight (and not actual) as signatures and time lock delays may vary
@@ -3307,7 +3307,7 @@ mod tests {
                let secp_ctx = Secp256k1::new();
                let privkey = SecretKey::from_slice(&hex::decode("0101010101010101010101010101010101010101010101010101010101010101").unwrap()[..]).unwrap();
                let pubkey = PublicKey::from_secret_key(&secp_ctx, &privkey);
-               let mut sum_actual_sigs: u64 = 0;
+               let mut sum_actual_sigs = 0;
 
                macro_rules! sign_input {
                        ($sighash_parts: expr, $input: expr, $idx: expr, $amount: expr, $input_type: expr, $sum_actual_sigs: expr) => {
@@ -3323,7 +3323,7 @@ mod tests {
                                let sig = secp_ctx.sign(&sighash, &privkey);
                                $input.witness.push(sig.serialize_der().to_vec());
                                $input.witness[0].push(SigHashType::All as u8);
-                               sum_actual_sigs += $input.witness[0].len() as u64;
+                               sum_actual_sigs += $input.witness[0].len();
                                if *$input_type == InputDescriptors::RevokedOutput {
                                        $input.witness.push(vec!(1));
                                } else if *$input_type == InputDescriptors::RevokedOfferedHTLC || *$input_type == InputDescriptors::RevokedReceivedHTLC {
@@ -3366,7 +3366,7 @@ mod tests {
                for (idx, inp) in claim_tx.input.iter_mut().zip(inputs_des.iter()).enumerate() {
                        sign_input!(sighash_parts, inp.0, idx as u32, 0, inp.1, sum_actual_sigs);
                }
-               assert_eq!(base_weight + ChannelMonitor::get_witnesses_weight(&inputs_des[..]),  claim_tx.get_weight() + /* max_length_sig */ (73 * inputs_des.len() as u64 - sum_actual_sigs));
+               assert_eq!(base_weight + ChannelMonitor::get_witnesses_weight(&inputs_des[..]),  claim_tx.get_weight() + /* max_length_sig */ (73 * inputs_des.len() - sum_actual_sigs));
 
                // Claim tx with 1 offered HTLCs, 3 received HTLCs
                claim_tx.input.clear();
@@ -3388,7 +3388,7 @@ mod tests {
                for (idx, inp) in claim_tx.input.iter_mut().zip(inputs_des.iter()).enumerate() {
                        sign_input!(sighash_parts, inp.0, idx as u32, 0, inp.1, sum_actual_sigs);
                }
-               assert_eq!(base_weight + ChannelMonitor::get_witnesses_weight(&inputs_des[..]),  claim_tx.get_weight() + /* max_length_sig */ (73 * inputs_des.len() as u64 - sum_actual_sigs));
+               assert_eq!(base_weight + ChannelMonitor::get_witnesses_weight(&inputs_des[..]),  claim_tx.get_weight() + /* max_length_sig */ (73 * inputs_des.len() - sum_actual_sigs));
 
                // Justice tx with 1 revoked HTLC-Success tx output
                claim_tx.input.clear();
@@ -3408,7 +3408,7 @@ mod tests {
                for (idx, inp) in claim_tx.input.iter_mut().zip(inputs_des.iter()).enumerate() {
                        sign_input!(sighash_parts, inp.0, idx as u32, 0, inp.1, sum_actual_sigs);
                }
-               assert_eq!(base_weight + ChannelMonitor::get_witnesses_weight(&inputs_des[..]), claim_tx.get_weight() + /* max_length_isg */ (73 * inputs_des.len() as u64 - sum_actual_sigs));
+               assert_eq!(base_weight + ChannelMonitor::get_witnesses_weight(&inputs_des[..]), claim_tx.get_weight() + /* max_length_isg */ (73 * inputs_des.len() - sum_actual_sigs));
        }
 
        // Further testing is done in the ChannelManager integration tests.
index fe32a1ef24bf9f5d239044e446eab284f1295bae..3c84cff5b1a418e13c1896d888361fd742d81e2e 100644 (file)
@@ -29,8 +29,6 @@ use secp256k1::key::PublicKey;
 use rand::{thread_rng,Rng};
 
 use std::cell::RefCell;
-use std::collections::HashMap;
-use std::default::Default;
 use std::rc::Rc;
 use std::sync::{Arc, Mutex};
 use std::mem;
@@ -307,10 +305,13 @@ pub fn create_announced_chan_between_nodes_with_value(nodes: &Vec<Node>, a: usiz
 macro_rules! check_spends {
        ($tx: expr, $spends_tx: expr) => {
                {
-                       let mut funding_tx_map = HashMap::new();
-                       let spends_tx = $spends_tx;
-                       funding_tx_map.insert(spends_tx.txid(), spends_tx);
-                       $tx.verify(&funding_tx_map).unwrap();
+                       $tx.verify(|out_point| {
+                               if out_point.txid == $spends_tx.txid() {
+                                       $spends_tx.output.get(out_point.vout as usize).cloned()
+                               } else {
+                                       None
+                               }
+                       }).unwrap();
                }
        }
 }
index 819fc23ba138b61d99cf36e95191b5efed54b8a6..e37b63cc19f53a89dd310dba3687d96912fb4037 100644 (file)
@@ -2030,11 +2030,16 @@ fn claim_htlc_outputs_single_tx() {
                assert_eq!(node_txn[1].input.len(), 1);
                assert_eq!(node_txn[2].input.len(), 1);
 
-               let mut revoked_tx_map = HashMap::new();
-               revoked_tx_map.insert(revoked_local_txn[0].txid(), revoked_local_txn[0].clone());
-               node_txn[0].verify(&revoked_tx_map).unwrap();
-               node_txn[1].verify(&revoked_tx_map).unwrap();
-               node_txn[2].verify(&revoked_tx_map).unwrap();
+               fn get_txout(out_point: &BitcoinOutPoint, tx: &Transaction) -> Option<TxOut> {
+                       if out_point.txid == tx.txid() {
+                               tx.output.get(out_point.vout as usize).cloned()
+                       } else {
+                               None
+                       }
+               }
+               node_txn[0].verify(|out|get_txout(out, &revoked_local_txn[0])).unwrap();
+               node_txn[1].verify(|out|get_txout(out, &revoked_local_txn[0])).unwrap();
+               node_txn[2].verify(|out|get_txout(out, &revoked_local_txn[0])).unwrap();
 
                let mut witness_lens = BTreeSet::new();
                witness_lens.insert(node_txn[0].input[0].witness.last().unwrap().len());