-
Notifications
You must be signed in to change notification settings - Fork 448
Splicing / Dual Funding #4284
Copy link
Copy link
Open
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
RBF Support
- RBF splice funding transactions (initiating + accepting) RBF splice funding transactions #4427
- Unify splice and RBF APIs Unify splice and RBF APIs #4486
- Use +25 sat/kwu increment for our minimum RBF feerate Ensure minimum RBF feerate satisfies BIP125 #4494
- 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
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
On-chain Monitoring
- Closed channel balance API ref
- Produce
FundingInfo::Contributionvariants inChannelMonitorProduce FundingInfo::Contribution variants in ChannelMonitor #4498
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
- 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
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
- 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