Skip to content

Taproot Pending Requirement Tracking #2295

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

Open
14 of 54 tasks
arik-so opened this issue May 15, 2023 · 1 comment
Open
14 of 54 tasks

Taproot Pending Requirement Tracking #2295

arik-so opened this issue May 15, 2023 · 1 comment
Assignees

Comments

@arik-so
Copy link
Contributor

arik-so commented May 15, 2023

  • Protocol finalization
    • Nonce field labeling and breakdown
      For simplicity, I proposed the label partial_signature_with_nonce, which demarcates that particular nonce as not being precommitted, but rather being used for validation of the partial signature only.
    • Channel opening nonce location
      There has been back and forth as to whether local nonces should be precommitted to in the open_channel and accept_channel messages. I believe it makes little sense to commit to any nonce prior to the channel being accepted.
    • Channel closing specification (option_simple_close (features 60/61) lightning/bolts#1096)
    • Gossip protocol finalization
    • Make decisions on feature flags (currently: 30/31)
      • Settle on separate feature flag for Taproot gossip
    • Update graphics (originally created by me) for finalized version of the protocol spec?
  • Cryptography
  • Wire communication
  • Channel operation
    • Create Taproot channel signer
      • Define Taproot signer interface
      • Define partial signature and nonce storage mechanism, where necessary
        It is necessary to store the latest precommitted local nonce and the latest committed local nonce, as well as the latest received remote nonce and received partial signature.
      • Implement InMemorySigner
      • Implement EnforcingSigner
    • Create enum to denote the type of signer used in a given channel (Taproot signer variant #2512)
    • Create switching mechanism to use correct signer based on channel type (Taproot signer variant #2512)
      • Introduce sensible separation between common and separate code paths depending on signer type
      • Verify that the switching mechanism doesn't break bindings
    • Channel opening
      • Handle inbound and outbound Taproot channel openings
      • Handle modified gossip to announce the new channel
      • Test interoperability of channel opening
      • Write unit and integration tests for channel opening
    • Channel updates
      • Add support for keeping track and updating of nonces as part of the regular channel operation
        • Modify the handling of HTLCs with Schnorr signatures
      • Modify gossip to send Schnorr signatures in channel updates
    • Channel closure
      • Determine coöperative close workflow and pending work (big question mark here)
      • Implement simple close (Implement new simple coop close #2433)
      • Handle unilateral closes
        • Detect breaches
        • Implement support for breach remedies
        • Implement support for Taproot-based anchor claims
        • Write unit tests to verify Taproot transactions are claimable in all scenarios
    • Modify fee calculation to reflect Taproot output types
      • Write unit tests to verify updated fee calculation
  • Following thorough interop testing and spec finalization, remove cfg-gating
  • Gossip parsing
    • Modify NetworkGraph to understand Taproot gossip
    • Learn to verify the onchain footprint of gossiped Taproot channels
    • Adjust RGS to include Taproot channels
      • Investigate feasibility of doing so in a backwards-compatible manner
@arik-so arik-so changed the title Taproot Requirement Tracking Taproot Pending Requirement Tracking May 15, 2023
@valentinewallace
Copy link
Contributor

Mind posting about this on lightning/bolts#1078? Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Progress
Development

No branches or pull requests

2 participants