给链上钱包排查故障时,“链不匹配”是一类看不见报错的根因:钱包里配置的链标识与节点真实生效的标识差一个字符,签名和广播就可能整体失败。跨链标识体系 CAIP 家族里,EOSIO 生态的对应文档是 CAIP-7——Blockchain Reference for the EOSIO Namespace,2020 年 11 月 30 日起草,作者 Sebastian Montero,状态 Draft(草稿),依赖 CAIP-2 的两段式标识框架(同族写法可对照比特币系的 比特币系链的链身份不是一个数字:CAIP-4 用创世块哈希前 32 位定链 与 Cosmos 系的 Cosmos 系链的链标识抄的是创世文件里的字符串:CAIP-5 的直用与哈希两条路)。
身份材料:创世状态的哈希
CAIP-7 规定,eosio 命名空间下的链用 Chain ID 作标识,而这个 Chain ID 在 EOSIO 协议里本有定义:对链的创世状态做 SHA256,得到一个 64 位小写十六进制数。CAIP-2 的 reference 段放不下 64 个字符,于是规范取前 32 位(前 16 字节)作为链标识的参考值。测试向量给了四条现成对照:EOS 主网是 eosio:aca376f206b8fc25a6ed44dbdc66547c,Jungle 测试网是 eosio:e70aaab8997e1dfce58fbfac80cbbb8f,Telos 主网是 eosio:4667b205c6838ef70ff7988f6e8257e8,Telos 测试网是 eosio:1eaa0824707c8c16bd25145493bf062a。这些公开链的历史与命名以各自官方文档为准,向量本身核对的是截法。

与同族最不一样的一点:定义外包
Cosmos 那条(CAIP-5)自己写公式:链号能直抄就直抄,抄不动才哈希;比特币那条(CAIP-4)自己写解析方法:取创世块哈希截断。CAIP-7 却把 reference 的定义”委托”出去——规范正文直接链向 EOSIO 开发手册的交易协议章节、chain API 插件参考,以及当年实现 Chain ID 生成的代码合并请求,自己只补一句截断规则。这个写法在 CAIP 家族里少见,效果是把定义的维护权留给了生态自身:EOSIO 手册改了,规范的解释跟着变。读这份文档的正确姿势是把它当”接线图”,源头材料要回官方文档取。
怎么验证眼前这条链的标识
按规范给的通路,链 ID 可以通过节点暴露的 get_info 接口读取——返回 JSON 里的 chainId 字段就是 64 位全称,截前 32 位即得 CAIP-7 形态。对使用者,这意味着一条可操作的自查流程:添加 EOSIO 系链的网络配置时,把钱包表单里的 Chain ID 与节点接口返回值的前 32 位逐字符比对;对不上就是配置错,不是网络抖动。此类”字段内容域”式的错误在 Cosmos 系表现为往字符串栏里填数字(见 Cosmos 系链的链标识抄的是创世文件里的字符串:CAIP-5 的直用与哈希两条路),在 EOSIO 系则多表现为整串 64 位与截断 32 位混填。
Draft 状态意味着什么
CAIP-7 从未推进到 Final,也没有像 Filecoin、波卡、Cosmos 那几份同族文档一样转入 Superseded 搬家治理;它以 Draft 状态停留在仓库里。落到阅读纪律上:其一,标识规则本身写得完整、可执行,测试向量可复算,作为参考可用;其二,它没有获得与 Review/Final 文档同级的稳定承诺,生态迁移(比如链更名、创世状态重算)时不太可能有人回来修订它。这类”规范先冻结、现实继续走”的文档,最好的用法是拿来做历史账本的标识解码器,而不是新系统的对接依据。
命名空间这个词先讲清楚
CAIP-2 的标识分两段,冒号前是命名空间,冒号后是参考值。eosio 这个命名空间指的是”按 EOSIO 开源协议跑的链”这一整族,主网、Jungle、Telos、WAX 都往里装,靠参考值区分彼此——这与波卡系把 Kusama 也放进 polkadot: 前缀是同一个思路(见 波卡系链的链标识也是创世哈希:CAIP-13 与它的零号块验证法 的讨论)。所以看到 eosio: 开头不等于”这是 EOS 主网”,必须连后半段一起读;钱包界面里两条链都显示 eosio 前缀时,差异全在那 32 个字符里。
截断的账:为什么 32 个十六进制字符够用
一个 SHA256 截去一半仍留 128 位参与标识唯一性。按生日悖论的量级直觉,两亿条链也只凑到 2 的 28 次方量级,与 2 的 64 次方量级的碰撞空间相差悬殊——对”同一时刻存在的链”这个集合,截断长度是宽裕的。真正的风险从来不是随机相撞,而是有人主动构造相同的 128 位前缀:拿测试网冒充主网的人,只需让 get_info 返回的 Chain ID 前 32 位对上。所以钱包里”链名后面那串号”要连同节点来源一起信任——从自己控制的节点或已知可信端点读取,永远好过在陌生网页上抄一串号。
风险提示:本文是链标识机制科普,不构成投资建议;EOSIO 系链名与接口字段以官方文档现文为准,配置新网络时请以一条已知入账的小额交易完成核验。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。