Skip to content

Dual-funded channels and Splicing Project Tracking #1621

Description

@dunxen

Overview

Project tracking and implementation status of interactive transaction construction, dual-funding (V2 channel establishment), channel quiescence, and splicing.

Specifications:

Wire messages

Interactive Transaction Construction

Dual-funding (V2 channel establishment)

0. Refactoring

1. Accept dual-funded channels

2. Accept dual-funded channels with contributions

  • Interop tests and fixes
  • Release as alpha

3. Create & accept dual-funded channels

4. RBF support

Dual-funding implementation phase feature table

🟢 = supported
🔴 = unsupported

Impl. phase Accept V2 Create V2 RBF Contribute funds
1. Accept V2 channels 🟢 🔴 🔴 🔴
2. Accept V2 channels w/con 🟢 🔴 🔴 🔴
3. Create V2 channels 🟢 🟢 🔴 🟢
3. RBF support 🟢 🟢 🟢 🟢

Channel quiescence

Splicing

Draft/Prototype PRs

Use case phases status

Use case phase branch or draft PR merged/pending PRs
Initial handshake, splice_init, splice_ack main #3407 #3647
Tx negotiation, tx_add_input, tx_add_output #3715 #3443
Tx negotiation completion, final tx_complete's #3444 -
Commitment exchange #3274 -
tx_signatures exchange, funding tx broadcast #3274 -
splice_locked exchange, after confirmation #3274 -

0. Preparations

1. Basic implementation

2. Additional features

  • Integrate quiescence
  • Splice on V1 channel
  • RBF support
  • Allow payment during pending splice
  • Support splice-out
  • Contributions from the acceptor
  • Handle interruptions and restarts
  • Work with other implementations

