Solana 系链的链标识是创世哈希截前 32 位:CAIP-30 与 getGenesisHash 核验法 图 1
Solana 系链的链标识是创世哈希截前 32 位:CAIP-30 与 getGenesisHash 核验法 · 图 1

钱包导入新网络时表单里那栏”链 ID”,在以太坊系是数字,到 Solana 系却变成一串 32 位的字母数字混合码。它的标准出处是 CAIP-30——Blockchain Reference for the Solana Namespace,2021 年 8 月 3 日立案,作者 Antoine Herzog 与 Josh Hundley,现状态 Superseded(已被取代),治理文件搬到了 ChainAgnostic 的 namespaces 仓库(这套搬家规则本身见 《跨链规范的编辑部手册:CAIP-104 命名空间参考的目录结构与状态机》)。它是 CAIP-2 两段式标识框架在 Solana 生态的落地文档,与比特币系的 比特币系链的链身份不是一个数字:CAIP-4 用创世块哈希前 32 位定链、EOS 系的 EOS 系链的链标识是创世哈希截一半:CAIP-7 的 64 位 Chain ID 取前 32 位 属同一家族。

链标识怎么算:创世哈希截前 32 位

CAIP-30 给 solana 命名空间定的参考值是 genesisHash,计算规则写成一行伪代码:truncate(genesisHash, 32)——取创世块哈希的前 32 个字符。规范附了两条测试向量:Solana 主网是 solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ,Devnet 是 solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K。注意这套标识保留了 Base58 的原生字母表:Solana 的区块哈希本来就是 Base58 编码,截断也按字符数截,不像以太坊系那样全是小写十六进制。同一族的 EOS 提案也是”哈希截一半”,只是那边截的是十六进制的前 32 位(见 EOS 系链的链标识是创世哈希截一半:CAIP-7 的 64 位 Chain ID 取前 32 位)。

Solana 系链的链标识是创世哈希截前 32 位:CAIP-30 与 getGenesisHash 核验法 图 2
Solana 系链的链标识是创世哈希截前 32 位:CAIP-30 与 getGenesisHash 核验法 · 图 2

官方给的核验方法:getGenesisHash

这份文档比多数同族多走了一步:写了明确的解析方法。向 Solana 节点发一个 JSON-RPC 请求,方法是 getGenesisHash,返回的就是 0 号块的哈希;规范示例里主网返回 4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZAMdL4VZHirAn,截前 32 个字符正好得到测试向量里的 4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ。对使用者的意义很直接:怀疑钱包里配的 Solana 网络对不对,不必相信网络名称的下拉选项,向节点要一次 getGenesisHash、比对前 32 位即可(该接口的字段语义另见 getGenesisHash怎么识别Solana网络?)。

为什么用创世哈希而不是数字

Solana 协议没有以太坊 EIP-155 那种全网统一的整数链号,一个集群(Cluster)的身份材料就是它的创世配置:创世哈希不同,就是不同的一条链,主网、Devnet、Testnet 与私有集群彼此平级。CAIP-2 的框架要求每个命名空间给出”能唯一锚定一条链”的参考值,创世哈希是零伪造成本的选项——任何节点都能本地重算,测试网想冒充主网就得连创世块一起伪造。波卡系走同一路子(见 波卡系链的链标识也是创世哈希:CAIP-13 与它的零号块验证法),Cosmos 系则优先直抄创世文件里的字符串标识(见 Cosmos 系链的链标识抄的是创世文件里的字符串:CAIP-5 的直用与哈希两条路):没有全局链号时,各生态只能各自回家找材料。

32 个字符的账

Base58 每个字符携带约 5.86 位信息,32 个字符折合接近 187 位——比十六进制截 32 位的那一族还宽裕得多。随机相撞完全不用担心;现实风险仍是有人主动构造:私人集群把创世参数里的哈希”刷”到与主网前缀相同,再让钱包连上一个假的 RPC 端点。所以截断长度从来不是防线本体,“从哪台节点读到的这个哈希”才是。添加网络时把 RPC 地址来源与链 ID 一起核对,是这类标识体系下唯一可靠的动作。

Superseded 之后读什么

CAIP-30 的规范内容仍然成立,但它自己已经不再演进:solana 命名空间的后续文档在 namespaces 仓库按”一个命名空间一个目录、每条 CAIP 一份文件”的格式重排。实际的阅读顺序是:想知道标识怎么算,读 CAIP-30 的历史文本就够;想知道 Solana 生态对 CAIP 家族(地址格式、资产标识等)的整体实现,去 namespaces 仓库的 solana 目录找当期文档。一个标识用创世哈希锚定这件事不会变,变的是围绕它的其他约定写在哪份文件里。

三条公共集群先分清楚

按测试向量的思路把常见公共集群排一遍队:主网、Devnet、Testnet 三条链的创世块各不相同,因此三个链 ID 前缀段互不相同,任何支持 Solana 的钱包里”选网络”本质上就是在这串哈希之间选。风险场景也随集群性质分级:主网标识配错 RPC 会动真金白银,Devnet 上更多是空投与机器人互刷假数据,Testnet 的空投龙头则限领。把链 ID、RPC 端点、空投龙头三者当一组配置来管理——换网络时三样一起换、一起核——比逐项检查更符合这套标识体系的实际故障分布:绝大多数”连错网”事故都是只改了下拉菜单里的名字、没动 RPC 地址。

风险提示:本文是链标识机制科普,不构成投资建议;各网络的创世哈希与接口字段以官方节点当期返回为准,配置新网络请以小额实际收发完成验证。