Skip to content

Commit c1bb5d3

Browse files
committed
Remove AvailableBalances::balance_msat
The ChannelMonitor::get_claimable_balances method provides a more straightforward approach to the balance of a channel, which satisfies most use cases. The computation of AvailableBalances::balance_msat is complex and originally had a different purpose that is not applicable anymore.
1 parent 6f58072 commit c1bb5d3

File tree

6 files changed

+12
-35
lines changed

6 files changed

+12
-35
lines changed

fuzz/src/router.rs

-1
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,6 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
232232
force_close_spend_delay: None,
233233
is_outbound: true, is_channel_ready: true,
234234
is_usable: true, is_public: true,
235-
balance_msat: 0,
236235
outbound_capacity_msat: capacity.saturating_mul(1000),
237236
next_outbound_htlc_limit_msat: capacity.saturating_mul(1000),
238237
next_outbound_htlc_minimum_msat: 0,

lightning/src/chain/chainmonitor.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -364,8 +364,7 @@ where C::Target: chain::Filter,
364364
/// claims which are awaiting confirmation.
365365
///
366366
/// Includes the balances from each [`ChannelMonitor`] *except* those included in
367-
/// `ignored_channels`, allowing you to filter out balances from channels which are still open
368-
/// (and whose balance should likely be pulled from the [`ChannelDetails`]).
367+
/// `ignored_channels`.
369368
///
370369
/// See [`ChannelMonitor::get_claimable_balances`] for more details on the exact criteria for
371370
/// inclusion in the return value.

lightning/src/ln/channel.rs

-11
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ pub struct ChannelValueStat {
6565
}
6666

