@@ -151,32 +151,32 @@ impl Readable for InputDescriptors {
151
151
macro_rules! subtract_high_prio_fee {
152
152
( $logger: ident, $fee_estimator: expr, $value: expr, $predicted_weight: expr, $used_feerate: expr) => {
153
153
{
154
- $used_feerate = $fee_estimator. get_est_sat_per_1000_weight( ConfirmationTarget :: HighPriority ) ;
155
- let mut fee = $used_feerate * ( $predicted_weight as u32 ) / 1000 ;
156
- if $value <= fee. into ( ) {
157
- $used_feerate = $fee_estimator. get_est_sat_per_1000_weight( ConfirmationTarget :: Normal ) ;
158
- fee = $used_feerate * ( $predicted_weight as u32 ) / 1000 ;
154
+ $used_feerate = $fee_estimator. get_est_sat_per_1000_weight( ConfirmationTarget :: HighPriority ) . into ( ) ;
155
+ let mut fee = $used_feerate as u64 * $predicted_weight / 1000 ;
156
+ if $value <= fee {
157
+ $used_feerate = $fee_estimator. get_est_sat_per_1000_weight( ConfirmationTarget :: Normal ) . into ( ) ;
158
+ fee = $used_feerate as u64 * $predicted_weight / 1000 ;
159
159
if $value <= fee. into( ) {
160
- $used_feerate = $fee_estimator. get_est_sat_per_1000_weight( ConfirmationTarget :: Background ) ;
161
- fee = $used_feerate * ( $predicted_weight as u32 ) / 1000 ;
162
- if $value <= fee. into ( ) {
160
+ $used_feerate = $fee_estimator. get_est_sat_per_1000_weight( ConfirmationTarget :: Background ) . into ( ) ;
161
+ fee = $used_feerate as u64 * $predicted_weight / 1000 ;
162
+ if $value <= fee {
163
163
log_error!( $logger, "Failed to generate an on-chain punishment tx as even low priority fee ({} sat) was more than the entire claim balance ({} sat)" ,
164
164
fee, $value) ;
165
165
false
166
166
} else {
167
167
log_warn!( $logger, "Used low priority fee for on-chain punishment tx as high priority fee was more than the entire claim balance ({} sat)" ,
168
168
$value) ;
169
- $value -= fee as u64 ;
169
+ $value -= fee;
170
170
true
171
171
}
172
172
} else {
173
173
log_warn!( $logger, "Used medium priority fee for on-chain punishment tx as high priority fee was more than the entire claim balance ({} sat)" ,
174
174
$value) ;
175
- $value -= fee as u64 ;
175
+ $value -= fee;
176
176
true
177
177
}
178
178
} else {
179
- $value -= fee as u64 ;
179
+ $value -= fee;
180
180
true
181
181
}
182
182
}
@@ -490,29 +490,29 @@ impl<ChanSigner: ChannelKeys> OnchainTxHandler<ChanSigner> {
490
490
macro_rules! RBF_bump {
491
491
( $amount: expr, $old_feerate: expr, $fee_estimator: expr, $predicted_weight: expr) => {
492
492
{
493
- let mut used_feerate;
493
+ let mut used_feerate: u32 ;
494
494
// If old feerate inferior to actual one given back by Fee Estimator, use it to compute new fee...
495
495
let new_fee = if $old_feerate < $fee_estimator. get_est_sat_per_1000_weight( ConfirmationTarget :: HighPriority ) {
496
496
let mut value = $amount;
497
497
if subtract_high_prio_fee!( logger, $fee_estimator, value, $predicted_weight, used_feerate) {
498
498
// Overflow check is done in subtract_high_prio_fee
499
- ( $amount - value) as u32
499
+ ( $amount - value)
500
500
} else {
501
501
log_trace!( logger, "Can't new-estimation bump new claiming tx, amount {} is too small" , $amount) ;
502
502
return None ;
503
503
}
504
504
// ...else just increase the previous feerate by 25% (because that's a nice number)
505
505
} else {
506
- let fee = $old_feerate * ( $predicted_weight as u32 ) / 750 ;
507
- if $amount <= fee as u64 {
506
+ let fee = $old_feerate as u64 * ( $predicted_weight as u64 ) / 750 ;
507
+ if $amount <= fee {
508
508
log_trace!( logger, "Can't 25% bump new claiming tx, amount {} is too small" , $amount) ;
509
509
return None ;
510
510
}
511
511
fee
512
512
} ;
513
513
514
- let previous_fee = $old_feerate * ( $predicted_weight as u32 ) / 1000 ;
515
- let min_relay_fee = MIN_RELAY_FEE_SAT_PER_1000_WEIGHT * ( $predicted_weight as u32 ) / 1000 ;
514
+ let previous_fee = $old_feerate as u64 * ( $predicted_weight as u64 ) / 1000 ;
515
+ let min_relay_fee = MIN_RELAY_FEE_SAT_PER_1000_WEIGHT * ( $predicted_weight as u64 ) / 1000 ;
516
516
// BIP 125 Opt-in Full Replace-by-Fee Signaling
517
517
// * 3. The replacement transaction pays an absolute fee of at least the sum paid by the original transactions.
518
518
// * 4. The replacement transaction must also pay for its own bandwidth at or above the rate set by the node's minimum relay fee setting.
@@ -521,7 +521,7 @@ impl<ChanSigner: ChannelKeys> OnchainTxHandler<ChanSigner> {
521
521
} else {
522
522
new_fee
523
523
} ;
524
- Some ( ( new_fee, new_fee * 1000 / ( $predicted_weight as u32 ) ) )
524
+ Some ( ( new_fee, new_fee * 1000 / ( $predicted_weight as u64 ) ) )
525
525
}
526
526
}
527
527
}
@@ -551,7 +551,7 @@ impl<ChanSigner: ChannelKeys> OnchainTxHandler<ChanSigner> {
551
551
}
552
552
}
553
553
if dynamic_fee {
554
- let predicted_weight = bumped_tx. get_weight ( ) + inputs_witnesses_weight;
554
+ let predicted_weight = ( bumped_tx. get_weight ( ) + inputs_witnesses_weight) as u64 ;
555
555
let mut new_feerate;
556
556
// If old feerate is 0, first iteration of this claim, use normal fee calculation
557
557
if cached_claim_datas. feerate_previous != 0 {
@@ -620,8 +620,8 @@ impl<ChanSigner: ChannelKeys> OnchainTxHandler<ChanSigner> {
620
620
}
621
621
}
622
622
log_trace ! ( logger, "...with timer {}" , new_timer. unwrap( ) ) ;
623
- assert ! ( predicted_weight >= bumped_tx. get_weight( ) ) ;
624
- return Some ( ( new_timer, new_feerate, bumped_tx) )
623
+ assert ! ( predicted_weight >= bumped_tx. get_weight( ) as u64 ) ;
624
+ return Some ( ( new_timer, new_feerate as u32 , bumped_tx) )
625
625
} else {
626
626
for ( _, ( outp, per_outp_material) ) in cached_claim_datas. per_input_material . iter ( ) . enumerate ( ) {
627
627
match per_outp_material {
0 commit comments