Skip to content

Commit ccf318e

Browse files
committed
Track funding amount in HolderFundingOutput
This will be useful later on when determining the appropriate fee rate to use on the anchor transaction to bump its commitment transaction.
1 parent 492b240 commit ccf318e

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

lightning/src/chain/channelmonitor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2884,7 +2884,7 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
28842884

28852885
let should_broadcast = self.should_broadcast_holder_commitment_txn(logger);
28862886
if should_broadcast {
2887-
let funding_outp = HolderFundingOutput::build(self.funding_redeemscript.clone(), self.onchain_tx_handler.opt_anchors());
2887+
let funding_outp = HolderFundingOutput::build(self.funding_redeemscript.clone(), self.channel_value_satoshis, self.onchain_tx_handler.opt_anchors());
28882888
let commitment_package = PackageTemplate::build_package(self.funding_info.0.txid.clone(), self.funding_info.0.index as u32, PackageSolvingData::HolderFundingOutput(funding_outp), self.best_block.height(), false, self.best_block.height());
28892889
claimable_outpoints.push(commitment_package);
28902890
self.pending_monitor_events.push(MonitorEvent::CommitmentTxConfirmed(self.funding_info.0));

lightning/src/chain/package.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -286,14 +286,16 @@ impl_writeable_tlv_based!(HolderHTLCOutput, {
286286
#[derive(Clone, PartialEq, Eq)]
287287
pub(crate) struct HolderFundingOutput {
288288
funding_redeemscript: Script,
289+
funding_amount: Option<u64>,
289290
opt_anchors: Option<()>,
290291
}
291292

292293

293294
impl HolderFundingOutput {
294-
pub(crate) fn build(funding_redeemscript: Script, opt_anchors: bool) -> Self {
295+
pub(crate) fn build(funding_redeemscript: Script, funding_amount: u64, opt_anchors: bool) -> Self {
295296
HolderFundingOutput {
296297
funding_redeemscript,
298+
funding_amount: Some(funding_amount),
297299
opt_anchors: if opt_anchors { Some(()) } else { None },
298300
}
299301
}
@@ -306,6 +308,7 @@ impl HolderFundingOutput {
306308
impl_writeable_tlv_based!(HolderFundingOutput, {
307309
(0, funding_redeemscript, required),
308310
(1, opt_anchors, option),
311+
(3, funding_amount, option),
309312
});
310313

311314
/// A wrapper encapsulating all in-protocol differing outputs types.
@@ -325,15 +328,18 @@ pub(crate) enum PackageSolvingData {
325328
impl PackageSolvingData {
326329
fn amount(&self) -> u64 {
327330
let amt = match self {
328-
PackageSolvingData::RevokedOutput(ref outp) => { outp.amount },
329-
PackageSolvingData::RevokedHTLCOutput(ref outp) => { outp.amount },
330-
PackageSolvingData::CounterpartyOfferedHTLCOutput(ref outp) => { outp.htlc.amount_msat / 1000 },
331-
PackageSolvingData::CounterpartyReceivedHTLCOutput(ref outp) => { outp.htlc.amount_msat / 1000 },
331+
PackageSolvingData::RevokedOutput(ref outp) => outp.amount,
332+
PackageSolvingData::RevokedHTLCOutput(ref outp) => outp.amount,
333+
PackageSolvingData::CounterpartyOfferedHTLCOutput(ref outp) => outp.htlc.amount_msat / 1000,
334+
PackageSolvingData::CounterpartyReceivedHTLCOutput(ref outp) => outp.htlc.amount_msat / 1000,
332335
// Note: Currently, amounts of holder outputs spending witnesses aren't used
333336
// as we can't malleate spending package to increase their feerate. This
334337
// should change with the remaining anchor output patchset.
335-
PackageSolvingData::HolderHTLCOutput(..) => { unreachable!() },
336-
PackageSolvingData::HolderFundingOutput(..) => { unreachable!() },
338+
PackageSolvingData::HolderHTLCOutput(..) => unreachable!(),
339+
PackageSolvingData::HolderFundingOutput(ref outp) => {
340+
debug_assert!(outp.opt_anchors());
341+
outp.funding_amount.unwrap()
342+
}
337343
};
338344
amt
339345
}

0 commit comments

Comments
 (0)