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

multi: taproot mega tracking issue #1735

Closed
15 tasks done
Roasbeef opened this issue Jul 17, 2021 · 4 comments
Closed
15 tasks done

multi: taproot mega tracking issue #1735

Roasbeef opened this issue Jul 17, 2021 · 4 comments

Comments

@Roasbeef
Copy link
Member

Roasbeef commented Jul 17, 2021

This is a mega tracking issue to track all the taproot components (the division here is just a suggestion) that we'll need to put together to fully implement the new soft fork rules. I've included certain btcwallet changes here as well just for the sake of completion, so we can see how they all fit together in a single place.

Road To Taproot

  • Add new schnorr package to btcec that implements 340.

    • Note that we can mostly transfer over the dcrd implementation (namely their move to convert more big int usage into field limbs), but the verification is slightly different due to the add logic in BIP 340 itself.
    • This should include generating pubkeys compliant with the new arity restrictions.
  • Extend txscript.Pkscript with awareness of the new output types.

    • This'll be useful for the eventual change to add a segwit specific filter to neutrino, and also just to be able to parse the output types easily.
  • Implement the tagged hashing scheme as utility functions within txscript.

  • Implement the new internal and external sighashes in the txscript package.

  • Use the above to implement normal keyspend verification in txscript.Engine.

  • Add helper functions to txscript to compute the taproot commitment, as well as verify the reveal of a tapscript leaf.

  • Create a series of general functions in the txscript package for control block + annex parsing.

  • Implement full script spend verification along w/ the new OP_SUCCESS and OP_CHECKSIGADD semantics.

  • Implement bech32m

  • Add new address type to btcutil.Address for segwit v1 that uses bech32m

  • Add new key scope type (for btcwallet) to generate keys using the designated BIP 44 purpose.

  • Update hdkeychain in btcutil to return keys of the proper arity if a flag is active for schnorr usage

  • Implement signing for keyspend logic in btcwallet

  • Extend script import capabilities to maintain either entire tree and/or induvidual branch proofs

  • Implement script based signing (tapscript reveal) for

@Roasbeef
Copy link
Member Author

bech32m PR here: btcsuite/btcutil#202

@Roasbeef
Copy link
Member Author

PR to add the new address type here: btcsuite/btcutil#205

@Roasbeef
Copy link
Member Author

Related PR: btcsuite/btcwallet#792

With that and the outstanding taproot PR, pretty much all the items here will be complete!

@Roasbeef
Copy link
Member Author

Fixed by #1787

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

No branches or pull requests

1 participant