Skip to content

Commit

Permalink
Expose ClaimId for each claim bump in BumpTransactionEvent
Browse files Browse the repository at this point in the history
  • Loading branch information
wpaulino committed Jun 15, 2023
1 parent 3611f4c commit fea291b
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 4 deletions.
4 changes: 3 additions & 1 deletion lightning/src/chain/channelmonitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2505,7 +2505,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
let mut ret = Vec::new();
mem::swap(&mut ret, &mut self.pending_events);
#[cfg(anchors)]
for claim_event in self.onchain_tx_handler.get_and_clear_pending_claim_events().drain(..) {
for (claim_id, claim_event) in self.onchain_tx_handler.get_and_clear_pending_claim_events().drain(..) {
match claim_event {
ClaimEvent::BumpCommitment {
package_target_feerate_sat_per_1000_weight, commitment_tx, anchor_output_idx,
Expand All @@ -2516,6 +2516,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
let commitment_tx_fee_satoshis = self.channel_value_satoshis -
commitment_tx.output.iter().fold(0u64, |sum, output| sum + output.value);
ret.push(Event::BumpTransaction(BumpTransactionEvent::ChannelClose {
claim_id,
package_target_feerate_sat_per_1000_weight,
commitment_tx,
commitment_tx_fee_satoshis,
Expand Down Expand Up @@ -2547,6 +2548,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
});
}
ret.push(Event::BumpTransaction(BumpTransactionEvent::HTLCResolution {
claim_id,
target_feerate_sat_per_1000_weight,
htlc_descriptors,
tx_lock_time,
Expand Down
4 changes: 2 additions & 2 deletions lightning/src/chain/onchaintx.rs
Original file line number Diff line number Diff line change
Expand Up @@ -475,10 +475,10 @@ impl<ChannelSigner: WriteableEcdsaChannelSigner> OnchainTxHandler<ChannelSigner>
}

#[cfg(anchors)]
pub(crate) fn get_and_clear_pending_claim_events(&mut self) -> Vec<ClaimEvent> {
pub(crate) fn get_and_clear_pending_claim_events(&mut self) -> Vec<(ClaimId, ClaimEvent)> {
let mut events = Vec::new();
swap(&mut events, &mut self.pending_claim_events);
events.into_iter().map(|(_, event)| event).collect()
events
}

/// Triggers rebroadcasts/fee-bumps of pending claims from a force-closed channel. This is
Expand Down
14 changes: 14 additions & 0 deletions lightning/src/events/bump_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

//! Utitilies for bumping transactions originating from [`super::Event`]s.
use crate::chain::ClaimId;
use crate::ln::PaymentPreimage;
use crate::ln::chan_utils;
use crate::ln::chan_utils::{ChannelTransactionParameters, HTLCOutputInCommitment};
Expand Down Expand Up @@ -173,6 +174,12 @@ pub enum BumpTransactionEvent {
/// [`EcdsaChannelSigner::sign_holder_anchor_input`]: crate::sign::EcdsaChannelSigner::sign_holder_anchor_input
/// [`build_anchor_input_witness`]: crate::ln::chan_utils::build_anchor_input_witness
ChannelClose {
/// The unique identifier for the claim of the anchor output in the commitment transaction.
///
/// The identifier must map to the set of external UTXOs assigned to the claim, such that
/// they can be reused when a new claim with the same identifier needs to be made, resulting
/// in an expected double spend.
claim_id: ClaimId,
/// The target feerate that the transaction package, which consists of the commitment
/// transaction and the to-be-crafted child anchor transaction, must meet.
package_target_feerate_sat_per_1000_weight: u32,
Expand Down Expand Up @@ -222,6 +229,13 @@ pub enum BumpTransactionEvent {
/// [`EcdsaChannelSigner::sign_holder_htlc_transaction`]: crate::sign::EcdsaChannelSigner::sign_holder_htlc_transaction
/// [`HTLCDescriptor::tx_input_witness`]: HTLCDescriptor::tx_input_witness
HTLCResolution {
/// The unique identifier for the claim of the HTLCs in the confirmed commitment
/// transaction.
///
/// The identifier must map to the set of external UTXOs assigned to the claim, such that
/// they can be reused when a new claim with the same identifier needs to be made, resulting
/// in an expected double spend.
claim_id: ClaimId,
/// The target feerate that the resulting HTLC transaction must meet.
target_feerate_sat_per_1000_weight: u32,
/// The set of pending HTLCs on the confirmed commitment that need to be claimed, preferably
Expand Down
2 changes: 1 addition & 1 deletion lightning/src/ln/monitor_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1785,7 +1785,7 @@ fn do_test_monitor_rebroadcast_pending_claims(anchors: bool) {
let mut feerate = 0;
#[cfg(anchors)] {
feerate = if let Event::BumpTransaction(BumpTransactionEvent::HTLCResolution {
target_feerate_sat_per_1000_weight, mut htlc_descriptors, tx_lock_time,
target_feerate_sat_per_1000_weight, mut htlc_descriptors, tx_lock_time, ..
}) = events.pop().unwrap() {
let secp = Secp256k1::new();
assert_eq!(htlc_descriptors.len(), 1);
Expand Down

0 comments on commit fea291b

Please sign in to comment.