Skip to content

Commit

Permalink
Add local balance field
Browse files Browse the repository at this point in the history
  • Loading branch information
Mirebella committed Aug 15, 2024
1 parent 795887a commit 6424436
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
10 changes: 8 additions & 2 deletions lightning/src/events/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1237,6 +1237,8 @@ pub enum Event {
/// status of the closing tx.
/// Note that for instances serialized in v0.0.119 or prior this will be missing (None).
channel_funding_txo: Option<transaction::OutPoint>,
/// Local balance in msats when a channel was force-closed.
last_local_balance_msats: Option<u64>,
},
/// Used to indicate to the user that they can abandon the funding transaction and recycle the
/// inputs for another purpose.
Expand Down Expand Up @@ -1516,7 +1518,8 @@ impl Writeable for Event {
});
},
&Event::ChannelClosed { ref channel_id, ref user_channel_id, ref reason,
ref counterparty_node_id, ref channel_capacity_sats, ref channel_funding_txo
ref counterparty_node_id, ref channel_capacity_sats, ref channel_funding_txo,
ref last_local_balance_msats
} => {
9u8.write(writer)?;
// `user_channel_id` used to be a single u64 value. In order to remain backwards
Expand All @@ -1532,6 +1535,7 @@ impl Writeable for Event {
(5, counterparty_node_id, option),
(7, channel_capacity_sats, option),
(9, channel_funding_txo, option),
(11, last_local_balance_msats, option)
});
},
&Event::DiscardFunding { ref channel_id, ref transaction } => {
Expand Down Expand Up @@ -1875,6 +1879,7 @@ impl MaybeReadable for Event {
let mut counterparty_node_id = None;
let mut channel_capacity_sats = None;
let mut channel_funding_txo = None;
let mut last_local_balance_msats = None;
read_tlv_fields!(reader, {
(0, channel_id, required),
(1, user_channel_id_low_opt, option),
Expand All @@ -1883,6 +1888,7 @@ impl MaybeReadable for Event {
(5, counterparty_node_id, option),
(7, channel_capacity_sats, option),
(9, channel_funding_txo, option),
(11, last_local_balance_msats, option)
});

// `user_channel_id` used to be a single u64 value. In order to remain
Expand All @@ -1892,7 +1898,7 @@ impl MaybeReadable for Event {
((user_channel_id_high_opt.unwrap_or(0) as u128) << 64);

Ok(Some(Event::ChannelClosed { channel_id, user_channel_id, reason: _init_tlv_based_struct_field!(reason, upgradable_required),
counterparty_node_id, channel_capacity_sats, channel_funding_txo }))
counterparty_node_id, channel_capacity_sats, channel_funding_txo, last_local_balance_msats}))
};
f()
},
Expand Down
6 changes: 6 additions & 0 deletions lightning/src/ln/channel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -939,6 +939,7 @@ pub(crate) struct ShutdownResult {
pub(crate) counterparty_node_id: PublicKey,
pub(crate) unbroadcasted_funding_tx: Option<Transaction>,
pub(crate) channel_funding_txo: Option<OutPoint>,
pub(crate) last_local_balance_msats: u64,
}

/// Tracks the transaction number, along with current and next commitment points.
Expand Down Expand Up @@ -2058,6 +2059,8 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
})
}

pub(crate) fn get_value_to_self_msat(&self) -> u64 {self.value_to_self_msat}

/// Allowed in any state (including after shutdown)
pub fn get_update_time_counter(&self) -> u32 {
self.update_time_counter
Expand Down Expand Up @@ -3528,6 +3531,7 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
counterparty_node_id: self.counterparty_node_id,
unbroadcasted_funding_tx,
channel_funding_txo: self.get_funding_txo(),
last_local_balance_msats: self.value_to_self_msat,
}
}

Expand Down Expand Up @@ -6218,6 +6222,7 @@ impl<SP: Deref> Channel<SP> where
counterparty_node_id: self.context.counterparty_node_id,
unbroadcasted_funding_tx: self.context.unbroadcasted_funding(),
channel_funding_txo: self.context.get_funding_txo(),
last_local_balance_msats: self.context.value_to_self_msat,
};
let tx = self.build_signed_closing_transaction(&mut closing_tx, &msg.signature, &sig);
self.context.channel_state = ChannelState::ShutdownComplete;
Expand Down Expand Up @@ -6253,6 +6258,7 @@ impl<SP: Deref> Channel<SP> where
counterparty_node_id: self.context.counterparty_node_id,
unbroadcasted_funding_tx: self.context.unbroadcasted_funding(),
channel_funding_txo: self.context.get_funding_txo(),
last_local_balance_msats: self.context.value_to_self_msat,
};
self.context.channel_state = ChannelState::ShutdownComplete;
self.context.update_time_counter += 1;
Expand Down
3 changes: 3 additions & 0 deletions lightning/src/ln/channelmanager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3518,6 +3518,7 @@ where
counterparty_node_id: Some(shutdown_res.counterparty_node_id),
channel_capacity_sats: Some(shutdown_res.channel_capacity_satoshis),
channel_funding_txo: shutdown_res.channel_funding_txo,
last_local_balance_msats: Some(shutdown_res.last_local_balance_msats),
}, None));

if let Some(transaction) = shutdown_res.unbroadcasted_funding_tx {
Expand Down Expand Up @@ -11879,6 +11880,7 @@ where
counterparty_node_id: Some(channel.context.get_counterparty_node_id()),
channel_capacity_sats: Some(channel.context.get_value_satoshis()),
channel_funding_txo: channel.context.get_funding_txo(),
last_local_balance_msats: Some(channel.context.get_value_to_self_msat()),
}, None));
for (channel_htlc_source, payment_hash) in channel.inflight_htlc_sources() {
let mut found_htlc = false;
Expand Down Expand Up @@ -11935,6 +11937,7 @@ where
counterparty_node_id: Some(channel.context.get_counterparty_node_id()),
channel_capacity_sats: Some(channel.context.get_value_satoshis()),
channel_funding_txo: channel.context.get_funding_txo(),
last_local_balance_msats: Some(channel.context.get_value_to_self_msat()),
}, None));
} else {
log_error!(logger, "Missing ChannelMonitor for channel {} needed by ChannelManager.", &channel.context.channel_id());
Expand Down

0 comments on commit 6424436

Please sign in to comment.