feat(wasm-utxo): implement partial PSBT signing and improve test infrastructure#27
Merged
OttoAllmendinger merged 8 commits intomasterfrom Nov 6, 2025
Merged
feat(wasm-utxo): implement partial PSBT signing and improve test infrastructure#27OttoAllmendinger merged 8 commits intomasterfrom
OttoAllmendinger merged 8 commits intomasterfrom
Conversation
Introduces PsbtStages and PsbtInputStages types to simplify testing across different signing stages (unsigned, halfsigned, fullsigned). Refactors test helpers to use these new types for more structured testing. Issue: BTC-2652 Co-authored-by: llm-git <llm-git@ttll.de>
Implement a helper function for testing that a user signature can be applied to an unsigned PSBT. Sets up the test framework but leaves the implementation as a todo for later. Issue: BTC-2652 Co-authored-by: llm-git <llm-git@ttll.de>
Improves wallet key management by adding XprvTriple struct to replace loose vector handling of extended private keys. This provides: - Type safety with fixed array instead of Vec - Named accessor methods for keys (user, backup, bitgo) - Conversion utility to RootWalletKeys - Simplifies test fixtures with direct key access Issue: BTC-2652 Co-authored-by: llm-git <llm-git@ttll.de>
Use fixtures::XprvTriple instead of RootWalletKeys in test utils to simplify signature testing with wallets. Issue: BTC-2652 Co-authored-by: llm-git <llm-git@ttll.de>
Implement a sign method for the BitGoPsbt struct that wraps the underlying miniscript PSBT signing capability. This allows direct signing of transactions with keys that implement the GetKey trait and is tested with existing fixtures. Issue: BTC-2652 Co-authored-by: llm-git <llm-git@ttll.de>
Update ScriptType enum variants to have more consistent and descriptive naming that better reflects their purpose: - P2tr -> P2trLegacyScriptPath - P2trMusig2 -> P2trMusig2ScriptPath - TaprootKeypath -> P2trMusig2TaprootKeypath Rename test functions to use more concise and consistent naming pattern. Functions now use "suite" suffix instead of verbose "generation_from_fixture" descriptions. Issue: BTC-2652 Co-authored-by: llm-git <llm-git@ttll.de>
Remove unused expected_pubkey variable in the singlesig wallet script tests since it's not being used in the test assertions. Issue: BTC-2652 Co-authored-by: llm-git <llm-git@ttll.de>
bf85c2c to
39936c1
Compare
Support adding user signatures to P2TR script path inputs using the tap_script_sigs field for both legacy script path and Musig2 script path formats. Issue: BTC-2652 Co-authored-by: llm-git <llm-git@ttll.de>
lcovar
approved these changes
Nov 5, 2025
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.
Implements half-signing for script types
For bitcoin-like networks (bitcoin, litecoin, dogecoin, dash)
Missing:
This PR enhances the WASM UTXO module with improved PSBT handling, key
management, and testing utilities:
BitGoPsbt.sign()method for direct transaction signingXprvTriplestruct for type-safe wallet key managementPsbtStagesandPsbtInputStagesfor structured test fixturesP2tr→P2trLegacyScriptPathP2trMusig2→P2trMusig2ScriptPathTaprootKeypath→P2trMusig2TaprootKeypathXprvTripledirectlyThese changes provide a more robust and type-safe implementation for PSBT
handling while improving the developer experience with better naming and
more structured test fixtures.
Issue: BTC-2652