多链世界里,“一枚币”需要一段机器能解析的名字。‘+L(10566)+’ 讲过那套通用结构:先说在哪条链,再说资产命名空间,最后给引用。这一篇讲其中最朴素的一类——链自己的原生币怎么写。负责这件事的是 CAIP-20,它把原生币的资产命名空间定为 slip44,引用部分是一个十进制整数。
一串标识怎么拆开读
按规范给出的示例,几个常见写法是:以太坊的 eip155:1/slip44:60、比特币主网的 bip122:000000000019d6689c085ae165831e93/slip44:0、Cosmos Hub 一条链的 cosmos:cosmoshub-3/slip44:118。读法从左到右分三段:斜杠前是链标识(按 CAIP-2 的写法),斜杠后先是命名空间 slip44,冒号后那个数字就是资产引用。规范说明得很直接:这个引用“委托给 SLIP44 定义”,也就是那份为 BIP-44 注册币种编号的官方清单,数字对应清单里的 index 字段。
这个数字和派生路径里的数字是不是一回事
很多读者会联想到 HD 钱包派生路径里同样存在的币种编号——那个话题在 ‘+L(2026090500022)+’ 里讲过:路径中有一层按币种编号递增,用来让同一句助记词在不同币种下派生不同密钥。两者共享的是同一族编号来源,用途却完全不同:派生路径里的数字决定密钥往哪条线长,资产标识里的数字只是在给“这条链的原生币”贴标签。看到两个 60 不要直接推断“同一枚币”,标识里的前半段链名才是决定性的——离开链上下文谈币种编号,正是跨链混淆最常见的来源。
命名空间为什么选注册表而不是合约地址
原生币和 ERC-20 那类合约资产的根本差别在于:前者没有一个可以填进标识符的地址。总得有一个地方回答“0 是比特币、2 是莱特币、60 是以太币”,而这件事的权威答案就是那份注册表。规范在理由部分也写了取舍:作者们认为这个 index 是最广泛使用的原生币标识符,力求对原生币做到唯一。顺带一提,规范还注明了引用字段的长度上限是 64 个字符,超长的编号无法被表示——这在日常币种上碰不到,属于协议边界。
它的状态与部署现实
CAIP-20 的当前状态是 Draft(草案),创建于二〇二〇年,依赖 CAIP-19。这意味着“写法被规范定义”和“某个钱包或某条链已经按它实现”是两件事。工具里看到这样一串标识,说明那个工具在按这套标准交流;不能反过来推断所有你用的软件都认它,也不能推断链上有任何东西依赖它。需要程序化判断时,以你实际集成的那份库或那份接口文档为准。
读这串标识时的三项核验
第一,先解析链段。链标识不认识的字符串,后面的编号就没有讨论基础;比特币系链标识的具体来历见 ‘+L(202609053140)+‘。第二,看命名空间再解释引用:同为数字 60,在 slip44 命名空间里指某条链的原生币,换一个命名空间规则就完全不同,合约资产用的是按合约地址解释的另一套。第三,字符串能被解析不等于资产真实存在——这既是 CAIP-19 层级的通用告诫,也适用于这一篇的原生币场景:任何一份展示“你持有某个资产”的界面,背后都还有余额来源、价格来源这些独立环节要各自核验。
一条容易踩的拼写陷阱
这类标识对大小写和前导零的处理没有想象宽容。链段里比特币创世哈希那 32 个字符规定为小写十六进制,抄成大写就有解析风险;数字段是十进制无符号整数,规范按整数值解释,人为加前导零不是错误,但会让“同一资产”在不同工具里长出两个字符串,键值比对时直接漏配。稳妥习惯是把整串标识当不透明字符串保存与传递——存原文、比原文,需要解释时再逐段解析,绝不让任何中间环节顺手“规范化”一下。跨链清单核对与转账前检查的整体纪律,可参 ‘+L(2026090500069)+‘。
什么时候会真的碰到它
最常见的三种场合:多链工具之间传递资产类型、钱包间导出导入配置、以及跨链清单仓库里核对一条链的登记条目。它是那种“平时看不见、集成时处处用到”的底层写法。把它的结构读熟,成本很低;读错它的成本,则是把两条链上的同类资产当成同一枚币记账。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。