助记词不只用来管钱:ERC-1581 给非资金密钥划的分叉 图 1
助记词不只用来管钱:ERC-1581 给非资金密钥划的分叉 · 图 1

助记词不只用来管钱:ERC-1581 给非资金密钥划的分叉

一副助记词背后是一整棵密钥树。BIP32 规定了怎么从一颗种子长出父子密钥,BIP44 又把树管成了钱包的样子:先分币种、再分账户、再分收款找零。但链上生活不只有转账——有些应用需要一把密钥来证明某个加密通信身份,有些需要密钥去参与不直接持币的协议。把管钱的密钥顺手拿去干这些活,安全上偷懒但代价不小;每类用途各记一副全新助记词,备份又成了灾难。ERC-1581 走中间路线:在同一棵树上,给非资金密钥开一条专属分叉。标准创建于 2018 年 11 月 13 日,仓库记录状态为 Stagnant,作者是开发者 Michele Balistreri。

路径长什么样

规范把路径写成 m / 43' / 60' / 1581' / key_type' / key_index,撇号表示硬化派生。前三层是常量:43 表示遵循 BIP43 的通用结构,60 是以太坊在 SLIP 44 里的币种编号,1581 是本标准的编号——这三层之下、这棵树之上的所有子树,都归这份标准管辖。第四层 key_type 描述密钥用途,规范要求类型名保持通用:写即时通讯这种类别,不写某个具体产品名,理由是同一身份可能横跨多个服务复用。最后一层 key_index 定位具体哪把密钥。

助记词不只用来管钱:ERC-1581 给非资金密钥划的分叉 图 2
助记词不只用来管钱:ERC-1581 给非资金密钥划的分叉 · 图 2

装不下的标识怎么拆进路径

键索引最长可以是一个数到 2 的 31 次方减一。需要更长的标识——比如用一个哈希或 GUID 派生身份密钥——规范给了拆分规则:把标识按每层 31 位切开,最高位在前、左对齐、不足补零;除最后一层外全部用硬化派生,最后一层用公开派生。原文举例:一个 62 位的标识 0x2BCDEFFEDCBAABCD,配上键类型 4,完整路径就是 m/43'/60'/1581'/4'/1469833213'/1555737549。用随机标识时建议直接生成常规 GUID,把每个 32 位字的最高位固定为 1、仅最后一层为 0,保证切分后符合规则。

分叉换来了什么

和现有钱包的关系是设计的重点之一:这条分叉与 BIP44 兼容钱包共用同一棵树的种子,各走各的枝干,谁也不挡谁——同一个硬件钱包既能管币,又能给加密通信协议出身份密钥,而资金路径与身份路径在密码学上分家。规范对键类型的命名纪律也值得引用一次:类型要写到即时通讯这个粒度,不要写到某个具体产品名,因为同一身份可能今天服务这家、明天服务那家,按产品命名等于把身份锁死在供应商身上。键索引的分层拆分规则还有一个容易踩的坑值得复述:大标识必须按最高位在前切开、每层最多承载 31 位,且除末层外一律硬化派生——顺序写反或者硬化层级错了,两棵长得一样的树会导出完全不同的密钥,而派生结果是静默的,没有任何报错提示你切错了。

对普通用户,这份标准最有用的产出是一套提问方式:当你使用的某个身份功能声称由你的助记词派生密钥,可以要求对方说明它走的路径是什么——符合规范的答案应当以 m 开头并包含 1581 分支;含糊其辞、声称要你把助记词整句输入某个网页的,直接按钓鱼处理。同时记住标准的另一面承诺:既然路径是公开的、派生是确定的,那么只要种子在手,任何一家服务的身份密钥都可以本地重建,不需要信任它的导出功能,这份可以重建的自信是它留给用户的真正遗产。

Motivation 一节把权衡讲得直白:复用钱包密钥不安全,完全独立的密钥又让备份和迁移成倍变复杂。独立分叉同时拿到两头——身份密钥与资金密钥在密码学上互不相干,泄露一方不能推出另一方;而备份仍然只需那一个种子。反过来说也要看清代价:一副种子派生得越多,这颗种子的失窃后果越彻底,因为恢复全部用途只需要它。这份标准停在 Stagnant,没有成为钱包的普遍功能,读它的价值在于建立两个常识:助记词能派生的远不止收款地址,以及任何声称查看你身份密钥的工具都有权看到钱——同一棵树上的分叉隔离不了种子级泄露。本文为机制说明,不构成任何投资建议。