Refuse a transaction whose stripped serialization is 64 bytes.
Both verifiers apply this rule to every transaction a bundle carries in a
proven position: parseHopTx in custody.ts to each custody hop, and
parseHexTxChecked in satnumber.ts to the genealogy endpoints and every
funding step. Nothing in the build applied it, so a backend serving such a
transaction bought a whole bundle that the verifier then refused after the
loop had been left, with the other configured backends never asked.
The reason is parseHopTx's: the txid-tree leaf preimage is the stripped
serialization, so a 64-byte stripped transaction can be read as an inner
node of that tree, and the ambiguity class is stripped length 64 whether or
not the transaction carries a witness.
Raised as HopConsistencyError naming the backend, so the loops record it
as that backend producing no usable answer and lead the next attempt.
Refuse a transaction whose stripped serialization is 64 bytes.
Both verifiers apply this rule to every transaction a bundle carries in a proven position:
parseHopTxincustody.tsto each custody hop, andparseHexTxCheckedinsatnumber.tsto the genealogy endpoints and every funding step. Nothing in the build applied it, so a backend serving such a transaction bought a whole bundle that the verifier then refused after the loop had been left, with the other configured backends never asked.The reason is
parseHopTx's: the txid-tree leaf preimage is the stripped serialization, so a 64-byte stripped transaction can be read as an inner node of that tree, and the ambiguity class is stripped length 64 whether or not the transaction carries a witness.Raised as
HopConsistencyErrornaming the backend, so the loops record it as that backend producing no usable answer and lead the next attempt.