@@ -13,10 +13,9 @@ use lightning::chain::chaininterface::ConfirmationTarget as LdkConfirmationTarge
13
13
use lightning:: chain:: chaininterface:: FeeEstimator as LdkFeeEstimator ;
14
14
use lightning:: chain:: chaininterface:: FEERATE_FLOOR_SATS_PER_KW ;
15
15
16
- use bdk :: FeeRate ;
16
+ use bitcoin :: FeeRate ;
17
17
use esplora_client:: AsyncClient as EsploraClient ;
18
18
19
- use bitcoin:: blockdata:: weight:: Weight ;
20
19
use bitcoin:: Network ;
21
20
22
21
use std:: collections:: HashMap ;
@@ -116,7 +115,7 @@ where
116
115
} ,
117
116
} ;
118
117
119
- let converted_estimates =
118
+ let converted_estimate_sat_vb =
120
119
esplora_client:: convert_fee_rate ( num_blocks, estimates. clone ( ) ) . map_err ( |e| {
121
120
log_error ! (
122
121
self . logger,
@@ -127,17 +126,16 @@ where
127
126
Error :: FeerateEstimationUpdateFailed
128
127
} ) ?;
129
128
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 ) ;
131
130
132
131
// LDK 0.0.118 introduced changes to the `ConfirmationTarget` semantics that
133
132
// require some post-estimation adjustments to the fee rates, which we do here.
134
133
let adjusted_fee_rate = match target {
135
134
ConfirmationTarget :: Lightning (
136
135
LdkConfirmationTarget :: MinAllowedNonAnchorChannelRemoteFee ,
137
136
) => {
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)
141
139
} ,
142
140
_ => fee_rate,
143
141
} ;
@@ -148,7 +146,7 @@ where
148
146
self . logger,
149
147
"Fee rate estimation updated for {:?}: {} sats/kwu" ,
150
148
target,
151
- adjusted_fee_rate. fee_wu ( Weight :: from_wu ( 1000 ) )
149
+ adjusted_fee_rate. to_sat_per_kwu ( ) ,
152
150
) ;
153
151
}
154
152
Ok ( ( ) )
@@ -182,17 +180,13 @@ where
182
180
} ;
183
181
184
182
// 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 ) ;
186
184
187
185
let estimate = * locked_fee_rate_cache. get ( & confirmation_target) . unwrap_or ( & fallback_rate) ;
188
186
189
187
// Currently we assume every transaction needs to at least be relayable, which is why we
190
188
// 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 ) )
196
190
}
197
191
}
198
192
@@ -201,6 +195,6 @@ where
201
195
L :: Target : Logger ,
202
196
{
203
197
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
205
199
}
206
200
}
0 commit comments