Skip to content

Commit eabf70f

Browse files
Drop Deref indirection for FeeEstimator
Reduces generics and verbosity across the codebase, should provide equivalent behavior.
1 parent 952eb63 commit eabf70f

14 files changed

Lines changed: 268 additions & 369 deletions

File tree

lightning-background-processor/src/lib.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -949,7 +949,7 @@ pub async fn process_events_async<
949949
UL: Deref,
950950
CF: Deref,
951951
T: BroadcasterInterface,
952-
F: Deref,
952+
F: FeeEstimator,
953953
G: Deref<Target = NetworkGraph<L>>,
954954
L: Deref,
955955
P: Deref,
@@ -981,7 +981,6 @@ pub async fn process_events_async<
981981
where
982982
UL::Target: UtxoLookup,
983983
CF::Target: chain::Filter,
984-
F::Target: FeeEstimator,
985984
L::Target: Logger,
986985
P::Target: Persist<<CM::Target as AChannelManager>::Signer>,
987986
CM::Target: AChannelManager,
@@ -1448,7 +1447,7 @@ pub async fn process_events_async_with_kv_store_sync<
14481447
UL: Deref,
14491448
CF: Deref,
14501449
T: BroadcasterInterface,
1451-
F: Deref,
1450+
F: FeeEstimator,
14521451
G: Deref<Target = NetworkGraph<L>>,
14531452
L: Deref,
14541453
P: Deref,
@@ -1480,7 +1479,6 @@ pub async fn process_events_async_with_kv_store_sync<
14801479
where
14811480
UL::Target: UtxoLookup,
14821481
CF::Target: chain::Filter,
1483-
F::Target: FeeEstimator,
14841482
L::Target: Logger,
14851483
P::Target: Persist<<CM::Target as AChannelManager>::Signer>,
14861484
CM::Target: AChannelManager,
@@ -1560,7 +1558,7 @@ impl BackgroundProcessor {
15601558
UL: 'static + Deref,
15611559
CF: 'static + Deref,
15621560
T: 'static + BroadcasterInterface,
1563-
F: 'static + Deref + Send,
1561+
F: 'static + FeeEstimator + Send,
15641562
G: 'static + Deref<Target = NetworkGraph<L>>,
15651563
L: 'static + Deref + Send,
15661564
P: 'static + Deref,
@@ -1592,7 +1590,6 @@ impl BackgroundProcessor {
15921590
where
15931591
UL::Target: 'static + UtxoLookup,
15941592
CF::Target: 'static + chain::Filter,
1595-
F::Target: 'static + FeeEstimator,
15961593
L::Target: 'static + Logger,
15971594
P::Target: 'static + Persist<<CM::Target as AChannelManager>::Signer>,
15981595
ES::Target: 'static + EntropySource,

lightning/src/chain/chaininterface.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -187,26 +187,27 @@ pub trait FeeEstimator {
187187
fn get_est_sat_per_1000_weight(&self, confirmation_target: ConfirmationTarget) -> u32;
188188
}
189189

190+
impl<T: FeeEstimator + ?Sized, F: Deref<Target = T>> FeeEstimator for F {
191+
fn get_est_sat_per_1000_weight(&self, confirmation_target: ConfirmationTarget) -> u32 {
192+
self.deref().get_est_sat_per_1000_weight(confirmation_target)
193+
}
194+
}
195+
190196
/// Minimum relay fee as required by bitcoin network mempool policy.
191197
pub const INCREMENTAL_RELAY_FEE_SAT_PER_1000_WEIGHT: u64 = 253;
192198
/// Minimum feerate that takes a sane approach to bitcoind weight-to-vbytes rounding.
193199
/// See the following Core Lightning commit for an explanation:
194200
/// <https://github.com/ElementsProject/lightning/commit/2e687b9b352c9092b5e8bd4a688916ac50b44af0>
195201
pub const FEERATE_FLOOR_SATS_PER_KW: u32 = 253;
196202

197-
/// Wraps a `Deref` to a `FeeEstimator` so that any fee estimations provided by it
198-
/// are bounded below by `FEERATE_FLOOR_SATS_PER_KW` (253 sats/KW).
203+
/// Wraps a [`FeeEstimator`] so that any fee estimations provided by it are bounded below by
204+
/// `FEERATE_FLOOR_SATS_PER_KW` (253 sats/KW).
199205
///
200206
/// Note that this does *not* implement [`FeeEstimator`] to make it harder to accidentally mix the
201207
/// two.
202-
pub(crate) struct LowerBoundedFeeEstimator<F: Deref>(pub F)
203-
where
204-
F::Target: FeeEstimator;
208+
pub(crate) struct LowerBoundedFeeEstimator<F: FeeEstimator>(pub F);
205209

206-
impl<F: Deref> LowerBoundedFeeEstimator<F>
207-
where
208-
F::Target: FeeEstimator,
209-
{
210+
impl<F: FeeEstimator> LowerBoundedFeeEstimator<F> {
210211
/// Creates a new `LowerBoundedFeeEstimator` which wraps the provided fee_estimator
211212
pub fn new(fee_estimator: F) -> Self {
212213
LowerBoundedFeeEstimator(fee_estimator)

lightning/src/chain/chainmonitor.rs

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -262,12 +262,11 @@ pub struct AsyncPersister<
262262
ES: EntropySource + MaybeSend + MaybeSync + 'static,
263263
SP: Deref + MaybeSend + MaybeSync + 'static,
264264
BI: BroadcasterInterface + MaybeSend + MaybeSync + 'static,
265-
FE: Deref + MaybeSend + MaybeSync + 'static,
265+
FE: FeeEstimator + MaybeSend + MaybeSync + 'static,
266266
> where
267267
K::Target: KVStore + MaybeSync,
268268
L::Target: Logger,
269269
SP::Target: SignerProvider + Sized,
270-
FE::Target: FeeEstimator,
271270
{
272271
persister: MonitorUpdatingPersisterAsync<K, S, L, ES, SP, BI, FE>,
273272
event_notifier: Arc<Notifier>,
@@ -280,13 +279,12 @@ impl<
280279
ES: EntropySource + MaybeSend + MaybeSync + 'static,
281280
SP: Deref + MaybeSend + MaybeSync + 'static,
282281
BI: BroadcasterInterface + MaybeSend + MaybeSync + 'static,
283-
FE: Deref + MaybeSend + MaybeSync + 'static,
282+
FE: FeeEstimator + MaybeSend + MaybeSync + 'static,
284283
> Deref for AsyncPersister<K, S, L, ES, SP, BI, FE>
285284
where
286285
K::Target: KVStore + MaybeSync,
287286
L::Target: Logger,
288287
SP::Target: SignerProvider + Sized,
289-
FE::Target: FeeEstimator,
290288
{
291289
type Target = Self;
292290
fn deref(&self) -> &Self {
@@ -301,13 +299,12 @@ impl<
301299
ES: EntropySource + MaybeSend + MaybeSync + 'static,
302300
SP: Deref + MaybeSend + MaybeSync + 'static,
303301
BI: BroadcasterInterface + MaybeSend + MaybeSync + 'static,
304-
FE: Deref + MaybeSend + MaybeSync + 'static,
302+
FE: FeeEstimator + MaybeSend + MaybeSync + 'static,
305303
> Persist<<SP::Target as SignerProvider>::EcdsaSigner> for AsyncPersister<K, S, L, ES, SP, BI, FE>
306304
where
307305
K::Target: KVStore + MaybeSync,
308306
L::Target: Logger,
309307
SP::Target: SignerProvider + Sized,
310-
FE::Target: FeeEstimator,
311308
<SP::Target as SignerProvider>::EcdsaSigner: MaybeSend + 'static,
312309
{
313310
fn persist_new_channel(
@@ -357,13 +354,12 @@ pub struct ChainMonitor<
357354
ChannelSigner: EcdsaChannelSigner,
358355
C: Deref,
359356
T: BroadcasterInterface,
360-
F: Deref,
357+
F: FeeEstimator,
361358
L: Deref,
362359
P: Deref,
363360
ES: EntropySource,
364361
> where
365362
C::Target: chain::Filter,
366-
F::Target: FeeEstimator,
367363
L::Target: Logger,
368364
P::Target: Persist<ChannelSigner>,
369365
{
@@ -397,7 +393,7 @@ impl<
397393
SP: Deref + MaybeSend + MaybeSync + 'static,
398394
C: Deref,
399395
T: BroadcasterInterface + MaybeSend + MaybeSync + 'static,
400-
F: Deref + MaybeSend + MaybeSync + 'static,
396+
F: FeeEstimator + MaybeSend + MaybeSync + 'static,
401397
L: Deref + MaybeSend + MaybeSync + 'static,
402398
ES: EntropySource + MaybeSend + MaybeSync + 'static,
403399
>
@@ -413,7 +409,6 @@ impl<
413409
K::Target: KVStore + MaybeSync,
414410
SP::Target: SignerProvider + Sized,
415411
C::Target: chain::Filter,
416-
F::Target: FeeEstimator,
417412
L::Target: Logger,
418413
<SP::Target as SignerProvider>::EcdsaSigner: MaybeSend + 'static,
419414
{
@@ -453,14 +448,13 @@ impl<
453448
ChannelSigner: EcdsaChannelSigner,
454449
C: Deref,
455450
T: BroadcasterInterface,
456-
F: Deref,
451+
F: FeeEstimator,
457452
L: Deref,
458453
P: Deref,
459454
ES: EntropySource,
460455
> ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
461456
where
462457
C::Target: chain::Filter,
463-
F::Target: FeeEstimator,
464458
L::Target: Logger,
465459
P::Target: Persist<ChannelSigner>,
466460
{
@@ -884,7 +878,7 @@ where
884878
for (_, monitor_holder) in &*monitors {
885879
monitor_holder.monitor.rebroadcast_pending_claims(
886880
&self.broadcaster,
887-
&*self.fee_estimator,
881+
&self.fee_estimator,
888882
&self.logger,
889883
)
890884
}
@@ -900,15 +894,15 @@ where
900894
if let Some(monitor_holder) = monitors.get(&channel_id) {
901895
monitor_holder.monitor.signer_unblocked(
902896
&self.broadcaster,
903-
&*self.fee_estimator,
897+
&self.fee_estimator,
904898
&self.logger,
905899
)
906900
}
907901
} else {
908902
for (_, monitor_holder) in &*monitors {
909903
monitor_holder.monitor.signer_unblocked(
910904
&self.broadcaster,
911-
&*self.fee_estimator,
905+
&self.fee_estimator,
912906
&self.logger,
913907
)
914908
}
@@ -1098,14 +1092,13 @@ impl<
10981092
ChannelSigner: EcdsaChannelSigner,
10991093
C: Deref,
11001094
T: BroadcasterInterface,
1101-
F: Deref,
1095+
F: FeeEstimator,
11021096
L: Deref,
11031097
P: Deref,
11041098
ES: EntropySource,
11051099
> BaseMessageHandler for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
11061100
where
11071101
C::Target: chain::Filter,
1108-
F::Target: FeeEstimator,
11091102
L::Target: Logger,
11101103
P::Target: Persist<ChannelSigner>,
11111104
{
@@ -1135,14 +1128,13 @@ impl<
11351128
ChannelSigner: EcdsaChannelSigner,
11361129
C: Deref,
11371130
T: BroadcasterInterface,
1138-
F: Deref,
1131+
F: FeeEstimator,
11391132
L: Deref,
11401133
P: Deref,
11411134
ES: EntropySource,
11421135
> SendOnlyMessageHandler for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
11431136
where
11441137
C::Target: chain::Filter,
1145-
F::Target: FeeEstimator,
11461138
L::Target: Logger,
11471139
P::Target: Persist<ChannelSigner>,
11481140
{
@@ -1152,14 +1144,13 @@ impl<
11521144
ChannelSigner: EcdsaChannelSigner,
11531145
C: Deref,
11541146
T: BroadcasterInterface,
1155-
F: Deref,
1147+
F: FeeEstimator,
11561148
L: Deref,
11571149
P: Deref,
11581150
ES: EntropySource,
11591151
> chain::Listen for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
11601152
where
11611153
C::Target: chain::Filter,
1162-
F::Target: FeeEstimator,
11631154
L::Target: Logger,
11641155
P::Target: Persist<ChannelSigner>,
11651156
{
@@ -1176,7 +1167,7 @@ where
11761167
txdata,
11771168
height,
11781169
&self.broadcaster,
1179-
&*self.fee_estimator,
1170+
&self.fee_estimator,
11801171
&self.logger,
11811172
)
11821173
});
@@ -1203,7 +1194,7 @@ where
12031194
monitor_state.monitor.blocks_disconnected(
12041195
fork_point,
12051196
&self.broadcaster,
1206-
&*self.fee_estimator,
1197+
&self.fee_estimator,
12071198
&self.logger,
12081199
);
12091200
}
@@ -1214,14 +1205,13 @@ impl<
12141205
ChannelSigner: EcdsaChannelSigner,
12151206
C: Deref,
12161207
T: BroadcasterInterface,
1217-
F: Deref,
1208+
F: FeeEstimator,
12181209
L: Deref,
12191210
P: Deref,
12201211
ES: EntropySource,
12211212
> chain::Confirm for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
12221213
where
12231214
C::Target: chain::Filter,
1224-
F::Target: FeeEstimator,
12251215
L::Target: Logger,
12261216
P::Target: Persist<ChannelSigner>,
12271217
{
@@ -1239,7 +1229,7 @@ where
12391229
txdata,
12401230
height,
12411231
&self.broadcaster,
1242-
&*self.fee_estimator,
1232+
&self.fee_estimator,
12431233
&self.logger,
12441234
)
12451235
});
@@ -1254,7 +1244,7 @@ where
12541244
monitor_state.monitor.transaction_unconfirmed(
12551245
txid,
12561246
&self.broadcaster,
1257-
&*self.fee_estimator,
1247+
&self.fee_estimator,
12581248
&self.logger,
12591249
);
12601250
}
@@ -1275,7 +1265,7 @@ where
12751265
header,
12761266
height,
12771267
&self.broadcaster,
1278-
&*self.fee_estimator,
1268+
&self.fee_estimator,
12791269
&self.logger,
12801270
)
12811271
});
@@ -1307,14 +1297,13 @@ impl<
13071297
ChannelSigner: EcdsaChannelSigner,
13081298
C: Deref,
13091299
T: BroadcasterInterface,
1310-
F: Deref,
1300+
F: FeeEstimator,
13111301
L: Deref,
13121302
P: Deref,
13131303
ES: EntropySource,
13141304
> chain::Watch<ChannelSigner> for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
13151305
where
13161306
C::Target: chain::Filter,
1317-
F::Target: FeeEstimator,
13181307
L::Target: Logger,
13191308
P::Target: Persist<ChannelSigner>,
13201309
{
@@ -1501,14 +1490,13 @@ impl<
15011490
ChannelSigner: EcdsaChannelSigner,
15021491
C: Deref,
15031492
T: BroadcasterInterface,
1504-
F: Deref,
1493+
F: FeeEstimator,
15051494
L: Deref,
15061495
P: Deref,
15071496
ES: EntropySource,
15081497
> events::EventsProvider for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
15091498
where
15101499
C::Target: chain::Filter,
1511-
F::Target: FeeEstimator,
15121500
L::Target: Logger,
15131501
P::Target: Persist<ChannelSigner>,
15141502
{

0 commit comments

Comments
 (0)