传统上,使用 CHECKMULTISIG 创建 n-of-n multisig 意味着在区块链上向交易中的签名者公布一定比例数量的签名和公钥。这种方法不仅会暴露交易参与者的总数,还会随着签名者数量的增加而产生越来越高的交易费用。另一方面,MuSig 允许一组用户集体生成一个签名和公钥来验证交易,从而提高了隐私性,降低了所有参与签名者的交易成本。
2018 年 MuSig 推出之初,与 CHECKMULTISIG 相比,它的主要不足之处在于用户体验,特别是要求签署者之间进行三轮交互式交流。随着 2020 年 MuSig2(BIP 327)的推出,作为 2018 年 MuSig(也称为 MuSig1)的后续版本,我们在非交互式签署方面取得了重大进展,为我们带来了更为理想的体验。
工作原理
MuSig2 与其前身的功能相同,将所需的通信回合数从三轮减少到两轮。 MuSig2 的钱包设置首先要收集所有参与者的扩展公钥(xpubs),然后由每个钱包创建描述符,所有这些都与现有的多重签名做法一致。
然后,MuSig2 签名阶段包括
1. 第一轮信息: 在钱包设置过程中生成非ces,添加到部分签名比特币交易(PSBT)中,并在其他签名者之间共享。
2. 第二轮信息: 收到的非ces 用于创建部分签名,并发送回其他签名者。
除了让每个签名者直接向其他签名者发送自己的非ce 和部分签名外,还可以引入第三方协调者来简化通信过程。
在签名过程中,每个签名者的非密钥由两个椭圆曲线点组成。这些点通过部分签名比特币交易(PSBT)传送给其他签名者。在此过程中,需要小心处理这些非ce,以确保其准确性和完整性,但由于它们不是机密信息,因此不需要安全存储。如果所有个人的部分签名都是有效的,那么生成的施诺尔签名也是有效的。
MuSig2 BIP 草案
上个月,我们提出了两个 BIP 草案:MuSig2 PSBTs 和 MuSig2 描述符,这是采用 MuSig2 和整合钱包的必要步骤。第一个 BIP 为 PSBT 中的非ces、公钥和部分签名添加了字段,第二个 BIP 提供了一种方法来描述由 MuSig2 钱包控制的交易输出。这些 BIP 和规范加在一起,就是我们整合 MuSig2 钱包所需要的全部内容!许多钱包开发者和协作托管解决方案长期以来一直要求对 MuSig2 协议进行标准化。
现在,有了正式的 BIP,社区就可以对其进行审查、提供反馈并帮助提高人们的认识。在 Blockstream,我们期待着参与公众讨论,并让正式的 BIP 审查过程得以进行。
本文最初发表于比特币杂志。