1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // The following listing does not pretend to be exhaustive or even accurate. It SHOULD NOT be used in production.
- const { ethers } = require('hardhat');
- const { mapValues } = require('./iterate');
- const { addressCoder } = require('interoperable-addresses');
- // EVM (https://axelarscan.io/resources/chains?type=evm)
- const ethereum = {
- Ethereum: 1n,
- optimism: 10n,
- binance: 56n,
- Polygon: 137n,
- Fantom: 250n,
- fraxtal: 252n,
- filecoin: 314n,
- Moonbeam: 1284n,
- centrifuge: 2031n,
- kava: 2222n,
- mantle: 5000n,
- base: 8453n,
- immutable: 13371n,
- arbitrum: 42161n,
- celo: 42220n,
- Avalanche: 43114n,
- linea: 59144n,
- blast: 81457n,
- scroll: 534352n,
- aurora: 1313161554n,
- };
- const solana = {
- Mainnet: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d',
- };
- const format = ({ namespace, reference }) => ({
- namespace,
- reference: reference.toString(),
- caip2: `${namespace}:${reference}`,
- erc7930: addressCoder.encode({ chainType: namespace, reference }),
- toCaip10: other => `${namespace}:${reference}:${ethers.getAddress(other.target ?? other.address ?? other)}`,
- toErc7930: other =>
- addressCoder.encode({ chainType: namespace, reference, address: other.target ?? other.address ?? other }),
- });
- module.exports = {
- CHAINS: mapValues(
- Object.assign(
- mapValues(ethereum, reference => ({ namespace: 'eip155', reference })),
- mapValues(solana, reference => ({ namespace: 'solana', reference })),
- ),
- format,
- ),
- getLocalChain: () =>
- ethers.provider.getNetwork().then(({ chainId }) => format({ namespace: 'eip155', reference: chainId })),
- };
|