区块链/等级 IV · 深入协议/4.3 托管与隐私/课程 3
多重签名托管与继承
将密钥分散于不同的人、地点与时间
材料三个独立的硬件钱包或安全设备钱包描述符的安全离线记录用于备份助记词的金属板处于测试模式(testnet 或 signet)的钱包
好奇
- 为什么丢失密钥及其备份就会导致单签名钱包无法使用,而多签名钱包却仍能继续使用?
- 托管方如何能持有一把用于协助恢复的密钥,同时让所有者保留对资金的实际控制权?
- 如果所有设备都丢失了,除助记词本身之外,还需要哪些具体数据才能恢复多签钱包?
探索
- 标准的单签钱包依赖一个私钥。如果该私钥被盗,窃贼可以拿走一切;如果私钥及其所有备份都丢失,这些币也就没了。单一秘密就是单点故障。多签方案要求多个不同的密钥共同授权每笔交易,从而分散这一风险。
- 在常见的 2/3 配置中,会在不同的设备上生成三把私钥,这些设备往往来自不同的制造商,且存储位置也各不相同。任意两把私钥都可以共同签署一笔交易。如果其中一台设备丢失或被盗,剩下的两台设备仍能控制资金;而单独一把被盗的私钥则无法自行转移资金。
- 协作托管为机构和高净值人士将这种分散方式规范化。托管方持有一把密钥,提供恢复服务和运营支持,所有者则保留两把密钥。这种结构可以获得专业协助,而无需让出单方面控制权;即使托管方倒闭或遭到入侵,所有者手中的两把密钥仍足以转移资产。
- 在设备全部丢失后进行恢复,仅有助记词是不够的。钱包配置,特别是所有联署方的扩展公钥(xpub)和脚本类型,是重建地址所必需的。没有这些元数据,仅凭种子无法生成正确的收款地址。恢复需要这些 xpub 或一个输出描述符,因此必须与种子一起备份。
- 其代价在于复杂性和成本。管理三把密钥会增加日常使用和遗产规划的操作负担。脚本更大的交易在区块链上占用更多字节,因此网络手续费高于单签交易。当密钥通过 MuSig2 等协议聚合时,Taproot 可以降低这一成本,使合作支出看起来就像单个签名;但大多数多签钱包仍使用基于脚本的 P2WSH,操作上的复杂性依然存在。
- 多签并不能防范所有风险。2016年 Bitfinex 遭黑客攻击,约120,000枚 BTC 从其与 BitGo 的多签安排中被盗。Bitfinex 持有三把密钥中的两把,而 BitGo 的服务会按照 Bitfinex 的设置自动联署,因此潜入 Bitfinex 系统的攻击者就能达到签名门槛。2022年,约94,000枚 BTC 被追回。多签的保护效果取决于其密钥之间的独立程度。
- 比特币的托管机制存在一个根本性的矛盾:为防止资金被盗而必须保持的保密性,使得继承人无法找回这些资产。如果密钥持有者去世或丧失行为能力却未留下访问权限信息,那些聪就会永远丢失。这并非理论上的问题,正是数字资产管理中“生存规划”所需考虑的核心原因。分析人士估计,由于各种原因导致的密钥丢失,包括持有人死亡,已有数百万枚比特币遗失。
- 比特币的脚本引擎允许编码在特定条件下触发的逻辑。像 `wsh(or_d(pk(@0), and_v(v:multi(2,@1,@2,@3), older(65535))))` 这样的 Miniscript 描述符定义了这样一个钱包:单个密钥(`@0`)可以立即支出,或者另外三把密钥(`@1`、`@2`、`@3`)中的任意两把在经过65,535个区块后可以支出。所有者的密钥可以随时支出;继承人的路径只有在延迟结束后才会开启。(钱包会用 @0 这样的占位符来表示策略中的密钥。)
- 该脚本中的数字65,535代表一段特定的时长。按每个区块约十分钟计算,65,535个区块(基于区块的相对时间锁的上限)约为455天。这就是“继承锁”。由于它是相对时间锁,计时从币被确认时开始,而不是从持有者消失时开始。持有者必须定期转移这些币,才能让继承人的路径保持关闭;一旦时间锁到期,继承人即可花费这些币。
- 多签方案将控制权分配给多个可信方,例如一位亲属和一位专攻数字资产的律师。在 2-of-3 设置下,时间锁到期后,任何个人都无权单方面转移资金,必须有两个签名。这与传统遗产规划中遗嘱执行人与受益人协同处理的方式相似。担任执行人的人需要足够的技术指导才能执行该计划。
- 规划通常会将技术设置与一份指示信搭配使用,指示信说明有哪些资产以及如何使用,但本身不包含任何秘密。各司法管辖区的规定不尽相同:在许多地方,遗嘱经遗产认证后会成为公开文件,因此助记词不应写入遗嘱。控制权过度集中的警示案例是 QuadrigaCX:这家加拿大交易所的创始人 Gerald Cotten 于2018年12月去世,客户被拖欠约2.15亿加元;监管机构后来发现,损失主要源于他的欺诈,而只有他一人持有密钥,使欺诈很容易被掩盖。通常建议寻求专业法律意见。
- 规划者在依赖一项计划之前通常会先演练:在测试网上或用极少量资金设置相同的策略,等待时间锁到期,并确认继承人的密钥确实能够签名,从而确保技术设置与法律意图一致。围绕 Miniscript 构建的钱包(如 Liana)正是为这种带时间锁的恢复而设计的。
部分 I多重签名托管
部分 II遗产规划
关键事实
- 2-of-3 多签设置需要从三把可用密钥中取得两个不同的签名,才能授权一笔交易。
- 协作托管是指由第三方持有一把用于恢复的密钥,所有者持有其余两把。
- 恢复多签钱包需要备份所有联署方的 xpub 和脚本类型,而不仅仅是助记词。
- 过去,较大的多签脚本因链上字节数更多而推高了交易手续费。
- 2016年Bitfinex遭黑客攻击,导致其与BitGo之间的多重签名账户损失了约120,000枚BTC。
- 借助聚合密钥,Taproot 使得合作式多重签名支出看起来就像单个签名一样。
- Miniscript 描述符 `wsh(or_d(pk(@0), and_v(v:multi(2,@1,@2,@3), older(65535))))` 允许单个密钥立即支出,或在65,535个区块之后以 2-of-3 多签延迟支出。
- 相对时间锁(BIP68)可将恢复路径的启动时间延迟最多65,535个区块,约455天。
- QuadrigaCX 的创始人于2018年12月去世,客户被拖欠约2.15亿加元。
- 多签名钱包需要多个私钥才能授权交易,例如在高级继承脚本中使用的“2/3”配置。
- 比特币访问权限的“可延续性”是一个至关重要的安全问题;如果没有共享的访问凭证或多签名机制,持有人去世后其资金可能无法找回。
- 在许多司法管辖区,遗嘱经遗产认证后会公开,因此不适合存放秘密。
练习 九、六、三、一
9收集列出个人或机构所使用的9种不同的保管方式或密钥管理策略。注明每种密钥由谁持有,以及何种情况会触发密钥恢复流程。
6归类根据主要风险所在,将这9种方式分为6类:所有者失误、托管方失职、所有密钥实物丢失、法律扣押、协议漏洞或社会工程学攻击。
3提炼将这6类归纳为3个根本原因,说明多签方案尽管具有分布式特性,为何仍会失败。
1凝结用一句话解释:多签备份中最常丢失、并会导致助记词失去作用的是哪一项元数据。
事实核查
日期、数字及数据均依据下方列出的已发表资料进行核实。
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023), ch. 7
- BIP380: Output Script Descriptors General Operation
- Bitfinex hack public disclosures (2016)
- Chainalysis, Lost Coins Estimates (2020)
- Ontario Securities Commission, Report on QuadrigaCX (2020)
- Liana Wallet Documentation