六个层级各管一件事
在支持多币种的钱包里输入同一套助记词,比特币、莱特币、测试币会各自恢复出互不相干的地址——这不是巧合,是 BIP44 设计出来的。它规定的标准路径长这样:m / 44' / coin_type' / account' / change / address_index。逐段读:m 是从种子算出的主节点;第一级固定写 44',即 purpose 层,声明这个子树按 BIP44 规则使用;第二级 coin_type 给每条币种留出独立子树;第三级 account 用来划分彼此不混币的账户,从 0 开始顺序编号;第四级 change 区分收款地址和找零地址,约定 0 对外、1 对内;最后 address_index 是地址序号,逐个递增。
撇号不是装饰
路径里带撇号的层级(如 44'、coin_type')表示该层使用 BIP32 的硬派生。硬派生的价值在边界清晰:知道父公钥的人只能推导这个分支之后的地址,反推不了兄弟分支,篡改派生参数也换不出别人的钱。BIP44 明确要求 purpose、coin_type、account 三层全部硬化,change 和 index 两层用普通派生,让钱包软件能凭公钥扩展收款地址——这正是观察钱包只做监控、不能花钱的结构基础。
coin_type 的编号从哪来
BIP44 的原文明确:这一层的作用「为每种加密货币创建独立子树,避免跨币种复用地址并改善隐私」,编号是每币一个常数,主网比特币占 0(硬化后对应 0x80000000),测试网所有币种共用编号 1。项目方可以为自己的币申请未用的编号。规范正文附带的注册表早已停止扩充,实际的编号注册中心转移到了 SLIP-0044 这份登记文件,数百个币种在其中按编号、符号、名称三列登记,比特币主网始终是编号 0 的第一行。多币钱包的「一套种子、各归各账」,本质上就是大家都认这张表。
顺带解释比特币系内部的编号家族
有人会问:比特币常见路径开头是 m/44'、m/49'、m/84'、m/86',不是和 44' 矛盾吗?不矛盾——purpose 层本来就允许多个规范并存:44 对应传统地址、49 对应嵌套隔离见证、84 对应原生隔离见证、86 对应 Taproot,coin_type 仍用 0。看懂这层分工,读任何钱包给出的路径都不会迷路。
间隔 20:恢复钱包时的隐形边界
BIP44 还规定了一个平时感觉不到、恢复时救命的参数:地址间隔(gap limit)当前值为 20。钱包扫描地址时连续遇到 20 个未使用地址就认为后面没有更多使用痕迹,停止向更远的序号找。它解释了两类真实事故:一是你手动跳过大量序号、只在靠后的地址收过款,恢复时钱「凭空消失」——其实是扫描提前停了;二是钱包在你生成超出间隔的新地址时应当弹出警告,这个警告值得认真对待。规范还说明只扫外部链(change=0)即可覆盖内部找零链的资金,因为内部地址的入账都来自对应外部地址的花费。
为什么 account 层如今存在感变低
BIP44 把 account 设计成「用户自定义的独立账本」,理想用途是像银行分账户那样把生活费、储蓄、收款分开,互不混币。实践中多数钱包只用 account 0,原因有二:一是每加一层就多一层恢复协调成本,跨钱包迁移时对方未必知道你的账户结构;二是隐私与费率的演化让多账户拆分有了更好的工具(描述符、多签、静默支付)。但 account 层的结构价值仍在:硬件钱包的 xpub 导出界面里那个「账户索引」正是这一层,做观察钱包、给冷钱包配监控方案时,你填的 account 编号直接决定监控的是哪一族地址。填错账户号时正确的排障方式是回到路径本身逐段核对,而不是怀疑币丢了。
一张速查表
拿到 m/84'/0'/0'/1/7:84' 表示按原生隔离见证规范使用;0' 是比特币主网的币种子树;0' 是第一本账户;1 说明这枚地址在钱包内部属于找零链;7 是这一族的第八个序号。反过来,看到别人贴出 m/49'/1'/0'/0/0,能立刻读出两件事:嵌套隔离见证格式、以及这是测试网(coin_type 为 1)的钱包——测试网与主网在派生层就已经分家,这是「测试币不是钱」在密钥体系里的投影。
风险提示:本文是密钥派生标准科普,不构成投资建议;实际恢复任何钱包时请先在小额环境演练,路径参数以你所用钱包的官方文档为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。