chains is a lightweight (~600 kb) package that supports constant time lookup of chain metadata given a chainId. chains works offline with a chain map of around 1000 chains, and if a chain is not found, ethereum-lists/chains will be queried.
Most existing implementations of chain metadata lookup require the dev to copy paste a large json array of chain into their application which the dev then does linear time lookups or parses into a map at runtime. This has poor performance and maintainability. When chains are added, the dev has to replace the json array. Updating an npm package is much easier.
The other solution is to query external api's. These api's may fail occasionally though, and this does not support offline use either which is an important requirement for some applications.
chains solves these issues.
yarn add @hyperplay/chains
import { getChainMetadata } from '@hyperplay/chains'
const chainId = '1'
const metadata = await getChainMetadata(chainId)
console.log(JSON.stringify(metadata, null, 4))
Please submit a PR to https://github.com/ethereum-lists/chains with the appropriate data added to the _data
folder. After this is merged, @hyperplay/chains will automatically start working with your chain.
Run yarn generateChainMap
and yarn buildDist
in the root directory and then submit a PR with the updated map.
Bump the package.json
version before merging and the GHA will publish.