Legacy CHECKMULTISIG has FindAndDelete hooked up to it. SegWit v0 already eliminated FindAndDelete and stored CHECKMULTISIG working high-quality. So for tapscript, the straightforward path was: maintain CHECKMULTISIG, say FindAndDelete would not run right here.
BIP-342 did not do this. It disabled CHECKMULTISIG utterly and added CHECKSIGADD, so multisig is now a sequence of opcodes plus a comparability.
That is a a lot greater change than simply fixing the bug. I might like to grasp why.
Just a few issues I am interested in:
Was a “clear CHECKMULTISIG” ever thought of, and why was it rejected?
Was the primary cause batch verification with Schnorr, or one thing else?
Or was it a deliberate selection to maneuver away from opcodes that pack entire patterns, towards smaller primitives that script authors mix themselves?
The final one issues to me as a result of if it is an actual design shift, it in all probability additionally shapes how future opcodes (CAT, CSFS, and many others.) ought to look.
If anybody was a part of these discussions, I might love to listen to the precise reasoning.
Notice: This isn’t about whether or not CHECKSIGADD could possibly be retrofitted to SegWit v0 (that query has been answered — it might’t, it could be a hardfork). My query is the wrong way: when designing tapscript, why introduce CHECKSIGADD in any respect, as a substitute of holding CHECKMULTISIG with FindAndDelete eliminated?
Legacy CHECKMULTISIG has FindAndDelete hooked up to it. SegWit v0 already eliminated FindAndDelete and stored CHECKMULTISIG working high-quality. So for tapscript, the straightforward path was: maintain CHECKMULTISIG, say FindAndDelete would not run right here.
BIP-342 did not do this. It disabled CHECKMULTISIG utterly and added CHECKSIGADD, so multisig is now a sequence of opcodes plus a comparability.
That is a a lot greater change than simply fixing the bug. I might like to grasp why.
Just a few issues I am interested in:
Was a “clear CHECKMULTISIG” ever thought of, and why was it rejected?
Was the primary cause batch verification with Schnorr, or one thing else?
Or was it a deliberate selection to maneuver away from opcodes that pack entire patterns, towards smaller primitives that script authors mix themselves?
The final one issues to me as a result of if it is an actual design shift, it in all probability additionally shapes how future opcodes (CAT, CSFS, and many others.) ought to look.
If anybody was a part of these discussions, I might love to listen to the precise reasoning.
Notice: This isn’t about whether or not CHECKSIGADD could possibly be retrofitted to SegWit v0 (that query has been answered — it might’t, it could be a hardfork). My query is the wrong way: when designing tapscript, why introduce CHECKSIGADD in any respect, as a substitute of holding CHECKMULTISIG with FindAndDelete eliminated?

















