Chain Selectors
CCIP uses its own set of chain selectors represented by uint64 to identify blockchains. This repository contains a
mapping between the custom chain identifiers (chainSelectorId
) and the chain identifiers used by the blockchains
themselves (chainId
).
Please refer to the official documentation to learn more about
supported networks and their selectors.
Installation
go get github.com/smartcontractkit/chain-selectors
Usage
import (
chainselectors "github.com/smartcontractkit/chain-selectors"
)
func main() {
// Getting selector based on ChainId
selector, err := chainselectors.SelectorFromChainId(420)
// Getting ChainId based on ChainSelector
chainId, err := chainselectors.ChainIdFromSelector(2664363617261496610)
// Accessing mapping directly
lookupChainId := uint64(1337)
if chainSelector, exists := chainselectors.EvmChainIdToChainSelector()[lookupChainId]; exists {
fmt.Println("Found chain selector for chain", lookupChainId, ":", chainSelector)
}
}
Contributing
Any new chains and selectors should be always added to selectors.yml and client libraries should load
details from this file. This ensures that all client libraries are in sync and use the same mapping.
If you need a support for a new language, please open a PR with the following changes:
- Library codebase is in a separate directory
- Library uses selectors.yml as a source of truth
- Proper Github workflow is present to make sure code compiles and tests pass