协议演进 / BIP/比特币改进提案 / BIP-80
BIP-80
为非染色币的投票池多签钱包定一条 BIP32 派生路径:用途、币种、系列、索引四层,让同一颗种子管多币种、多批冷储。本 BIP 目前处于已关闭状态。
一、档案卡
| 编号 | BIP-80 |
|---|---|
| 标题 | Hierarchy for Non-Colored Voting Pool Deterministic Multisig Wallets |
| 作者 | Justus Ranvier <[email protected]>、Jimmy Song <[email protected]> |
| 指定日期 | 2014-08-11 |
| 类型 | Informational(信息类) |
| 状态 | Closed(已关闭) |
| 阅读版 | https://bips.dev/80 |
| 官方原文 | https://github.com/bitcoin/bips/blob/master/bip-0080.mediawiki |
二、放在哪一族
分层确定性(HD)钱包的派生路径族,具体说是“投票池”(voting pool)多签钱包的两个变体之一。它与孪生的 BIP-81 同日指定、同作者:一篇管非染色(non-colored)的普通币,一篇管染色币(colored coin);非染色这篇还被 BIP-81 列为参考文献。
地基是三份更早的文档:BIP-32 给出 HD 派生算法,BIP-43 提出用路径第一层 purpose(用途)字段区分不同方案,BIP-44 给出多账户层级的通用结构。原文自述:本 BIP 是 BIP-43 的一个具体应用,并以 BIP-44 为基础。同族的通用多账户结构看 BIP-44,确定性 P2SH 多签结构看 BIP-45。
三、它要解决什么
投票池是一种多人共管资金的安排:存款打进多签脚本,花费要多位成员按约定共同签字。原文要解决的是这类钱包在确定性派生下的路径安排问题——同一颗种子(seed)之下,既要能管多个币种,又要能把存款分成多个系列(series)以便冷热分离,且各成员能用公开信息独立推导出同一套存款脚本,不必逐个地址私下同步。
原文给的动机只有一句:这套层级允许从单个种子处理多个币种与多个系列。下面第四节的路径设计,就是对这一句的展开。
四、规则本身
4.1 四层路径
本 BIP 在 BIP32 路径中定义四个层级(路径中的撇号 ' 表示硬化派生):
m / purpose' / coin_type' / series' / address_index
4.2 用途层(purpose)
purpose 是按 BIP-43 建议取的常量:字符串 “80” 的 ASCII 值再置最高位以表示硬化派生,即 0x80000050。它标记:这个节点之下的子树按本规范使用。本层用硬化派生。
把 BIP 编号本身编进 purpose,是 HD 路径族的惯例——不同方案占不同的第一层,钱包扫一眼路径就知道该按哪份规范解释下面的层级,与其他方案互不串扰。
4.3 币种层(coin_type)
一颗主种子理论上可供无限多种独立的加密货币共用(原文举例 Bitcoin、Litecoin、Namecoin),但共用同一空间有弊端。本层为每种币划一棵独立子树,避免跨币种复用地址,也改善隐私。本层用硬化派生。各币种的 coin_type 常量清单应从 BIP-44 取得,本 BIP 不自立名录。
4.4 系列层(series)
series 是投票池专属的一层,用来实现 FIFO(先进先出)式冷存储:存款被导向多个系列,绝大多数存款的私钥可以离线保管,只把有限的一部分拿上线处理提款。本层用硬化派生。
这一层是本 BIP 与通用 BIP-44 结构拉开距离的地方:BIP-44 在币种之下分的是账户,本 BIP 换成了服务于冷储轮动的系列。冷热的比例、轮动节奏原文没有规定,只给路径位置。
4.5 索引层(index)
公私钥对从索引 0 起顺序编号,该号即 BIP32 派生的子索引。本层用公开派生(非硬化)。
本层得到的公钥用来构造多签存款脚本;构造脚本所用的模式(schema)由成员之间以带外合约的方式共享——路径只负责把公钥有序地生出来,几签几、成员都有谁,不在本 BIP 里。
4.6 兼容钱包
原文点名的兼容钱包只有一个:btcwallet,并称其为投票池的参考比特币钱包。
五、谁必须动
普通持币人:一般无感。只有加入投票池、把钱存进池子多签脚本的人,才间接受这套路径影响,且通常由钱包软件代为处理。
钱包开发者:若要实现投票池多签钱包,须按四层路径派生:purpose 取 0x80000050、coin_type 查 BIP-44 名录、前三层硬化、索引层公开派生,并与池内其他成员就多签脚本模式达成带外约定,才能让各方推导出一致的存款脚本。
投票池运营与成员:要共同维护系列的划分与冷热安排——哪些系列离线、哪一部分在线处理提款,是这套路径服务的操作现实。
全节点与矿工:不涉及。派生路径是钱包内部的组织方式,链上只见多签脚本与普通交易。
六、现在算不算数,以及一个常见误读
状态为 Closed(已关闭),类型为 Informational(信息类)。关闭意味着它不再是现行推荐的路径方案,本页只按历史规范来读它:它记录了 2014 年投票池这类多签托管安排如何借 BIP-43 的 purpose 机制自立一层。原文没有交代关闭的原因,本页不替它补。
常见误读:
“BIP-80 定的是所有多签钱包都该用的派生路径。”
不对。它从标题到内容都限定在 voting pool(投票池)这一种特定组织形态,且是非染色币版本;染色币另有 BIP-81。一般多签钱包的路径另有 BIP-45、BIP-48 等不同方案,purpose 常量也各不相同。把某一方案的路径套到另一方案上,推导出的将是完全不同的地址。
七、延伸
- 阅读版:https://bips.dev/80
- 官方原文:https://github.com/bitcoin/bips/blob/master/bip-0080.mediawiki
- 相关:BIP-32 分层确定性钱包、BIP-43 用途字段、BIP-44 多账户层级、BIP-81 染色投票池层级
- 仓库总目录:https://github.com/bitcoin/bips
