Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement "Simple Taproot Channels" BOLT proposal #2868

Draft
wants to merge 6 commits into
base: store-partial-signatures
Choose a base branch
from

Commits on Oct 15, 2024

  1. Implement funding and closing simple taproot channels

    This commit implements:
    - feature bits for simple taproot channels
    - TLV extensions for funding/closing wire messages
    - modifications to how we handle channel funding and mutual closing
    - changes to the commitment structures
    It does not cover dual-funding and splices, which are not part of the original extension proposal.
    sstone committed Oct 15, 2024
    Configuration menu
    Copy the full SHA
    c0224fe View commit details
    Browse the repository at this point in the history
  2. Update dual-funding protocol

    sstone committed Oct 15, 2024
    Configuration menu
    Copy the full SHA
    9671f78 View commit details
    Browse the repository at this point in the history
  3. Update splicing protocol

    The current "simple taproot channels" proposal is not compatible with splices.
    Supporting splices means supporting multiple commitment transactions that are valid at the same time, with the same commitment index but with different funding transactions.
    We need to extend the taproot proposal to include a list of musig2 nonces (one for each active commitment transaction).
    Similar to how commitment points are handled, `firstRemoteNonce` and `secondRemoteNonce` fields have been added to `SpliceInit` and `SpliceAck`, encoded as a list of nonces (instead of 2 expicit nonces)
    We also need a  for the new commit tx that is being built, here it has been added to `SpliceInit` and `SpliceAck`.
    
    The funding tx that is being built during the interactive session needs to spend the current funding tx.
    For this, we re-use the scheme that we developped for our custome "swaproot" musig swap-ins: we add musig2 nonces to the `TxComplete` message, one nonce for each input that requires one, ordered by serial id.
    The life-cycle of these nonces is tied to the life-cycle of the interactive session which is never persisted (nonces here do not have to be deterministic).
    sstone committed Oct 15, 2024
    Configuration menu
    Copy the full SHA
    2c9170f View commit details
    Browse the repository at this point in the history
  4. Add a new commitment format for taproot channels that use the old (an…

    …d unsafe) anchor output format
    sstone committed Oct 15, 2024
    Configuration menu
    Copy the full SHA
    483bc4f View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    555f2b4 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    799c1da View commit details
    Browse the repository at this point in the history