eip155-chains
Version:
Aggregate all eip155 chains from multiple sources in one place.
86 lines (67 loc) • 3.2 kB
Markdown
[![npm package][npm-img]][npm-url]
[![Build Status][build-img]][build-url]
[![Downloads][downloads-img]][downloads-url]
[![Issues][issues-img]][issues-url]
[![Code Coverage][codecov-img]][codecov-url]
[![Commitizen Friendly][commitizen-img]][commitizen-url]
[![Semantic Release][semantic-release-img]][semantic-release-url]
> Aggregate all eip155 chains from multiple sources in one place.
```Typescript
import { ethers } from 'ethers';
import { getChainById, getEthersProvider } from 'eip155-chains';
const options = {
apiKey: {
INFURA_API_KEY: 'Your INFURA_API_KEY',
ALCHEMY_API_KEY: 'Your ALCHEMY_API_KEY'
},
healthyCheckEnabled: true,
filters: {
features: ['privacy']
}
}
const chainInfo = await getChainById(chainId, options)
console.log(`rpcs: `, chainInfo.rpc)
console.log(`classifiedRpc.https: ${chainInfo.classifiedRpc.https}`)
// You can use https only
const providers = chainInfo.classifiedRpc.https.map(rpc => new ethers.JsonRpcProvider(rpc.url))
// or setup provider according to protocol
const providers = chainInfo.rpc.map(url => {
if (jsonRpcProvider && url.startsWith("http://") || url.startsWith("https://")) {
return new jsonRpcProvider(url)
} else /** if (wsRpcProvider && url.startsWith("ws://") || url.startsWith("wss://")) */ {
return new wsRpcProvider(url)
}
})
const provider = new ethers.FallbackProvider(providers)
// or using getEthersProvider
const [provider, stop] = await getEthersProvider(chainId, options)
const blockNumber = await provider.getBlockNumber()
console.log(blockNumber)
// Don't forget release provider
await stop()
```
EIP155ChainInfo sources:
- npm package `eth-chains`
- [chainid.network](https://chainid.network/chains.json) and cached it in repo
Rpc nodes sources:
- viem chains definition
- [chainid.network](https://chainid.network/chains.json)
- [1rpc](https://www.1rpc.io/)
- [flashbots](https://docs.flashbots.net/flashbots-protect/quick-start)
[]:https://github.com/ryansonshine/typescript-npm-package-template/actions/workflows/release.yml/badge.svg
[]:https://github.com/ryansonshine/typescript-npm-package-template/actions/workflows/release.yml
[]:https://img.shields.io/npm/dt/typescript-npm-package-template
[]:https://www.npmtrends.com/typescript-npm-package-template
[]:https://img.shields.io/npm/v/typescript-npm-package-template
[]:https://www.npmjs.com/package/typescript-npm-package-template
[]:https://img.shields.io/github/issues/ryansonshine/typescript-npm-package-template
[]:https://github.com/ryansonshine/typescript-npm-package-template/issues
[]:https://codecov.io/gh/ryansonshine/typescript-npm-package-template/branch/main/graph/badge.svg
[]:https://codecov.io/gh/ryansonshine/typescript-npm-package-template
[]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
[]:https://github.com/semantic-release/semantic-release
[]:https://img.shields.io/badge/commitizen-friendly-brightgreen.svg
[]:http://commitizen.github.io/cz-cli/