#35443 tests: add functional test for tr musig2 miniscript decaying multisig
https://github.com/bitcoin/bitcoin/pull/35443 · · +190/-0 in 3 files, 1 commits · labels: Tests
Goal
- Add end-to-end test coverage and documentation for decaying multisig descriptors
- Demonstrate wallet PSBT coordination combining MuSig2 key paths with Miniscript script paths
Adds a new functional test, wallet_taproot_decaying_multisig_descriptor_psbt.py, exercising a 4-of-4 decaying multisig descriptor that uses MuSig2 for the Taproot key path and Miniscript for timelocked script-path fallbacks. It also adds an example of this descriptor pattern to doc/descriptors.md.
Problem: While Bitcoin Core supports MuSig2 and Miniscript descriptors, there was no end-to-end integration test or clear documentation demonstrating how wallet PSBT workflows handle combining a MuSig2 aggregate key path with timelocked Miniscript script paths across watch-only and single-key signer wallets.
Category: Wallet (#58 of 84)
P3 · test coverage
- P3 because it adds test coverage for an advanced wallet descriptor workflow
- Validates wallet PSBT signing across multiple wallets without changing wallet code
- Serves primarily as executable documentation for combining Taproot, MuSig2, and Miniscript
P3 because it provides end-to-end test coverage for an advanced wallet descriptor workflow combining Taproot, MuSig2, and Miniscript. The author notes it acts as 'documentation as much as a functional test', verifying that wallet PSBT coordination works properly for this setup without changing wallet implementation code.
Membership: Exercises wallet descriptor import, PSBT creation, MuSig2 nonce/signature rounds, and spend finalization across multiple wallets.
Factors: security/stability 0, bug 0, performance 0, user value 1, leverage 0
Reviewability: Stale: Author silent
- Author has been silent for over 100 days
The author has been silent for 105 days, exceeding the project stale threshold of 60 days.
Author status: silent since 2026-06-03
Resolved concerns:
- rkrux suggested consolidating this test with the existing wsh decaying multisig test to avoid code duplication; the author responded that keeping it standalone prioritized readability and documentation value unless more reviewers requested combining them.
Agreement: Positive
- Overall positive sentiment with no objections raised
- Concept approval with suggestion to consolidate with existing tests (rkrux)
- Author preferred keeping it separate for clarity and documentation value
Positive; rkrux gave a Concept ACK and suggested code consolidation, which the author answered without further pushback
One contributor gave a Concept ACK with a nonblocking comment regarding test consolidation, which the author addressed. No objections have been raised.
- rkrux: Concept ACK e588094; suggested merging duplicate logic with existing decaying multisig test
- mjdietzx: preferred keeping them separate for clarity and standalone documentation value
Review verdicts (DrahtBot): 0
- Concept ACK: rkrux
Files
177 lines under test/bench/ci.
- test/functional/wallet_taproot_decaying_multisig_descriptor_psbt.py +176/-0
- doc/descriptors.md +13/-0
- test/functional/test_runner.py +1/-0
Card
Adds a functional test and documentation example for a Taproot decaying multisig wallet combining MuSig2 key-path spends with Miniscript timelocked script-path fallbacks. It verifies that single-key signer wallets can coordinate key-path and script-path spends using standard PSBT workflows without importing the multisig descriptor. The PR is clean and received a Concept ACK from rkrux, but the author has been silent for 105 days.