Skip to content

Conversation

@OttoAllmendinger
Copy link
Contributor

This PR implements MuSig2 PSBT proprietary key-value parsing and signature
aggregation for taproot key path spending, enabling BitGo wallets to create
threshold signatures for taproot outputs using the MuSig2 protocol as
specified in BIP-327.

The implementation includes:

  • Parsing MuSig2 participants, nonces, and partial signatures from PSBT
  • Validating and aggregating partial signatures into a final signature
  • Finalizing PSBT inputs with aggregated signatures

Additional improvements:

  • Added lint command to Makefile with cargo fmt and clippy checks
  • Added psbtBase64Finalized to fixtures
  • Added detailed musig2 input data in fixtures
  • Refactored PSBT fixture test macro to include format parameter for more
    flexible and less duplicated test infrastructure

Issue: BTC-2652

OttoAllmendinger and others added 5 commits November 3, 2025 16:40
Add lint target that runs cargo fmt and clippy checks

Issue: BTC-2652

Co-authored-by: llm-git <[email protected]>
…arameter

Updates the test_psbt_fixtures macro to include the transaction format as
an explicit parameter instead of hardcoding it within each test function.
This reduces code duplication and makes the test infrastructure more
flexible.

Issue: BTC-2652

Co-authored-by: llm-git <[email protected]>
Implements MuSig2 PSBT proprietary key-value parsing and signature
aggregation for taproot key path spending. This enables BitGo wallets
to create threshold signatures for taproot outputs using the MuSig2
protocol as specified in BIP-327, which appear as single-signature
spends on-chain.

The implementation includes:
- Parsing MuSig2 participants, nonces, and partial signatures from PSBT
- Validating and aggregating partial signatures into a final signature
- Finalizing PSBT inputs with aggregated signatures

Issue: BTC-2652

Co-authored-by: llm-git <[email protected]>
@OttoAllmendinger OttoAllmendinger force-pushed the BTC-2652.p2tr-musig2.finalize.clean branch from b64c098 to b35477f Compare November 3, 2025 18:19
@OttoAllmendinger OttoAllmendinger marked this pull request as ready for review November 3, 2025 18:32
@OttoAllmendinger OttoAllmendinger requested a review from a team as a code owner November 3, 2025 18:32
@OttoAllmendinger OttoAllmendinger merged commit 21595bf into master Nov 4, 2025
1 check passed
@OttoAllmendinger OttoAllmendinger deleted the BTC-2652.p2tr-musig2.finalize.clean branch November 4, 2025 08:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants