Open
Description
This issue is meant to be a living document to track the state of the Dynamic Commitments project.
The driving force behind the desire to have dynamic commitments is to allow us to "upgrade" an existing channel to use the Taproot Channels that are introduced in LND 0.17.0. The proposal has goals beyond simply upgrading channels to Taproot, but this is noted to prevent excessive scope creep and keep focused.
As part of the Dynamic Commitments work there is spec work that must be mostly complete before we embark on any implementation within LND.
- Catch up on the state of Quiescence
- Catch up on the state of Splicing
- Finalize design goals and general approach
- Formalize details in an Extension Bolt (Using this as a starting point)
- Decide on whether or not we can do symmetric kickoff transactions!!!
- Identify relevant subsystems that will need to be changed to accommodate new protocol
- Implement changes to each of these subsystems
- Leverage new capabilities in the subsystems to enable Taproot Channel upgrades
- Decide on a GRPC API to execute the upgrade process
This issue will be updated to reflect the current state of the overall project.
Implementation Plan
- Finish BOLT Specification
- Wire types lnwire: add wire types for dynamic commitments #8026
-
fn
tools DynComms [0/n]:fn
package additions #8653 - HtlcView refactor [KILO]: DynComms Prefactor: Refactor/evaluate htlc view #9097
- Quiescence DynComms [1/n]: Implement Quiescence Protocol #8270
- Wire types update DynComms [2/n]: lnwire: add authenticated wire messages for Dyn* #9148
- Negotiation State Machine DynComms [4/n]: Implement Dynamic Commitments Negotiation #8756
- ChannelConstraints execution
- Static Channel Backup updates