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

[Epic] funding+contractcourt+lnwallet: implement an initial version of Simple Taproot Channels #6691

Closed
Roasbeef opened this issue Jun 30, 2022 · 1 comment · Fixed by #7904
Assignees
Labels
advanced Issues suitable for very experienced developers chain handling epic Issues created to track large feature development funding Related to the opening of new channels with funding transactions on the blockchain spec taproot
Milestone

Comments

@Roasbeef
Copy link
Member

This is a master tracking issue which tracks the implementation of the new-ish Simple Taproot Channels proposal: lightning/bolts#995.

Things are still a bit influx, but there's some fundamental-ish work that can be started related to the funding outputs, and also the internal logic to perform tapscript spends.

One open question still is: can we actually get away with storing zero nonces on disk? Consider that today, we have 2 signatures, so we keep the remote party's on disk, then sign at broadcast time when we want to go on chain. This is nice from a security perspective, as with just the channeldb (no keys) you can't try to broadcast some revoked state. In this case of musig2, there're two logical signatures, which are then combined into a single signature to broadcast. The PartialSigAgg (sig combination) routine of the musig2 draft only needs the final public nonce, the challenge hash, and the tweak accumulator, all of which are "safe" inputs. However to sign we need our secret nonce, which means we may need to keep it around longer, potentially encrypted within the wallet along side the other imported public keys.

@Roasbeef Roasbeef added funding Related to the opening of new channels with funding transactions on the blockchain spec chain handling taproot labels Jun 30, 2022
@Roasbeef Roasbeef added this to the v0.16.0 milestone Jun 30, 2022
@Roasbeef Roasbeef added the advanced Issues suitable for very experienced developers label Jun 30, 2022
@Roasbeef Roasbeef self-assigned this Jun 30, 2022
@Roasbeef Roasbeef moved this to 🏗 In progress in lnd v0.16.0 Aug 23, 2022
@saubyk saubyk modified the milestones: v0.16.0, v0.16.1 Feb 14, 2023
@saubyk saubyk removed this from lnd v0.16.0 Feb 14, 2023
@Roasbeef
Copy link
Member Author

Roasbeef commented Mar 3, 2023

So all the major PRs are now up: taproot .

Right now all the PRs are built against either master, or the other set of dependent PRs. This makes it hard for reviewers to look at just the latest commits, as there're 50 other commits unrelated to that core PR that are still displayed. Also now that we're in the rc cycle for a major release, we don't necessarily want to be merging in unused/untested taproot logic either.

To streamline things a bit, I propose that we switch to a longer lived feature branch approach for the remaining development cycle for taproot chans. Rather than 9 PRs which all include the commits of the prior one and target a merge against master. We'd switch to the following approach:

  • A new unified feature branch simple-taproot-chans.
    • This is branched off of 0.16 as is (master today).
  • Each PR in the series is now pushed to a new branch on the origin repo (Github).
  • All the PRs are updated to target merging into the "next lowest" (by PR part series) sub feature branch.
  • As each of the PRs are ready (normal CI checks, etc), we merge them into the master feature branch (simple-taproot-chans)
  • Once all the sub PRs are merged into that master feature branch, we'd then make a single PR to merge it back into master as we know it today.

With the above approach, it should be easier to reviewers to look at just the changes relevant to their assigned PR. It also enables us to be more non-blocking, as we don't need to halt all merges during the rc phase of another release. It'll also make things easier for me, as rather than continually rebase ontop of master and all the dependent PRs, I can just target the dependent feature branch instead. As long as people are using a sane git client (one with a tree based commit view) it shouldn't be too hard to follow.

@saubyk saubyk modified the milestones: v0.16.1, v0.17.0 Mar 13, 2023
@saubyk saubyk added this to lnd v0.17 Mar 26, 2023
@saubyk saubyk moved this to 🏗 In progress in lnd v0.17 Mar 26, 2023
@saubyk saubyk added the epic Issues created to track large feature development label Mar 26, 2023
@saubyk saubyk changed the title funding+contractcourt+lnwallet: implement an initial version of Simple Taproot Channels [Epic] funding+contractcourt+lnwallet: implement an initial version of Simple Taproot Channels May 8, 2023
@github-project-automation github-project-automation bot moved this from 🏗 In progress to ✅ Done in lnd v0.17 Aug 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
advanced Issues suitable for very experienced developers chain handling epic Issues created to track large feature development funding Related to the opening of new channels with funding transactions on the blockchain spec taproot
Projects
No open projects
Status: Done
2 participants