建议的主根软分叉(BIP 342)定义了新的操作码OP\u CHECKSIGADD,以验证Schnorr多重签名,而OP\u CHECKMULTISIG(和OP\u CHECKMULTISIGVERIFY)对主根开销禁用(SegWit版本1)。我们是否可以使用OP\u CHECKSIGADD操作码来验证新的SegWit版本0 ECDSA多重签名?显然,如果单个签名是ECDSA,那么您不会获得相同的批验证好处,但是使用CHECKSIGADD的计数器系统仍然更有效?
有关操作码CHECKSIGADD如何工作的解释,请参阅jameschiang的演示。或参见Tapscript BIP 342。
“操作码186(0xba)被命名为OP\u CHECKSIGADD”
“OP\u CHECKSIGADD在功能上等同于OP\u ROT OP\u SWAP OP\u CHECKSIG OP\u ADD”
脚本
比特币核心开发
主根
分享
改进这个问题
跟随
编辑时间:7月29日12:16
7月29日11:48问
迈克尔·福克森
606777银牌2222铜牌
添加评论
1个答案
1
否,因为SegWit版本0的操作码186(0xba)未定义。您只能在SegWit版本1中使用此操作码。如果将此操作码包含在SegWit版本0事务脚本中,则任何花费此操作码的尝试都会遇到此脚本错误。
此外,Pieter Wuille在评论中补充道:
事实上,为现有的脚本版本启用相同的语义将是一个硬分叉。它将元素从堆栈中弹出,因此仅由“OP_CHECKSIGADD OP_SIZE 1 OP_EQUAL”和fed 3个元素作为输入组成的脚本当前无效,但如果添加了这样的操作码,则该脚本有效
分享
改进这个答案
跟随
6小时前编辑的
7月29日12:40答复
迈克尔·福克森
606777银牌2222铜牌
2
实际上,操作码只存在于tapscript中Pieter Wuille 20年7月29日16:49
1
事实上,为现有的脚本版本启用相同的语义将是一个硬分叉。它将元素从堆栈中弹出,因此仅由“OP_CHECKSIGADD OP_SIZE 1 OP_EQUAL”组成的脚本,并将3个元素作为输入,当前将是无效的,但如果添加了这样的操作码,则该脚本将是有效的Pieter Wuille 20年7月29日18:02
添加评论
你的答案