fix(wasm-utxo): handle replay protection inputs in PSBT reconstruction#271
Merged
OttoAllmendinger merged 2 commits intomasterfrom Apr 29, 2026
Merged
Conversation
Allow PSBT reconstruction from half-signed BCH transactions that include unsigned replay protection inputs. Previously, inputs without scriptSig or witness data would error; now they parse as `Unsigned`. When hydrating from a legacy transaction, use the expected pubkey from unspents metadata if the input is unsigned, rather than requiring the pubkey to be extracted from the transaction. Add comprehensive regression tests for BCH FORKID sighash finalization and PSBT hydration scenarios. Tests verify that: - All partial sigs use hashType 0x41 (SIGHASH_ALL|SIGHASH_FORKID) - utxolib's finalizeAllInputs() succeeds without "Invalid hashType 0" - Both unsigned and signed p2shP2pk inputs reconstruct correctly - fromNetworkFormat preserves sigs in half-signed and fully-signed txs - Wallet-platform hydrate-and-cosign flow completes successfully Issue: BTC-2650 Co-authored-by: llm-git <llm-git@ttll.de>
Remove tests for deprecated `fromHalfSignedLegacyTransaction` method. Retain tests for `fromNetworkFormat` which supersedes it. Consolidate test file and reduce redundancy by combining half-signed and full-signed test cases into a single parameterized helper. Issue: BTC-2650 Co-authored-by: llm-git <llm-git@ttll.de>
davidkaplanbitgo
approved these changes
Apr 29, 2026
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.
Allow PSBT reconstruction from half-signed BCH transactions that
include unsigned replay protection inputs. Previously, inputs without
scriptSig or witness data would error; now they parse as
Unsigned.When hydrating from a legacy transaction, use the expected pubkey from
unspents metadata if the input is unsigned, rather than requiring the
pubkey to be extracted from the transaction.
Add comprehensive regression tests for BCH FORKID sighash finalization
and PSBT hydration scenarios. Tests verify that:
Remove tests for deprecated
fromHalfSignedLegacyTransactionmethod.Retain tests for
fromNetworkFormatwhich supersedes it.Consolidate test file and reduce redundancy by combining half-signed
and full-signed test cases into a single parameterized helper.
Issue: BTC-2650