Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
953ac60
Accept tx_init_rbf for pending splice transactions
jkczyz Feb 18, 2026
7384231
f - Also check sent_funding_txid in validate_tx_init_rbf
jkczyz Mar 5, 2026
dcf1d86
f - Remove redundant holder_is_quiescence_initiator field
jkczyz Mar 5, 2026
7c740df
f - Remove unnecessary debug_assert in internal_tx_init_rbf
jkczyz Mar 5, 2026
77071bb
f - DRY up splice_init and tx_init_rbf acceptor paths
jkczyz Mar 5, 2026
dedba7b
Allow multiple RBF splice candidates in channel monitor
jkczyz Feb 19, 2026
fca092c
Add rbf_channel API for initiating splice RBF
jkczyz Feb 19, 2026
0133f7d
f - Also check received_funding_txid in can_initiate_rbf
jkczyz Mar 5, 2026
90ecea2
Send tx_init_rbf instead of splice_init when a splice is pending
jkczyz Feb 19, 2026
b612aa4
Handle tx_ack_rbf on the initiator side
jkczyz Feb 19, 2026
99b2c19
f - Extract awaiting_ack_context and begin_funding_negotiation helpers
jkczyz Mar 5, 2026
340b63a
f - Replace begin_funding_negotiation with FundingNegotiation::for_in…
jkczyz Mar 5, 2026
c97e2e0
f - Use specific expect messages in tx_ack_rbf and splice_ack
jkczyz Mar 5, 2026
d7a7d51
f - Add test_splice_rbf_not_quiescence_initiator test
jkczyz Mar 5, 2026
9ab6afa
f - Remove unnecessary debug_assert in internal_tx_ack_rbf
jkczyz Mar 5, 2026
3161a7f
Allow acceptor contribution to RBF splice via tx_init_rbf
jkczyz Feb 19, 2026
da11547
Preserve our funding contribution across counterparty RBF attempts
jkczyz Feb 23, 2026
088fe24
Consider prior contributions when filtering unique inputs/outputs
jkczyz Feb 24, 2026
86be616
Filter prior contributions from SpliceFundingFailed events
jkczyz Feb 25, 2026
759da6a
Handle FeeRateAdjustmentError variants in splice_init acceptor path
jkczyz Feb 25, 2026
0df4730
f - Simplify FeeRateAdjustmentError match by moving suffixes into Dis…
jkczyz Mar 5, 2026
9c91289
Handle FeeRateAdjustmentError variants in tx_init_rbf acceptor path
jkczyz Feb 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions lightning/src/chain/channelmonitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4039,9 +4039,14 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
}

if let Some(parent_funding_txid) = channel_parameters.splice_parent_funding_txid.as_ref() {
// Only one splice can be negotiated at a time after we've exchanged `channel_ready`
// (implying our funding is confirmed) that spends our currently locked funding.
if !self.pending_funding.is_empty() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This made sure a dual-funded channel became locked prior to allowing a splice to happen.

// Multiple RBF candidates for the same splice are allowed (they share the same
// parent funding txid). A new splice with a different parent while one is pending
// is not allowed.
let has_different_parent = self.pending_funding.iter().any(|funding| {
funding.channel_parameters.splice_parent_funding_txid.as_ref()
!= Some(parent_funding_txid)
});
if has_different_parent {
log_error!(
logger,
"Negotiated splice while channel is pending channel_ready/splice_locked"
Expand Down
Loading
Loading