This document is available under the terms of the Apache License 2.0.


This specification defines the Crosschain Identifier, an identifier to uniquely specify a blockchain, and the Crosschain Registration contract, a contract for registering a Crosschain Identifier and associated meta-data.


A transfer of assets, data, message, events, and commands from one blockchain to another.
The capability to perform the transfer of assets, data, message, events, and commands from one blockchain to another.
Crosschain service
A crosschain service is a blockchain or bridge function that provides interoperability for multiple external block chains.
An architectural component that connects multiple isolated blockchains, sometimes also called connector.

Crosschain Identifier


The Crosschain Identifier must:

Having a chain identifier facilitates the following functionality within a registration contract:

Crosschain Identifier Format

The Crosschain Identifier is a 32 byte value that has the format described in the table below.

Name Size

Truncated Block Hash


This is the block hash of the genesis block or the block hash of of the block immediate prior to the fork for a fork of a blockchain. The 16 bytes is the 16 least significant bytes, assuming network byte order. See table XYZA below for a list of existing blockchains.

Native Chain ID 4 This is the Chain Id value that should be used with the blockchain when signing transactions. For blockchains that do not have a concept of Chain Id, this value is zero.
Chain Type 2 See table XYZ below the current list of chain types.
Governance Identifier 2 For new blockchains, a governance_identifier can be specified to identify an original owner of a blockchain, to help settle forked / main chain disputes. For all existing blockchains and for blockchains that do not have the concept of an owner, this field is zero.
Reserved 7 Reserved for future use.
Checksum 1 Used to verify the integrity of the identifier. This integrity check is targetted at detecting Crosschain Identifiers mis-typed by human users. The value is calculated as the truncated SHA256 message digest of the rest of the identifier, using the least significant byte, assuming network byte order. Note that this checksum byte only detects integrity with a probability of one in 256. This probability is adequate for the intended usage of detecting typographical errors by people manually entering the Crosschain Identifier.

Crosschain Registration Contract Data

The Crosschain Registration Contract holds the data described in the table below.

Name Description Examples
Crosschain Identifier A 32 byte hex string See the Crosschain Identifier section for details.
Long Name

A long name describing the blockchain. Maximum length is 80 characters.

This long name could be Ethereum MainNet, Bitcoin Cash, or Wanchain Mainnet

Short Name

An abbreviated name for the blockchain. Maximum length is four characters.

For public blockchains, this will match the standard blockchain exchange name. For example, ETC, BTC, or WAN.


Nickname of the chain. Maximum length is 10 characters.

Names such as Rinkeby or Ropsten.

Chain Type

Public permissionless, private permissioned, or other.

Table XYZ4 provides the list of possible values.

Chain Category

A parameter to identify whether this is mainnet, or testnet

Table XYZ5 lists all possible values for this field.

Execution Engine Type

They type of execution environment available on the blockchain.

Table XYZ6 provides the list of possible values.

Chain IP addresses and Service Provider Id A set of IP addresses of static nodes that can be contacted to submit a crosschain transaction, and the associated name information for the company providing the service.
Name Service Type The contract naming service available on the blockchain. The type of service, for instance ENS.
Name Service Address The address of the name service contract on the blockchain.

Blockchain Crosschain Identifier Contract

To register crosschian blockchain id, there should be grace period for comments before it become official and verified. The registration service should support the following functions