-
Notifications
You must be signed in to change notification settings - Fork 2.3k
[epic]: Dynamic Commitment Roadmap #9987
Copy link
Copy link
Open
Labels
dynamic commitmentsepicIssues created to track large feature developmentIssues created to track large feature developmentfeature requestRequests for new featuresRequests for new featureshtlcswitchsize/megalarge, significant context needed, over 1000 lineslarge, significant context needed, over 1000 lines
Metadata
Metadata
Assignees
Labels
dynamic commitmentsepicIssues created to track large feature developmentIssues created to track large feature developmentfeature requestRequests for new featuresRequests for new featureshtlcswitchsize/megalarge, significant context needed, over 1000 lineslarge, significant context needed, over 1000 lines
Type
Projects
Status
Todo
This is the master tracking issue for implementing dynamic commitments. Based on my current understanding after playing it out a bit, this project is split into four stages so it's easier to track the progress.
Stage One - Preparation
We will clean up existing PRs and create new PRs to prepare for the upcoming dynamic commitment work. These PRs can be merged directly into the master branch as they won't affect existing functionality.
Quiesce- Enable quiescence in production and add timeout config #10001htlcswitch, specifically the link, to make the existing flow cleaner. - Refactor link's long methods #10018BigSizeinstead. - FixExtraDatafield and useBigSizeencodine #10027Stage Two - Finalizing Specs
We will address all comments in this PR lightning/bolts#1117, finalize the TODOs in that draft, and create a new draft with some potential improvements based on my experiment.
Stage Three - Channel Params Upgrade
We will begin the implementation in this stage, with the focus on upgrading channel params first.
channeldb/channel.go, mostly just moving code into a new file.rpcserver.go, again just moving code for clarity.OpenChannel- will need to persistcommitHeight:oldConfigon disk.channel_update- need to double check whether the channel is disabled when entering quiescence.Stage Four - Commitment Type Upgrade
This will be the most involved part; however, implementing channel params upgrade first should give us a skeleton to work with at this stage. It also depends on the final spec - if we assume the simplified version works, the changes are,
lnwallet/reservation.go- need to extract the logic used to convertlnwire.ChannelTypeandchanneldb.ChannelType.lnwallet/channel.go- separate funding type and commitment type.This is a rough estimate - its final scope depends on the outcome from stage two.
Open Questions
openchannelto make private channels by default #9157.