Skip to content

Commit 216d234

Browse files
committed
f RB/BDK: Account for bitcoin::FeeRate being used
1 parent 13a833f commit 216d234

File tree

1 file changed

+9
-15
lines changed

1 file changed

+9
-15
lines changed

src/fee_estimator.rs

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ use lightning::chain::chaininterface::ConfirmationTarget as LdkConfirmationTarge
1313
use lightning::chain::chaininterface::FeeEstimator as LdkFeeEstimator;
1414
use lightning::chain::chaininterface::FEERATE_FLOOR_SATS_PER_KW;
1515

16-
use bdk::FeeRate;
16+
use bitcoin::FeeRate;
1717
use esplora_client::AsyncClient as EsploraClient;
1818

19-
use bitcoin::blockdata::weight::Weight;
2019
use bitcoin::Network;
2120

2221
use std::collections::HashMap;
@@ -116,7 +115,7 @@ where
116115
},
117116
};
118117

119-
let converted_estimates =
118+
let converted_estimate_sat_vb =
120119
esplora_client::convert_fee_rate(num_blocks, estimates.clone()).map_err(|e| {
121120
log_error!(
122121
self.logger,
@@ -127,17 +126,16 @@ where
127126
Error::FeerateEstimationUpdateFailed
128127
})?;
129128

130-
let fee_rate = FeeRate::from_sat_per_vb(converted_estimates);
129+
let fee_rate = FeeRate::from_sat_per_kwu((converted_estimate_sat_vb * 250.0) as u64);
131130

132131
// LDK 0.0.118 introduced changes to the `ConfirmationTarget` semantics that
133132
// require some post-estimation adjustments to the fee rates, which we do here.
134133
let adjusted_fee_rate = match target {
135134
ConfirmationTarget::Lightning(
136135
LdkConfirmationTarget::MinAllowedNonAnchorChannelRemoteFee,
137136
) => {
138-
let slightly_less_than_background =
139-
fee_rate.fee_wu(Weight::from_wu(1000)) - 250;
140-
FeeRate::from_sat_per_kwu(slightly_less_than_background as f32)
137+
let slightly_less_than_background = fee_rate.to_sat_per_kwu() - 250;
138+
FeeRate::from_sat_per_kwu(slightly_less_than_background)
141139
},
142140
_ => fee_rate,
143141
};
@@ -148,7 +146,7 @@ where
148146
self.logger,
149147
"Fee rate estimation updated for {:?}: {} sats/kwu",
150148
target,
151-
adjusted_fee_rate.fee_wu(Weight::from_wu(1000))
149+
adjusted_fee_rate.to_sat_per_kwu(),
152150
);
153151
}
154152
Ok(())
@@ -182,17 +180,13 @@ where
182180
};
183181

184182
// We'll fall back on this, if we really don't have any other information.
185-
let fallback_rate = FeeRate::from_sat_per_kwu(fallback_sats_kwu as f32);
183+
let fallback_rate = FeeRate::from_sat_per_kwu(fallback_sats_kwu as u64);
186184

187185
let estimate = *locked_fee_rate_cache.get(&confirmation_target).unwrap_or(&fallback_rate);
188186

189187
// Currently we assume every transaction needs to at least be relayable, which is why we
190188
// enforce a lower bound of `FEERATE_FLOOR_SATS_PER_KW`.
191-
let weight_units = Weight::from_wu(1000);
192-
FeeRate::from_wu(
193-
estimate.fee_wu(weight_units).max(FEERATE_FLOOR_SATS_PER_KW as u64),
194-
weight_units,
195-
)
189+
FeeRate::from_sat_per_kwu(estimate.to_sat_per_kwu().max(FEERATE_FLOOR_SATS_PER_KW as u64))
196190
}
197191
}
198192

@@ -201,6 +195,6 @@ where
201195
L::Target: Logger,
202196
{
203197
fn get_est_sat_per_1000_weight(&self, confirmation_target: LdkConfirmationTarget) -> u32 {
204-
self.estimate_fee_rate(confirmation_target.into()).fee_wu(Weight::from_wu(1000)) as u32
198+
self.estimate_fee_rate(confirmation_target.into()).to_sat_per_kwu() as u32
205199
}
206200
}

0 commit comments

Comments
 (0)