区块链ID规范

CAIP-2是一种用于人类可读、开发者友好及交易友好的方式来标识区块链。它定义了区块链ID的语法和语义,以便能够在区块链生态系统中唯一标识不同的区块链,如Ethereum和Bitcoin等,并讨论了其在实现过程中的动机和目标。

简要总结

CAIP-2 定义了一种人类可读、开发者友好和交易友好的方式来识别区块链(例如:以太坊主网、Görli、比特币、Cosmos Hub)。

摘要

你经常需要引用一个区块链,例如,当你想说明某个资产或智能合约的位置时。在以太坊中,通常使用 EIP155 链 ID。但是使用以太坊链 ID 你无法引用例如比特币或 Cosmos 链。

动机

创建这个 CAIP(及 CAIP 过程本身)的最终触发因素是关于 [EIP2256] 在 Ethereum-Magicians 中的讨论。 独立地,创建了 Universal Chain Registry,其核心需要恰当地指定链标识符。关于网络 ID 格式的 讨论 把这个小组与 ChainAgnostic 联系在了一起。

规范

区块链 ID(简称“链 ID”)是一个字符串,旨在以开发者友好的方式唯一识别区块链。

语法

chain_id 是一个对大小写敏感的字符串,形式为

chain_id:    namespace + ":" + reference
namespace:   [-a-z0-9]{3,8}
reference:   [-_a-zA-Z0-9]{1,32}

语义

每个 namespace 涵盖一类类似的区块链。通常它描述一个生态系统或标准,例如 cosmoseip155。 一个命名空间应该指代一种解决方法来解决链的引用。reference 是在给定命名空间内识别区块链的方式。 语义以及更细粒度的语法将委托给每个命名空间规范,并将在分别的 CAIP 中定义,描述解析方法。

理由

一般链 ID 格式的目标是:

  • 在整个区块链生态系统中的唯一性
  • 在某种程度上人类可读,并有助于基本调试
  • 限制到可以在链上存储的方式
  • 字符集基本到能够在硬件钱包中作为交易内容的一部分显示

以下的次要目标可以轻松实现:

  • 可以在 URL 路径中不被转义使用
  • 可以在区分大小写的 UNIX 文件系统(Linux/git)中作为文件名使用。

这些次要目标在此过程中已经放弃:

  • 可以在不区分大小写的 UNIX 文件系统(macOS)中作为文件名使用。
  • 可以在 Windows 文件系统中作为文件名使用。

测试用例

这是一个手动编写的示例列表

## 以太坊主网
eip155:1

## 比特币主网 (见 https://github.com/bitcoin/bips/blob/master/bip-0122.mediawiki#definition-of-chain-id)
bip122:000000000019d6689c085ae165831e93

## 莱特币
bip122:12a765e31ffd4059bada1e25190f6e98

## 羽毛币 (莱特币分叉)
bip122:fdbe99b90c90bae7505796461471d89a

## Cosmos Hub (Tendermint + Cosmos SDK)
cosmos:cosmoshub-2
cosmos:cosmoshub-3

## 币安链 (Tendermint + Cosmos SDK;见 https://dataseed5.defibit.io/genesis)
cosmos:Binance-Chain-Tigris

## IOV 主网 (Tendermint + weave)
cosmos:iov-mainnet

## StarkNet 测试网
starknet:SN_GOERLI

## Lisk 主网 (LIP-0009;见 https://learnblockchain.cn/article/14119)
lip9:9ee11e9df416b18b

## 虚拟最大长度 (8+1+32 = 41 字符/字节)
chainstd:8c3444cf8970a9e41a706fab93e7a6c4

链接

版权

版权及相关权利通过 CC0 放弃。

  • 原文链接: github.com/ChainAgnostic...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
ChainAgnostic
ChainAgnostic
江湖只有他的大名,没有他的介绍。