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.
In short: fixed a code path that was never used until the
dsf
message.The Long Story
There was a code path that was never exercised until I copied inputs from the
dsf
because thedsf
is missing thescript
, whereas it always exists forutxo
from Insight and RPC.This code path put the size byte as part of the script - which was then calculated as part of the script with another size byte in front of it.
So as I've gone through the coinjoin message byte by byte, I just failed to notice the 1, single byte in front of the size byte (because there's always a few "header" bytes to the script that I skip over as "the size, type, op code, etc").
And the sigscript does have a double size header (the bitcoin size byte, followed by the ASN.1 size byte).
And the input script takes the place of the sigscript when hashing.
So in an input, it looks like a double size byte normally, and only in the in-memory representation is it a single-size byte.
In the output, the lockscript doesn't have the extra size byte like an input signature script does.