feat(taproot): hold and spend P2TR (BIP-340/341/86) - #355
Closed
BitHighlander wants to merge 1 commit into
Closed
Conversation
The device could already send to bech32m addresses but could not hold them. This adds the key-path Taproot support: - BIP-340 Schnorr signing, wired from the pinned crypto fork, with the official test vectors in unittests/crypto/bip340.cpp. - P2TR addresses via GetAddress and BIP-86 accounts, including xpub export. - BIP-341 signing: the sighash commits to every input's amount and script, and signing fails closed if any input commitment is incomplete rather than producing a signature over a partial commitment. - The serialized witness and transaction footer are returned to the host — a Taproot spend was previously handed back missing 70 bytes of witness and locktime because the Taproot path bypassed the shared hashing step. - A change output claiming to be BIP-86 is rejected unless its script type is actually Taproot. - GetFeatures reports supports_taproot, so hosts stop inferring capability from a version number. - coins.def marks Taproot support; signing uses a zero aux_rand, documented at the call site. - Gate-3 OLED frames under docs/security/evidence/7.15.0-rc26-taproot-witness-and-address show full 62-character P2TR addresses on spend, change and mixed-input flows.
Owner
Author
|
Superseded by the smaller audit-ready 7.15 stack: #359 release foundation, #360 authenticated clear-signing, #361 recovery and entropy, #362 Zcash Orchard, #363 chain integrations, and #364 Bitcoin/release security. All release changes remain preserved in the replacement branches and preservation tags. The replacement aggregate was tree-verified against the prior release and passed the local CI-equivalent container suite (405 firmware, 2 board, 18 crypto, and 7 Pallas constant-time tests). GitHub-hosted checks have been explicitly dispatched and are currently queued. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
7.15 review stack position 14/17.
This PR is intentionally one coherent commit, based on
feature/715-13-hive, for individual auditing.The full stack is linear from the clean fork
developat 1af2ffe.Review scope: feat(taproot): hold and spend P2TR (BIP-340/341/86).
The preserved pre-restage candidate remains available at
preserve/alpha-2026-08-05.