Checking whether Standardness Quirks of BTC still apply
Motivation
The new “BinoHash” idea for BTC is surfacing very unexpected quirks about non standard transactions again. It is a very hacky way to enable a narrow BitVM-related covenant use case, and it relies on old Bitcoin technical debt around FindAndDelete during signature hashing.
At the end of the podcast At the end of the podcast “BitVM3 & The Garbled Circuits Revolution | ROBIN LINUS & LIAM EAGEN”, the BinoHash non-standardness mechanics are laid out
Findings
Verified against the official BCH upgrade specs (with help from GPT and Claude):
1. BCH removed FindAndDelete from the active signing path in 2017.
The BCH replay-protected sighash spec (UAHF 2017) is explicit: “Contrary to the original algorithm, this one does not use FindAndDelete to remove the signature from the script.” As a consequence, “it is not possible to create a valid signature within redeemScript or scriptPubkey as the signature would be part of the digest.” (spec)
The exact BTC-style trick surface that BinoHash relies on is simply not available on BCH’s modern signing path.
2. The old FindAndDelete code path is not reachable for valid modern BCH transactions.
The old behavior only applies when SIGHASH_FORKID is not set — but since UAHF activation, transactions without this flag are rejected by consensus. The code exists in the codebase but cannot be exercised by any valid modern BCH transaction. The 2019 Schnorr multisig spec makes this even more explicit: “The findAndDelete operation only applies to old transactions prior to August 2017, and does not impact current transactions, not even in legacy mode.” (spec)
3. BCH’s sighash is structurally different, not just a flag change.
The UAHF digest replaced the signing algorithm with a different structure adapted from BIP143. It commits to the value of the output being spent, uses reusable precomputed hashes (hashPrevouts, hashSequence, hashOutputs), and includes a 4-byte sighash type with an embedded fork ID for replay protection. This isn’t a patch on top of the old algorithm — it’s a replacement. (spec)
4. OP_CODESEPARATOR is the one inherited script-shaping mechanism that survives.
While FindAndDelete is gone, OP_CODESEPARATOR still affects which portion of the script gets committed in the sighash. If present, everything up to and including the last executed OP_CODESEPARATOR is stripped from the scriptCode before hashing. Worth noting for completeness, though it’s unrelated to the BinoHash trick. (spec)
5. BCH repurposed OP_CHECKMULTISIG's historical dummy element rather than just carrying it as dead weight.
The old off-by-one bug that required an extra unused stack element was turned into a mode switch in the November 2019 upgrade: a null dummy element triggers legacy ECDSA mode, a non-null dummy triggers Schnorr mode with a checkbits bitfield for efficient signature-to-pubkey matching. Legacy baggage turned into useful functionality. (documentation.cash)
Conclusion
The BinoHash trick on BTC is a good example of what can happen when old consensus quirks remain available as live surfaces.
The findings above confirm that BCH’s 2017 sighash overhaul structurally removed this trick surface from the active signing path, and the 2019 Schnorr multisig spec went further by explicitly stating that FindAndDelete does not affect current transactions, even in legacy mode. While BCH still has inherited historical oddities worth cataloging, this particular BTC rabbit hole does not appear to carry over to valid modern BCH transactions — a useful distinction to keep in mind when comparing BTC standardness issues to current BCH standardness questions.