#35443 tests: add functional test for tr musig2 miniscript decaying multisig

full analysis

https://github.com/bitcoin/bitcoin/pull/35443 · mjdietzx · +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

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.

Data

dossier JSON · extract JSON · model openrouter/google/gemini-3.8-flash, generated 2026-09-17T15:53, confidence high, input hash 418456dbd36dbb62