6767
pub struct AvailableBalances {
68-
/// The amount that would go to us if we close the channel, ignoring any on-chain fees.
69-
pub balance_msat: u64,
7068
/// Total amount available for our counterparty to send to us.
7169
pub inbound_capacity_msat: u64,
7270
/// Total amount available for us to send to our counterparty.
@@ -1611,14 +1609,6 @@ impl<Signer: ChannelSigner> ChannelContext<Signer> {
16111609
let inbound_stats = context.get_inbound_pending_htlc_stats(None);
16121610
let outbound_stats = context.get_outbound_pending_htlc_stats(None);
16131611

1614-
let mut balance_msat = context.value_to_self_msat;
1615-
for ref htlc in context.pending_inbound_htlcs.iter() {
1616-
if let InboundHTLCState::LocalRemoved(InboundHTLCRemovalReason::Fulfill(_)) = htlc.state {
1617-
balance_msat += htlc.amount_msat;
1618-
}
1619-
}
1620-
balance_msat -= outbound_stats.pending_htlcs_value_msat;
1621-
16221612
let outbound_capacity_msat = context.value_to_self_msat
16231613
.saturating_sub(outbound_stats.pending_htlcs_value_msat)
16241614
.saturating_sub(
@@ -1735,7 +1725,6 @@ impl<Signer: ChannelSigner> ChannelContext<Signer> {
17351725
outbound_capacity_msat,
17361726
next_outbound_htlc_limit_msat: available_capacity_msat,
17371727
next_outbound_htlc_minimum_msat,
1738-
balance_msat,
17391728
}
17401729
}
17411730

lightning/src/ln/channelmanager.rs

+10-19
Original file line numberDiff line numberDiff line change
@@ -1332,6 +1332,12 @@ pub struct ChannelCounterparty {
13321332
}
13331333

13341334
/// Details of a channel, as returned by [`ChannelManager::list_channels`] and [`ChannelManager::list_usable_channels`]
1335+
///
1336+
/// Balances of a channel are available through [`ChainMonitor::get_claimable_balances`] and
1337+
/// [`ChannelMonitor::get_claimable_balances`], calculated with respect to the corresponding on-chain
1338+
/// transactions.
1339+
///
1340+
/// [`ChainMonitor::get_claimable_balances`]: crate::chain::chainmonitor::ChainMonitor::get_claimable_balances
13351341
#[derive(Clone, Debug, PartialEq)]
13361342
pub struct ChannelDetails {
13371343
/// The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
@@ -1407,24 +1413,11 @@ pub struct ChannelDetails {
14071413
///
14081414
/// This value will be `None` for objects serialized with LDK versions prior to 0.0.115.
14091415
pub feerate_sat_per_1000_weight: Option<u32>,
1410-
/// Our total balance. This is the amount we would get if we close the channel.
1411-
/// This value is not exact. Due to various in-flight changes and feerate changes, exactly this
1412-
/// amount is not likely to be recoverable on close.
1413-
///
1414-
/// This does not include any pending HTLCs which are not yet fully resolved (and, thus, whose
1415-
/// balance is not available for inclusion in new outbound HTLCs). This further does not include
1416-
/// any pending outgoing HTLCs which are awaiting some other resolution to be sent.
1417-
/// This does not consider any on-chain fees.
1418-
///
1419-
/// See also [`ChannelDetails::outbound_capacity_msat`]
1420-
pub balance_msat: u64,
14211416
/// The available outbound capacity for sending HTLCs to the remote peer. This does not include
14221417
/// any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
14231418
/// available for inclusion in new outbound HTLCs). This further does not include any pending
14241419
/// outgoing HTLCs which are awaiting some other resolution to be sent.
14251420
///
1426-
/// See also [`ChannelDetails::balance_msat`]
1427-
///
14281421
/// This value is not exact. Due to various in-flight changes, feerate changes, and our
14291422
/// conflict-avoidance policy, exactly this amount is not likely to be spendable. However, we
14301423
/// should be able to spend nearly this amount.
@@ -1434,8 +1427,8 @@ pub struct ChannelDetails {
14341427
/// the current state and per-HTLC limit(s). This is intended for use when routing, allowing us
14351428
/// to use a limit as close as possible to the HTLC limit we can currently send.
14361429
///
1437-
/// See also [`ChannelDetails::next_outbound_htlc_minimum_msat`],
1438-
/// [`ChannelDetails::balance_msat`], and [`ChannelDetails::outbound_capacity_msat`].
1430+
/// See also [`ChannelDetails::next_outbound_htlc_minimum_msat`] and
1431+
/// [`ChannelDetails::outbound_capacity_msat`].
14391432
pub next_outbound_htlc_limit_msat: u64,
14401433
/// The minimum value for sending a single HTLC to the remote peer. This is the equivalent of
14411434
/// [`ChannelDetails::next_outbound_htlc_limit_msat`] but represents a lower-bound, rather than
@@ -1563,7 +1556,6 @@ impl ChannelDetails {
15631556
channel_value_satoshis: context.get_value_satoshis(),
15641557
feerate_sat_per_1000_weight: Some(context.get_feerate_sat_per_1000_weight()),
15651558
unspendable_punishment_reserve: to_self_reserve_satoshis,
1566-
balance_msat: balance.balance_msat,
15671559
inbound_capacity_msat: balance.inbound_capacity_msat,
15681560
outbound_capacity_msat: balance.outbound_capacity_msat,
15691561
next_outbound_htlc_limit_msat: balance.next_outbound_htlc_limit_msat,
@@ -7514,7 +7506,7 @@ impl Writeable for ChannelDetails {
75147506
(10, self.channel_value_satoshis, required),
75157507
(12, self.unspendable_punishment_reserve, option),
75167508
(14, user_channel_id_low, required),
7517-
(16, self.balance_msat, required),
7509+
(16, self.next_outbound_htlc_limit_msat, required), // Forwards compatibility for removed balance_msat field.
75187510
(18, self.outbound_capacity_msat, required),
75197511
(19, self.next_outbound_htlc_limit_msat, required),
75207512
(20, self.inbound_capacity_msat, required),
@@ -7550,7 +7542,7 @@ impl Readable for ChannelDetails {
75507542
(10, channel_value_satoshis, required),
75517543
(12, unspendable_punishment_reserve, option),
75527544
(14, user_channel_id_low, required),
7553-
(16, balance_msat, required),
7545+
(16, _balance_msat, option), // Backwards compatibility for removed balance_msat field.
75547546
(18, outbound_capacity_msat, required),
75557547
// Note that by the time we get past the required read above, outbound_capacity_msat will be
75567548
// filled in, so we can safely unwrap it here.
@@ -7588,7 +7580,6 @@ impl Readable for ChannelDetails {
75887580
channel_value_satoshis: channel_value_satoshis.0.unwrap(),
75897581
unspendable_punishment_reserve,
75907582
user_channel_id,
7591-
balance_msat: balance_msat.0.unwrap(),
75927583
outbound_capacity_msat: outbound_capacity_msat.0.unwrap(),
75937584
next_outbound_htlc_limit_msat: next_outbound_htlc_limit_msat.0.unwrap(),
75947585
next_outbound_htlc_minimum_msat: next_outbound_htlc_minimum_msat.0.unwrap(),

lightning/src/routing/router.rs

-2
Original file line numberDiff line numberDiff line change
@@ -2725,7 +2725,6 @@ mod tests {
27252725
inbound_scid_alias: None,
27262726
channel_value_satoshis: 0,
27272727
user_channel_id: 0,
2728-
balance_msat: 0,
27292728
outbound_capacity_msat,
27302729
next_outbound_htlc_limit_msat: outbound_capacity_msat,
27312730
next_outbound_htlc_minimum_msat: 0,
@@ -6794,7 +6793,6 @@ pub(crate) mod bench_utils {
67946793
outbound_scid_alias: None,
67956794
channel_value_satoshis: 10_000_000_000,
67966795
user_channel_id: 0,
6797-
balance_msat: 10_000_000_000,
67986796
outbound_capacity_msat: 10_000_000_000,
67996797
next_outbound_htlc_minimum_msat: 0,
68006798
next_outbound_htlc_limit_msat: 10_000_000_000,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* The `AvailableBalances::balance_msat` field has been removed in favor of `ChannelMonitor::get_claimable_balances` (#2476).

0 commit comments

Comments
 (0)