跳转到正文
buybitcoinsmart

术语表 /钱包与托管

多重签名

又称 Multisig、Multisignature、多签。

多重签名是什么?
多重签名(Multisig)将比特币锁定在多个密钥之后,花费时需要达到设定数量的签名,因此丢失或泄露其中任何一个密钥都不会导致资金损失。

规定于 BIP-11。

multisig 地址绑定的是一个脚本,该脚本列出多个公钥和一个阈值,最常见的是三选二。自 BIP-11于2011年10月撰写以来,比特币就将其视为标准交易类型,当时硬件钱包还没有出现。对于计划持有十年的储蓄,它消除了单一助记词造成的单点故障。

运作方式

multisig 规则存在于输出的脚本中,因此由网络而非任何应用程序来强制执行。经典的三选二赎回脚本是这样写的:压入数字2,压入三个公钥,压入数字3,然后是 OP_CHECKMULTISIG。节点将有效签名与所列公钥逐一核对,除非至少有两个签名通过验证,否则拒绝这笔支出。任何公司、服务器和钱包供应商都不参与这一决定。

同一思路的三种编码方式曾在不同时期成为标准,其大小限制各不相同。

裸 multisig 将公钥直接放在输出中。多年来,转发策略将其限制为三个公钥,而且浪费空间,因此它主要存在于非常古老的币中。

P2SH 将脚本隐藏在哈希之后,在支出时才披露。赎回脚本的520字节限制使这一方式最多只能容纳15个压缩公钥。

P2WSH 是 SegWit 版本,将脚本移入见证数据,并把上限提高到3,600字节的见证脚本,此时操作码自身的20个公钥限制会先起作用。原生 SegWit multisig 地址以 bc1q 开头,是目前大多数协调器软件生成的地址。

一个历史遗留的怪异之处至今仍体现在每一笔支出中。OP_CHECKMULTISIG 会多弹出一个它并不需要的元素,这是原始实现中的一个缺陷,不进行硬分叉就无法移除。BIP-147将这个多余元素必须为空设为共识规则,并于2017年8月24日在区块481,824与 SegWit 一同激活。

Taproot 再次改变了局面。BIP-342在 tapscript 中禁用了 OP_CHECKMULTISIG,并引入了 OP_CHECKSIGADD,它逐个公钥地累计签名,解除了20个公钥的上限。另外,MuSig2 可让一组签名者把各自的密钥合并为一个,这样 n 选 n 的支出在链上看起来就是一笔普通的单签名 Taproot 支付,无法区分,而且费用更低。

为何这在您购买比特币时很重要

multisig 不是交易所的替代品。您仍然在本站评测的平台之一购买,而 multisig 是您提币的目的地,因此购买指南和这一决定相互独立。

它改变的是您的风险形态。单签名钱包只要发生一个事件就会彻底失败:丢失助记词、火灾同时烧毁两份副本、被胁迫透露信息、某一厂商产品中的固件后门。由三家不同制造商的设备组成的三选二可以承受上述所有情况,因为单一的种子、单一的建筑和单一的公司都不足以造成损失。因此本站的硬件评测会标明哪些设备缺少安全元件:在混合厂商的签名组中,一台较弱的设备不再是致命的。

成本是实实在在的,应如实计入。支出体积更大:三选二的原生 SegWit 输入约重105 vbytes,而单签名输入约为68,因此同一笔付款的手续费要多出约一半。设置需要一个晚上,而不是三分钟。此外还多了一个需要备份的对象,即钱包描述符,其中列出每个扩展公钥、派生路径和阈值,如果您无法联系共同签名者,就无法凭您持有的助记词重新生成它。

采用它的合理门槛取决于行为而非资金。如果您已经测试过用手写的词语恢复单签名钱包,并且现在所涉金额令您担心,那么 multisig 就是下一步。如果您还没有做过这样的演练,再增加两台设备只会增加未经测试的备份令您失望的可能。

丢失一个密钥仍可保全的三选二

下面是一个人们实际在维护的三选二 multisig 配置,描述得足够具体,可以照做。

向三家厂商购买三台签名设备,最好来自三家不同的供应商,并让每台设备各自独立设置,使用各自的助记词。在 Sparrow 或 Nunchuk 等协调器软件中合并它们的扩展公钥,选择三选二策略,并导出生成的描述符。

将三份种子备份存放在三个彼此独立、不会同时失效的地方:家中保险箱、银行保管箱或工作场所,以及另一座城市的可信亲属处。每处都要存放一份描述符副本,因为它不是机密,单独持有它不能让任何人动用任何资金,而缺少它则可能使三份种子原本可以恢复的币无法取回。

先存入少量资金,然后演练故障。假设一台设备已丢失,用另外两台发起支出,并确认交易完成结算。签名组每次变更之后都要做同样的演练,此后每年再做一次。

当某台设备真的失效时,您并没有损失任何东西,但此时您实际运行的是二选二。请更换缺失的签名者,用新密钥建立新的签名组,并将币转到新地址,而不是在缩减后的安全余量下继续使用。

multisig vs multisig 保管库

multisig 是底层方案,multisig 保管库则是建立在其上的产品。有些服务出售托管式签名组:服务商持有一个密钥,您持有一个或两个,其余由恢复流程负责。无论哪种方式,链上的脚本看起来都一样,但信任模型不同:保管库引入了一家可能倒闭、更改定价或被法院强制的公司,而这正是自行管理的 multisig 所消除的依赖。两者都是合理的选择,把它们混为一谈,就会误判要让您的币能够转移,谁必须一直存续。

multisig vs P2SH multisig

multisig 是支出策略,P2SH multisig 则是将该策略放入地址的一种方式。随着 SegWit 和 Taproot 的出现,这一区别变得至关重要,因为同一个三选二如今至少有三种可能的链上形式,大小、地址前缀和隐私特性各不相同。恢复钱包时,只知道“它是三选二”还不够,您还需要知道您向其充币的地址是由哪种脚本类型生成的。

请勿混淆

常见问题

我需要多重签名吗?

仅当单一助记词是您整套设置中令您担忧的部分,并且已经用手写的助记词成功恢复过一个单签名钱包时,才有必要使用。在此之前,增加设备只会让未经测试的备份出错的可能性成倍增加。

多重签名钱包需要备份哪些内容?

需要备份您持有的每一个种子,以及钱包描述符;描述符列出所有扩展公钥、派生路径和阈值。描述符不是机密,本身也无法花费任何资金,因此请在每份种子备份旁各存放一份副本。

使用多重签名的成本更高吗?

略高。一个三选二的原生 SegWit 输入约重105 vbytes,而单签名输入约为68 vbytes,因此一笔支出的手续费大约要多出一半。接收则没有任何额外费用。

我可以在同一个多重签名钱包中混用不同品牌的硬件钱包吗?

可以,而且混用正是其意义所在。由三家厂商的设备组成的签名组,即使其中任何一家出现缺陷或供应链问题,仍然可以保持安全;由单一制造商的设备保护的钱包则做不到这一点。

接着阅读

相关术语

钱包与托管中的更多术语

阅读本页英文版