177 lines
6.5 KiB
JavaScript
177 lines
6.5 KiB
JavaScript
/**
|
|
* Multi-chain network params for MetaMask and Web3 providers.
|
|
* 13 chains: 138, 1, 651940, 25, 56, 100, 137, 10, 42161, 8453, 43114, 42220, 1111.
|
|
* Use with wallet_addEthereumChain and wallet_switchEthereumChain.
|
|
*
|
|
* @typedef {Object} ChainParams
|
|
* @property {string} chainId
|
|
* @property {number} chainIdDecimal
|
|
* @property {string} chainName
|
|
* @property {{ name: string, symbol: string, decimals: number }} nativeCurrency
|
|
* @property {string[]} rpcUrls
|
|
* @property {string[]} blockExplorerUrls
|
|
* @property {string[]} [iconUrls]
|
|
*/
|
|
|
|
/** @type {ChainParams[]} */
|
|
export const CHAINS = [
|
|
{
|
|
chainId: '0x8a',
|
|
chainIdDecimal: 138,
|
|
chainName: 'DeFi Oracle Meta Mainnet',
|
|
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
rpcUrls: [
|
|
'https://rpc-http-pub.d-bis.org',
|
|
'https://rpc.d-bis.org',
|
|
'https://rpc2.d-bis.org',
|
|
'https://rpc.defi-oracle.io',
|
|
],
|
|
blockExplorerUrls: ['https://explorer.d-bis.org'],
|
|
iconUrls: [
|
|
'https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png',
|
|
],
|
|
},
|
|
{
|
|
chainId: '0x1',
|
|
chainIdDecimal: 1,
|
|
chainName: 'Ethereum Mainnet',
|
|
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
rpcUrls: [
|
|
'https://eth.llamarpc.com',
|
|
'https://rpc.ankr.com/eth',
|
|
'https://ethereum.publicnode.com',
|
|
'https://1rpc.io/eth',
|
|
],
|
|
blockExplorerUrls: ['https://etherscan.io'],
|
|
iconUrls: [
|
|
'https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png',
|
|
],
|
|
},
|
|
{
|
|
chainId: '0x9f2c4',
|
|
chainIdDecimal: 651940,
|
|
chainName: 'ALL Mainnet',
|
|
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
rpcUrls: ['https://mainnet-rpc.alltra.global'],
|
|
blockExplorerUrls: ['https://alltra.global'],
|
|
iconUrls: [
|
|
'https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png',
|
|
],
|
|
},
|
|
{
|
|
chainId: '0x19',
|
|
chainIdDecimal: 25,
|
|
chainName: 'Cronos Mainnet',
|
|
nativeCurrency: { name: 'CRO', symbol: 'CRO', decimals: 18 },
|
|
rpcUrls: ['https://evm.cronos.org', 'https://cronos-rpc.publicnode.com'],
|
|
blockExplorerUrls: ['https://cronos.org/explorer'],
|
|
iconUrls: ['https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png'],
|
|
},
|
|
{
|
|
chainId: '0x38',
|
|
chainIdDecimal: 56,
|
|
chainName: 'BNB Smart Chain',
|
|
nativeCurrency: { name: 'BNB', symbol: 'BNB', decimals: 18 },
|
|
rpcUrls: ['https://bsc-dataseed.binance.org', 'https://bsc-dataseed1.defibit.io'],
|
|
blockExplorerUrls: ['https://bscscan.com'],
|
|
iconUrls: ['https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png'],
|
|
},
|
|
{
|
|
chainId: '0x64',
|
|
chainIdDecimal: 100,
|
|
chainName: 'Gnosis Chain',
|
|
nativeCurrency: { name: 'xDAI', symbol: 'xDAI', decimals: 18 },
|
|
rpcUrls: ['https://rpc.gnosischain.com', 'https://gnosis-rpc.publicnode.com'],
|
|
blockExplorerUrls: ['https://gnosisscan.io'],
|
|
iconUrls: ['https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png'],
|
|
},
|
|
{
|
|
chainId: '0x89',
|
|
chainIdDecimal: 137,
|
|
chainName: 'Polygon',
|
|
nativeCurrency: { name: 'MATIC', symbol: 'MATIC', decimals: 18 },
|
|
rpcUrls: ['https://polygon-rpc.com', 'https://polygon.llamarpc.com'],
|
|
blockExplorerUrls: ['https://polygonscan.com'],
|
|
iconUrls: ['https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png'],
|
|
},
|
|
{
|
|
chainId: '0xa',
|
|
chainIdDecimal: 10,
|
|
chainName: 'Optimism',
|
|
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
rpcUrls: ['https://mainnet.optimism.io', 'https://optimism.llamarpc.com'],
|
|
blockExplorerUrls: ['https://optimistic.etherscan.io'],
|
|
iconUrls: ['https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png'],
|
|
},
|
|
{
|
|
chainId: '0xa4b1',
|
|
chainIdDecimal: 42161,
|
|
chainName: 'Arbitrum One',
|
|
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
rpcUrls: ['https://arb1.arbitrum.io/rpc', 'https://arbitrum.llamarpc.com'],
|
|
blockExplorerUrls: ['https://arbiscan.io'],
|
|
iconUrls: ['https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png'],
|
|
},
|
|
{
|
|
chainId: '0x2105',
|
|
chainIdDecimal: 8453,
|
|
chainName: 'Base',
|
|
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
rpcUrls: ['https://mainnet.base.org', 'https://base.llamarpc.com'],
|
|
blockExplorerUrls: ['https://basescan.org'],
|
|
iconUrls: ['https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png'],
|
|
},
|
|
{
|
|
chainId: '0xa86a',
|
|
chainIdDecimal: 43114,
|
|
chainName: 'Avalanche C-Chain',
|
|
nativeCurrency: { name: 'AVAX', symbol: 'AVAX', decimals: 18 },
|
|
rpcUrls: ['https://api.avax.network/ext/bc/C/rpc'],
|
|
blockExplorerUrls: ['https://snowtrace.io'],
|
|
iconUrls: ['https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png'],
|
|
},
|
|
{
|
|
chainId: '0xa4ec',
|
|
chainIdDecimal: 42220,
|
|
chainName: 'Celo',
|
|
nativeCurrency: { name: 'CELO', symbol: 'CELO', decimals: 18 },
|
|
rpcUrls: ['https://forno.celo.org'],
|
|
blockExplorerUrls: ['https://celoscan.io'],
|
|
iconUrls: ['https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png'],
|
|
},
|
|
{
|
|
chainId: '0x457',
|
|
chainIdDecimal: 1111,
|
|
chainName: 'Wemix',
|
|
nativeCurrency: { name: 'WEMIX', symbol: 'WEMIX', decimals: 18 },
|
|
rpcUrls: ['https://api.wemix.com'],
|
|
blockExplorerUrls: ['https://scan.wemix.com'],
|
|
iconUrls: ['https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png'],
|
|
},
|
|
]
|
|
|
|
/** Chain 138 only (for wallet_addEthereumChain single chain) */
|
|
export const CHAIN_138 = CHAINS[0]
|
|
|
|
/** Ethereum Mainnet only */
|
|
export const CHAIN_MAINNET = CHAINS[1]
|
|
|
|
/** ALL Mainnet only (651940) */
|
|
export const CHAIN_ALL_MAINNET = CHAINS[2]
|
|
|
|
/**
|
|
* @param {number} chainIdDecimal - 138, 1, 651940, 25, 56, 100, 137, 10, 42161, 8453, 43114, 42220, 1111
|
|
* @returns {ChainParams | undefined}
|
|
*/
|
|
export function getChainById(chainIdDecimal) {
|
|
return CHAINS.find((c) => c.chainIdDecimal === chainIdDecimal)
|
|
}
|
|
|
|
/**
|
|
* @param {string} chainIdHex - e.g. '0x8a', '0x1', '0x9f2c4', '0x19', etc.
|
|
* @returns {ChainParams | undefined}
|
|
*/
|
|
export function getChainByHex(chainIdHex) {
|
|
return CHAINS.find((c) => c.chainId === chainIdHex)
|
|
}
|