Cast weights to u64 to support the new rust-bitcoin api

This commit is contained in:
Elichai Turkel 2019-08-23 19:12:55 -04:00
parent f4e8974c16
commit 5bb7ba5b7d
No known key found for this signature in database
GPG key ID: 9383CDE9E8E66A7F
5 changed files with 29 additions and 23 deletions

View 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)

View 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 {

View 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.

View 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();
}
}
}

View 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());