Activity

  1. npslaney commented on Jul 18, 2022

    @npslaney

    Thinking through LSP onboarding strategies having the ability to start with a balanced channel is a really nice option. Definitely watching this one 👀

  2. ariard commented on Jul 19, 2022

    @ariard

    I think one of the first step could be to make OnchainTxHandler its own interface that way the reorg/fee-bumping/rebroadcast logic could be shared between our ChannelMonitor and MultipartyConstruction stuff. See : #606 (comment) for ideas.

    There is also an open question on how much code for doing that is already available in BDK.

  3. dunxen commented on Jul 19, 2022

    @dunxen
    ContributorAuthor

    I think one of the first step could be to make OnchainTxHandler its own interface that way the reorg/fee-bumping/rebroadcast logic could be shared between our ChannelMonitor and MultipartyConstruction stuff. See : #606 (comment) for ideas.

    There is also an open question on how much code for doing that is already available in BDK.

    Thanks for the comment link! I'll sync up with the BDK peeps on that open question too.

  4. ariard commented on Sep 17, 2022

    @ariard

    Available to review advances in dual-funded implementation, even if it's early refactor for now. I've reviewed back recently the state of the BOLT proposal and it's sounds to be mature enough to solidify around a v0.1.

  5. dunxen commented on Sep 17, 2022

    @dunxen
    ContributorAuthor

    Available to review advances in dual-funded implementation, even if it's early refactor for now. I've reviewed back recently the state of the BOLT proposal and it's sounds to be mature enough to solidify around a v0.1.

    Great, picking up refactor next! 🙏

  6. dunxen commented on Oct 10, 2022

    @dunxen
    ContributorAuthor

    Available to review advances in dual-funded implementation, even if it's early refactor for now. I've reviewed back recently the state of the BOLT proposal and it's sounds to be mature enough to solidify around a v0.1.

    Great, picking up refactor next! pray

    Next is now. So picking up from now :)

  7. changed the title [-]Support dual-funded channels[/-] [+]Dual-funded channels and Splicing Project Tracking[/+] on May 4, 2023
  8. self-assigned this
    on May 16, 2023
  9. moved this to In Progress in LDK Prioritieson May 16, 2023
  10. ariard commented on Aug 1, 2023

    @ariard

    Good to have this, don’t hesitate to “review pin” like glozow doing for package relay: bitcoin/bitcoin#27463 (comment) good practice imho to allocate review bandwidth accordingly.

  11. ariard commented on Sep 12, 2023

    @ariard

    FYI, current version of nversion=3 and package RBF sounds working well for both dual-funding and splicing: bitcoin/bitcoin#25038 (comment)

    There is one caveat where the first splicing transaction transitioning from nversion=2 to nversion=3 might have to be signed with a compelling feerate to be able to replace a pinning nversion=2 commitment state. If correct, I think it can be documented when nversion=3 is specified on the bolt-side.

    All reserves kept as both package relay / nversion=3 / dual-funding and splicing are still work in progress and non-final.

  12. toneloc commented on Jun 3, 2024

    @toneloc

    Hi, what is the status here?

    Does LDK support dual-funding, and if it does, how? Thanks.

  13. 6 remaining items

  14. optout21 commented on Sep 6, 2024

    @optout21
    Contributor

    Updated splice tasks (in earlier comment)

  15. dunxen commented on Sep 6, 2024

    @dunxen
    ContributorAuthor

    Updated splice tasks (in earlier comment)

    Thanks! Updated!

  16. jkczyz commented on Sep 6, 2024

    @jkczyz
    Contributor

    I updated the quiescence section based on a discussion with @wpaulino.

  17. optout21 commented on Apr 8, 2025

    @optout21
    Contributor

    Updated description for Splicing, added table with draft PRs / use case phases, updated PR numbers

  18. jkczyz commented on Jun 21, 2025

    @jkczyz
    Contributor

    Update on splicing progress covering work this year. Everything but RBF is needed for the initial release. ETA Q3.

    Misc follow-ups from PR review:

  19. TheBlueMatt commented on Sep 18, 2025

    @TheBlueMatt
    Collaborator

    Do we have any tests of initiating a splice while a peer is disconnected, also even better both peers initiating a splice while disconnected? Also I think we never added the logic to initiate a splice/post-quiescent action when we finish the current splice/quiescent action. We should add that.

  20. moved this from In Progress to Done in LDK Prioritieson Oct 16, 2025
  21. toneloc commented on Feb 20, 2026

    @toneloc

    Hi, is this the correct place to track dual-funding? What is timeline / priority for it with LDK team? Thank you.

  22. jkczyz commented on Feb 23, 2026

    @jkczyz
    Contributor

    Hi, is this the correct place to track dual-funding? What is timeline / priority for it with LDK team? Thank you.

    Hi @toneloc,

    We should probably make a separate tracker for dual funding. Some of the work overlaps with splicing (#4284). That issue needs to be updated as most work is done. For dual funding, however, there is a partial implementation merged. Currently finishing it is not a high priority, but we'll re-evaluate priorities for the 0.4 release. Are you looking to use it? If so, do you mind sharing your use case?

    Last we chatted about this, batching channels open support (available for v1 channel opens) may not be compatible with the dual-funding (v2 channel opens) protocol in its current form. So there may need be some spec work to resolve that.

  23. toneloc commented on Mar 4, 2026

    @toneloc

    Thanks @jkczyz for the update.

    The use-case I have is to open up a balanced channel for Stable Channels in one on-chain transaction. Stable Channels are basically LN channels that can be used for trading use-cases, so money needs to flow both ways based on updated prices.

    Currently, the user can onboard to the Stable Channels wallet over Lightning with JIT channels; this is nice because we open a balanced channel from the get-go.

    We want the user to also be able to onboard from on-chain. Some users don't have Lightning funds yet. The way we would make this work currently is that the user would send themselves on-chain BTC to the wallet, then open a single-side-funded channel to the LSP, then the LSP would splice in funds to make it balanced.

    Not the worst flow, but extra logic and an extra transaction. Dual-funded channels would simplify this flow into one on-chain transaction.

  24. jkczyz commented on Mar 4, 2026

    @jkczyz
    Contributor

    Thanks @jkczyz for the update.

    The use-case I have is to open up a balanced channel for Stable Channels in one on-chain transaction. Stable Channels are basically LN channels that can be used for trading use-cases, so money needs to flow both ways based on updated prices.

    Currently, the user can onboard to the Stable Channels wallet over Lightning with JIT channels; this is nice because we open a balanced channel from the get-go.

    We want the user to also be able to onboard from on-chain. Some users don't have Lightning funds yet. The way we would make this work currently is that the user would send themselves on-chain BTC to the wallet, then open a single-side-funded channel to the LSP, then the LSP would splice in funds to make it balanced.

    Not the worst flow, but extra logic and an extra transaction. Dual-funded channels would simplify this flow into one on-chain transaction.

    For the dual-funding case, I take it the user would still initiated the channel open, not the LSP?

  25. toneloc commented on May 7, 2026

    @toneloc

    For the dual-funding case, I take it the user would still initiated the channel open, not the LSP?

    Sorry @jkczyz I missed this message. Yes, in this case the user would initiate the dual-fund channel open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions