跳转到正文
buybitcoinsmart

术语表 /协议与升级

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 则不能,这对家庭是隐私方面的收益,对需要证明某笔付款经过两名负责人批准的财务主管则是一种障碍。

请勿混淆

常见问题

MuSig2 能为我提供三取二的钱包吗?

单靠它本身不能。MuSig2 为 n 取 n 的签名聚合密钥,因此每名参与者都必须签名。真正的阈值签名要么在同一个 Taproot 地址内使用脚本路径,要么采用其他协议,例如 FROST。

MuSig2 需要软分叉吗?

不需要。Taproot 已经接受针对单个密钥的单个 Schnorr 签名,而 MuSig2 只改变签名者在链下的协作方式。共识规则无需任何改变即可使其运作。

接着阅读

相关术语

协议与升级中的更多术语

阅读本页英文版