Files
smom-dbis-138/services/token-aggregation/src/config/chains.ts
defiQUG 76aa419320 feat: bridges, PMM, flash workflow, token-aggregation, and deployment docs
- CCIP/trustless bridge contracts, GRU tokens, DEX/PMM tests, reserve vault.
- Token-aggregation service routes, planner, chain config, relay env templates.
- Config snapshots and multi-chain deployment markdown updates.
- gitignore services/btc-intake/dist/ (tsc output); do not track dist.

Run forge build && forge test before deploy (large solc graph).

Made-with: Cursor
2026-04-07 23:40:52 -07:00

153 lines
4.5 KiB
TypeScript

import { resolveChain138RpcUrl } from './chain138-rpc';
export interface ChainConfig {
chainId: number;
name: string;
rpcUrl: string;
explorerUrl: string;
nativeCurrency: {
name: string;
symbol: string;
decimals: number;
};
blockTime: number; // Average block time in seconds
confirmations: number; // Required confirmations for finality
}
export const CHAIN_CONFIGS: Record<number, ChainConfig> = {
138: {
chainId: 138,
name: 'DeFi Oracle Meta Mainnet',
rpcUrl: resolveChain138RpcUrl(),
explorerUrl: 'https://explorer.d-bis.org',
nativeCurrency: {
name: 'Ether',
symbol: 'ETH',
decimals: 18,
},
blockTime: 5, // QBFT consensus, ~5 second blocks
confirmations: 1, // QBFT finality
},
651940: {
chainId: 651940,
name: 'ALL Mainnet',
rpcUrl: process.env.CHAIN_651940_RPC_URL || 'https://mainnet-rpc.alltra.global',
explorerUrl: 'https://alltra.global',
nativeCurrency: {
name: 'ALL',
symbol: 'ALL',
decimals: 18,
},
blockTime: 3, // Estimated
confirmations: 12, // Standard EVM confirmations
},
// cW* edge pool chains (pool-matrix); set CHAIN_*_RPC_URL to enable indexing
1: {
chainId: 1,
name: 'Ethereum Mainnet',
rpcUrl: process.env.CHAIN_1_RPC_URL || process.env.ETHEREUM_MAINNET_RPC || 'https://eth.llamarpc.com',
explorerUrl: 'https://etherscan.io',
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
blockTime: 12,
confirmations: 12,
},
10: {
chainId: 10,
name: 'Optimism',
rpcUrl: process.env.CHAIN_10_RPC_URL || 'https://mainnet.optimism.io',
explorerUrl: 'https://optimistic.etherscan.io',
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
blockTime: 2,
confirmations: 1,
},
56: {
chainId: 56,
name: 'BSC (BNB Chain)',
rpcUrl: process.env.CHAIN_56_RPC_URL || 'https://bsc-dataseed.binance.org',
explorerUrl: 'https://bscscan.com',
nativeCurrency: { name: 'BNB', symbol: 'BNB', decimals: 18 },
blockTime: 3,
confirmations: 15,
},
100: {
chainId: 100,
name: 'Gnosis Chain',
rpcUrl: process.env.CHAIN_100_RPC_URL || 'https://rpc.gnosischain.com',
explorerUrl: 'https://gnosisscan.io',
nativeCurrency: { name: 'xDAI', symbol: 'xDAI', decimals: 18 },
blockTime: 5,
confirmations: 12,
},
137: {
chainId: 137,
name: 'Polygon',
rpcUrl: process.env.CHAIN_137_RPC_URL || 'https://polygon-rpc.com',
explorerUrl: 'https://polygonscan.com',
nativeCurrency: { name: 'MATIC', symbol: 'MATIC', decimals: 18 },
blockTime: 2,
confirmations: 128,
},
42161: {
chainId: 42161,
name: 'Arbitrum One',
rpcUrl: process.env.CHAIN_42161_RPC_URL || 'https://arb1.arbitrum.io/rpc',
explorerUrl: 'https://arbiscan.io',
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
blockTime: 0.25,
confirmations: 1,
},
8453: {
chainId: 8453,
name: 'Base',
rpcUrl: process.env.CHAIN_8453_RPC_URL || 'https://mainnet.base.org',
explorerUrl: 'https://basescan.org',
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
blockTime: 2,
confirmations: 1,
},
43114: {
chainId: 43114,
name: 'Avalanche C-Chain',
rpcUrl: process.env.CHAIN_43114_RPC_URL || 'https://api.avax.network/ext/bc/C/rpc',
explorerUrl: 'https://snowtrace.io',
nativeCurrency: { name: 'AVAX', symbol: 'AVAX', decimals: 18 },
blockTime: 2,
confirmations: 1,
},
25: {
chainId: 25,
name: 'Cronos',
rpcUrl: process.env.CHAIN_25_RPC_URL || 'https://evm.cronos.org',
explorerUrl: 'https://cronoscan.com',
nativeCurrency: { name: 'CRO', symbol: 'CRO', decimals: 18 },
blockTime: 6,
confirmations: 12,
},
42220: {
chainId: 42220,
name: 'Celo',
rpcUrl: process.env.CHAIN_42220_RPC_URL || 'https://forno.celo.org',
explorerUrl: 'https://celoscan.io',
nativeCurrency: { name: 'CELO', symbol: 'CELO', decimals: 18 },
blockTime: 5,
confirmations: 1,
},
1111: {
chainId: 1111,
name: 'Wemix',
rpcUrl: process.env.CHAIN_1111_RPC_URL || 'https://api.wemix.com',
explorerUrl: 'https://scan.wemix.com',
nativeCurrency: { name: 'WEMIX', symbol: 'WEMIX', decimals: 18 },
blockTime: 2,
confirmations: 1,
},
};
export function getChainConfig(chainId: number): ChainConfig | undefined {
return CHAIN_CONFIGS[chainId];
}
export function getSupportedChainIds(): number[] {
return Object.keys(CHAIN_CONFIGS).map((id) => parseInt(id, 10));
}