CAIP-2 defines a way to identify a blockchain (e.g. Ethereum Mainnet, Görli, Bitcoin, Cosmos Hub) in a human-readable, developer-friendly and transaction-friendly way.
Often you need to reference a blockchain, for example when you want to state where some asset or smart contract is located. In Ethereum the EIP155 chain ID is used most of the time. But with an Ethereum chain ID you cannot reference e.g. a Bitcoin or Cosmos chain.
The final trigger to create this CAIP (and the CAIP process itself) was a discussion around [EIP2256] at Ethereum-Magicians. Independently, the Universal Chain Registry was created that needs properly specified chain identifiers at its core. A discussion about the network ID format brought this group together with ChainAgnostic.
The blockchain ID (short "chain ID") is a string designed to uniquely identify blockchains in a developer-friendly fashion.
The chain_id is a case-sensitive string in the form
Each namespace covers a class of similar blockchains. Usually it describes an ecosystem or standard, such as e.g. cosmos or eip155.
One namespace should refer to one resolution method to resolve the chain's reference. A reference is a way to identify a blockchain within a given namespace.
The semantics as well as the more granular syntax which are delegated to each namespace specification shall be defined in separate CAIPs describing resolution methods.
The goals of the general chain ID format is:
The following secondary goals can easily be achieved:
These secondary goals have been given up along the way:
This is a list of manually composed examples
Copyright and related rights waived via CC0.