Signing a transaction can only happen when the transaction has inputs. A transaction with inputs can always be deserialized as witness-transaction. If try_no_witness decoding is attempted, this will lead to rare intermittent failures.
Fixes #18803
Signing a transaction can only happen when the transaction has inputs. A transaction with inputs can always be deserialized as witness-transaction. If try_no_witness decoding is attempted, this will lead to rare intermittent failures.
Fixes #18803
This may have been introduced in commit 6b4f231f5f0f88690488c4da20ea1c180dbc4b19, in which case it needs backport to all currently supported, released versions of Bitcoin Core.
See also #15899
Looks like this removes all the remaining DecodeHexTx(…, …, true) in non-test code, besides fundrawtransaction.
What happens if someone does try a 0 input tx with these? Ideally we would give a meaningful error, but I don't think we do.
@MarcoFalke could you follow up with achows query:
What happens if someone does try a 0 input tx with these? Ideally we would give a meaningful error, but I don't think we do.
ACK 33330778230961cfbf2a24de36b5877e395cc596
@instagibbs / @ajtowns as the author/reviewer of #17775 you might be qualified and interested in reviewing this
ACK 33330778230961cfbf2a24de36b5877e395cc596
Confirmed the RPCs changed are only worth calling if you have inputs, and the error message changes look okay.