Script
CHECKSIGADD 是否可以用於新的 ECDSA 多重簽名而不是 CHECKMULTISIG?
提議的 Taproot 軟分叉 ( BIP 342 ) 定義了新的操作碼 OP_CHECKSIGADD 以驗證 Schnorr 多重簽名,而 OP_CHECKMULTISIG(和 OP_CHECKMULTISIGVERIFY)對 Taproot 支出(SegWit 版本 1)禁用。我們可以使用 OP_CHECKSIGADD 操作碼來驗證新的 SegWit 版本 0 ECDSA 多重簽名嗎?顯然,如果單個簽名是 ECDSA,您不會獲得相同的批量驗證好處,但使用 CHECKSIGADD 的計數器系統仍然會更有效?
有關操作碼 CHECKSIGADD 工作原理的說明,請參閱 James Chiang 的此展示文稿。或參見 Tapscript BIP 342。
“操作碼 186 (0xba) 被命名為 OP_CHECKSIGADD”
“OP_CHECKSIGADD 在功能上等同於 OP_ROT OP_SWAP OP_CHECKSIG OP_ADD”
否,因為 SegWit 版本 0 的支出未定義操作碼 186 (0xba)。您只能在 SegWit 版本 1 支出中利用此操作碼。如果您在您的 SegWit 版本 0 交易腳本中包含此操作碼,任何嘗試使用它都會遇到此腳本錯誤。
此外,Pieter Wuille 在評論中補充道:
事實上,為現有腳本版本啟用相同的語義將是一個硬分叉。它將元素從堆棧中彈出,因此僅由“OP_CHECKSIGADD OP_SIZE 1 OP_EQUAL”組成的腳本,並提供 3 個元素作為輸入目前無效,但如果添加了這樣的操作碼則有效