术语表 /协议与升级
MuSig2
又称密钥聚合。
- MuSig2是什么?
- MuSig2 使多个签名者能够将各自的公钥合并为一个公钥,并生成单个64字节的 Schnorr 签名,因此多人联合支出在链上与单人支出完全一样。
规定于 BIP-327。
密钥聚合是其全部关键所在:多名参与者各自持有一个私钥,数学运算将他们的公钥相加为一个聚合公钥,其中任何一人都无法单独控制该公钥。BIP-327将该方案固定为两轮通信,少于原版 MuSig 的三轮。对于共享钱包而言,这意味着更低的手续费,并且没有任何公开证据表明该钱包是共享的。
运作方式
MuSig2 在小组内分两个阶段运行,只有第二阶段需要知道所签署的内容。
在第一阶段,每名签名者生成两个秘密随机数(nonce),并公布相应的一对点。协调者使用对整组数据做哈希得到的系数,将这些点对相加为一个合并随机数。正是这一系数的具体设计,使该方案得以减少一轮通信,同时不会重新引入曾使早期两轮方案失效的攻击。
在第二阶段,每名签名者针对交易的签名哈希生成一个部分签名,并返回一个数字。这些数字相加后,构成一个64字节的签名,可按普通的 BIP-340规则,对照32字节的聚合公钥完成验证。验证区块的节点无法分辨有多少人参与其中,甚至无法分辨是否有人参与。
有两项安全属性值得明确指出。密钥聚合为每个密钥应用一个单独的系数,使参与者无法构造出一个能抵消其他所有人公钥的公钥,即简单的公钥相加所允许的恶意密钥攻击(rogue key attack)。此外,随机数严格限于一次性使用:用同一个随机数签署两条不同的消息,会直接暴露您的私钥,因此正确的实现会在秘密随机数被使用后立即将其擦除,并拒绝同一会话中的第二次签名。
在哪里会遇到它
MuSig2 位于 Taproot 密钥路径支出的背后,因此您实际看到的是一个与其他地址表现无异的 bc1p 地址。
体积方面的优势是具体的。无论是一个人还是五个人签名,Taproot 密钥路径输入都占用57.5 vbytes,而三取二的见证脚本支出必须披露三个公钥和两个签名,体积远超其两倍。Taproot 输出自区块709,632(2021年11月14日)起可以支出,因此该功能已在链上存在多年,瓶颈一直在钱包软件。
BIP-373提供了底层支持,增加了用于公开随机数、参与者密钥和部分签名的 PSBT 字段,使硬件设备无需各家厂商自行设计消息格式即可加入签名会话。在消费级钱包中的采用仍然有限。最具体的部署是闪电网络中的简易 Taproot 通道工作,通道双方将资金存入单个 MuSig2 输出。
MuSig2 vs 多重签名
MuSig2 在设计上是 n 取 n;传统多重签名可以采用任意阈值。
这一差异决定了它是否适合用于您的储蓄。基于脚本的三取二方案在丢失一个密钥时仍可使用,因为脚本列出三个密钥,只要求其中两个签名。聚合密钥则要求所有参与者在场,如果有签名者消失,资金也会随之被锁定,除非同一地址还承诺了一条包含恢复分支的脚本路径。在单个聚合密钥之下实现真正的阈值签名,需要另一种协议,例如 FROST,而这并不是 BIP-327所规定的内容。
第二项取舍是有意为之的。脚本多重签名任何人都可以通过区块浏览器审计,而 MuSig2 则不能,这对家庭是隐私方面的收益,对需要证明某笔付款经过两名负责人批准的财务主管则是一种障碍。