Skip to content

Commit ea8d39d

Browse files
committed
Use min mempool feerate for outbound updates on anchor channels
As done with inbound feerate updates, we can afford to commit less in fees, as long as we still may the minimum mempool feerate. This enables users to spend a bit more of their balance, as less funds are being committed to transaction fees.
1 parent 0dc5b0c commit ea8d39d

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

lightning/src/ln/channelmanager.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -4235,13 +4235,19 @@ where
42354235
PersistenceNotifierGuard::optionally_notify(&self.total_consistency_lock, &self.persistence_notifier, || {
42364236
let mut should_persist = self.process_background_events();
42374237

4238-
let new_feerate = self.fee_estimator.bounded_sat_per_1000_weight(ConfirmationTarget::Normal);
4238+
let normal_feerate = self.fee_estimator.bounded_sat_per_1000_weight(ConfirmationTarget::Normal);
4239+
let min_mempool_feerate = self.fee_estimator.bounded_sat_per_1000_weight(ConfirmationTarget::MempoolMinimum);
42394240

42404241
let per_peer_state = self.per_peer_state.read().unwrap();
42414242
for (_cp_id, peer_state_mutex) in per_peer_state.iter() {
42424243
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
42434244
let peer_state = &mut *peer_state_lock;
42444245
for (chan_id, chan) in peer_state.channel_by_id.iter_mut() {
4246+
let new_feerate = if chan.context.get_channel_type().supports_anchors_zero_fee_htlc_tx() {
4247+
min_mempool_feerate
4248+
} else {
4249+
normal_feerate
4250+
};
42454251
let chan_needs_persist = self.update_channel_fee(chan_id, chan, new_feerate);
42464252
if chan_needs_persist == NotifyOption::DoPersist { should_persist = NotifyOption::DoPersist; }
42474253
}
@@ -4271,7 +4277,8 @@ where
42714277
PersistenceNotifierGuard::optionally_notify(&self.total_consistency_lock, &self.persistence_notifier, || {
42724278
let mut should_persist = self.process_background_events();
42734279

4274-
let new_feerate = self.fee_estimator.bounded_sat_per_1000_weight(ConfirmationTarget::Normal);
4280+
let normal_feerate = self.fee_estimator.bounded_sat_per_1000_weight(ConfirmationTarget::Normal);
4281+
let min_mempool_feerate = self.fee_estimator.bounded_sat_per_1000_weight(ConfirmationTarget::MempoolMinimum);
42754282

42764283
let mut handle_errors: Vec<(Result<(), _>, _)> = Vec::new();
42774284
let mut timed_out_mpp_htlcs = Vec::new();
@@ -4284,6 +4291,11 @@ where
42844291
let pending_msg_events = &mut peer_state.pending_msg_events;
42854292
let counterparty_node_id = *counterparty_node_id;
42864293
peer_state.channel_by_id.retain(|chan_id, chan| {
4294+
let new_feerate = if chan.context.get_channel_type().supports_anchors_zero_fee_htlc_tx() {
4295+
min_mempool_feerate
4296+
} else {
4297+
normal_feerate
4298+
};
42874299
let chan_needs_persist = self.update_channel_fee(chan_id, chan, new_feerate);
42884300
if chan_needs_persist == NotifyOption::DoPersist { should_persist = NotifyOption::DoPersist; }
42894301

0 commit comments

Comments
 (0)