Repository navigation
Splicing / Dual Funding #4284
Copy link
Copy link
Closed
Description
Splicing launched as beta in LDK 0.2 and LDK Node 0.7. Full splicing support involves completing the tasks below. This follows on the work detailed in #1621.
Core Splice Features
- Rework
ChannelManager::funding_transaction_signedRework ChannelManager::funding_transaction_signed #4257 Rework ChannelManager::funding_transaction_signed #4336 - Split splice initiation into two phases Split splice initiation into two phases #4290
- Mixed mode splicing (splice-in + splice-out) Mixed mode splicing #4261
- Opportunistic contributions (contribute to splice as acceptor) Contribute to splice as acceptor #4416
- Split
DiscardFundingfromSpliceFailedevent SplitDiscardFundingfromSpliceFailedevent #4388 - Add pending
SpliceDetailstoChannelDetailsAdd pendingSpliceDetailstoChannelDetails#4687
RBF Support
- RBF splice funding transactions (initiating + accepting) RBF splice funding transactions #4427
- Unify splice and RBF APIs Unify splice and RBF APIs #4486
- Remove
FundingTxInputtype alias in favor ofConfirmedUtxoRemoveFundingTxInputtype alias in favor ofConfirmedUtxo#4623
- Remove
- Use +25 sat/kwu increment for our minimum RBF feerate Ensure minimum RBF feerate satisfies BIP125 #4494
- Enforce minimum RBF feerate on counterparty
tx_init_rbfEnforce minimum RBF feerate on counterpartytx_init_rbf#4569 - Include interactive funding candidates on broadcast Include interactive funding candidates on broadcast #4570
- Cap number of RBFs (
commitment_signedbatch only allows for 20 anyway) ref - Filter out contributed inputs that also exist in previous negotiated-but-not-yet-locked splice attempts ref
Cancellation
- Allow cancellation of pending splice funding negotiations Allow cancellation of pending splice funding negotiations #4490
- Exit quiescence when
splice_initandtx_init_rbfare rejected Exit quiescence whensplice_initandtx_init_rbfare rejected #4495 - Drop
QuiescentError::with_negotiation_failure_reasonDropQuiescentError::with_negotiation_failure_reason#4608
Async Signing
- Support async signing of interactive-tx initial commitment signatures Support async signing of interactive-tx initial commitment signatures #4355
- Hold in-flight monitor updates until background event processing Hold in-flight monitor updates until background event processing #4377
- Release
tx_signaturesafter async monitor update completes Release tx_signatures after async monitor update completes #4472 - Support async signing of splice shared input Support async signing of splice shared input #4579
On-chain Monitoring
- Closed channel balance API ref
- Produce
FundingInfo::Contributionvariants inChannelMonitorProduce FundingInfo::Contribution variants in ChannelMonitor #4498
Channel Reestablishment
- Fix stale pre-splice
announcement_signaturesduring reestablish Fix stale pre-spliceannouncement_signaturesduring reestablish #4577 - Locked splice bug fixes during channel reestablishment Locked splice bug fixes during channel reestablishment #4624
- Gate interactive
commitment_signedon user approval during reestablish Gate interactive commitment_signed on user approval during reestablish #4629 - Persist negotiated splice candidates on reload Persist negotiated splice candidates on reload #4653
-
splice_locked+channel_reestablishbug fixessplice_locked+channel_reestablishbug fixes #4654
Feature Flags
- Clarify splicing feature flag requirements Clarify splicing feature flag requirements #4274
- Switch
SplicePrototypefeature flag to the prod feature bit SwitchSplicePrototypefeature flag to the prod feature bit #4387
Bug Fixes & Correctness
- Use
SignedAmount::unsigned_absto avoid overflow UseSignedAmount::unsigned_absto avoid overflow #4383 - Account for missing balance in splice max commitment output tracking Account for missing balance in splice max commitment output tracking #4417
- Check that funder covers the fee spike buffer multiple after a splice Check that funder covers the fee spike buffer multiple after a splice #4433
- Avoid sending stfu for quiescent splice action while pending splice Avoid sending stfu for quiescent splice action while pending splice #4426
- Include failure context in splice events Include failure context in splice events #4514
- SCID preference for outbound payments on spliced channel fix: SCID preference for outbound payments on spliced channel #4376
Quiescence
- Free holding cell in remaining quiescence-exit code paths Free holding cell in remaining quiescence-exit code paths #4415
- Merge initial and retry stfu send paths Merge initial and retry stfu send paths #4432
- Avoid splice checks when responding to stfu Avoid splice checks when responding to stfu #4630
Testing & Fuzzing
- Extend full_stack fuzz test to cover splicing Extend full_stack fuzz test to cover splicing #4361
- Drive splices to completion in chanmon_consistency Drive splices to completion in chanmon_consistency #4411
- Re-enable signer op for one channel at a time in chanmon_consistency Re-enable signer op for one channel at a time in chanmon_consistency #4489
- Fix
chanmon_consistencyfuzz test for splice RBF Fixchanmon_consistencyfuzz test for splice RBF #4536 - Handle missing
SendTx*message events in chanmon_consistency fuzz: handle missing SendTx* message events in chanmon_consistency #4496
Infrastructure & Cleanup
- Rustfmt ChannelManager splice message handlers Rustfmt ChannelManager splice message handlers #4412
- Refactor
CoinSelection-related types towallet_utilsmodule RefactorCoinSelection-related types towallet_utilsmodule #4382 - Refactor
BroadcasterInterfaceto includeTransactionTypeRefactorBroadcasterInterfaceto includeTransactionType#4353
Remaining
- 0-conf — track past funding scopes until mature
- Integrate dual-funding Contribute funding inputs on accepting dual-funded channel #3735
- Sweep repo for
TODO(splicing)andTODO(dual_funding)
Reactions are currently unavailable
Activity
ldk-reviews-bot commentedon Oct 10, 2026
@mattcommented on Forgejo:Splicing (incl splice-rbf) has fully shipped. We still don't have dual-funding, but that can be another tracking issue.