Repository navigation
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)
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.