链标识用了几年后补的三课:CAIP-288 记录的使用勘误与特例 图 1
链标识用了几年后补的三课:CAIP-288 记录的使用勘误与特例 · 图 1

定稿之后,问题从使用里长出来

CAIP-2 的语法一句话能说清:命名空间加引用,中间一个冒号。这份规范定稿后被大量工具采用,几年下来反而暴露出不少写规范时没料到的边角——术语、撞号、特例都有。编号 288 就是把这些反馈收拢成的一份文档。要先分清性质:它的类型是 Informational(信息性),不新增语法、不修改语法,「replaces」字段指向 2 号只是表明它为 CAIP-2 的使用提供现行注记。写作时状态是 Draft。

链标识用了几年后补的三课:CAIP-288 记录的使用勘误与特例 图 2
链标识用了几年后补的三课:CAIP-288 记录的使用勘误与特例 · 图 2

第一课:叫「网络」比叫「链」准

文档的第一条勘误是语言层面。CAIP-2 当年把标识称作区块链的身份证,而命名空间文档的实践中越来越多对象不是「链」:有向无环图结构的数据网络、以 git 仓库为骨架的协作系统,都不是「区块首尾相接」的形态。于是规范侧建议:凡涉及这类对象,用「网络」指代标识所指之物。这条对用户不是空话——标识语法不变、工具展示的名字变了,看到「network」出现在配置项与文档里,不必疑惑它和「chain id」是不是两回事。链标识怎么解析、哪些段各管什么,见 CAIP-2链标识应该怎么解析?

第二课:一张网可能有两个身份证

第二条勘误更实在:规范假定网络在单个命名空间内唯一,但没有保证跨命名空间唯一。同一个网络完全可能同时被两个命名空间用不同标识指代。对使用者的含义是:做数据合并或配置核对时,「标识不同」不等于「网络不同」,两个账号列表里的一串标识可能指向同一张网;反过来查数据时,也值得先想想手上这个标识出自哪个命名空间口径。CAIP-10账户ID为什么必须带链? 讲过地址为什么要钉在链上,这里补的是它的镜像问题——链本身在命名空间维度上也有一层歧义。

第三课:一个不指代网络的特殊标识

第三条来自以太坊社区的一个真实使用模式,经命名空间仓库的讨论沉淀进这份文档:当网站通过 RPC 直接与用户浏览器里的钱包对话、账户是不上任何链「自证」的外部拥有账户时,通信里用到的一个静态标识并不指代 eip155 命名空间表里的任何一条链,而是把钱包软件本身当作对话方来标识。文档写明这条特例未必推广到其他命名空间,也可能最终被独立的 wallet 命名空间方案取代。读法建议:在配置和日志里看到不符合「命名空间:引用」直觉的保留值,先查它是不是这一类特殊标识,而不是急着当脏数据删掉。

边界:怎么用这份文档

把三条勘误放回日常操作里,最容易踩中的画面有这么几种。配置文件迁移时,新旧两份链清单一条都对不上,逐条排查后发现旧文件用的命名空间早换了口径——这对应第二课的跨命名空间问题,解法是拿每条标识去对应命名空间的登记表反查同一网络,而不是按字符串硬匹配。审计某钱包「支持哪些网络」时,看到清单里有一个不属于任何已知链的保留条目,先按第三课查它是不是指钱包本身的特例标识,贸然删掉可能让本地校验直接报错。文档写作与客服话术里,「network」与「chain」混用引发的咨询也归第一课管:回答时说明两者在这份体系里指同一层对象即可,不必发明新术语。这三类场景的共同点是:错的不是语法,而是对语法边界的想象。

CAIP-288 没有测试用例,没有语法增补,价值全在「用出来才知道」的纠偏记录上,所以别把它当独立标准去实现——它的正确读法是配合 CAIP-2 原文使用:先读语法,再读勘误。对普通用户,三条勘误里最可能撞上的场景有二:一是在多链清单工具里怀疑两条标识重复,用第二课的「跨命名空间可能同号不同面」思路交叉核对,比按字符串直接去重可靠;二是浏览器的链信息里多出一个不认识的保留字,按第三课查一下,不要跟着陌生指引乱改配置。规范链接里给出的几个讨论串,是追这些边角来龙去脉的第一手材料。