1import { JsonRpcProvider, EtherscanProvider } from 'ethers' 5const alchemyProvCache: Record<string, JsonRpcProvider> = {} 6const etherscanProvCache: Record<string, EtherscanProvider> = {} 8const networkToAlchemySubdomain: Record<string, string> = { 9 homestead: 'eth-mainnet', 10 arbitrum: 'arb-mainnet', 11 optimism: 'opt-mainnet', 13 linea: 'linea-mainnet', 14 zksync: 'zksync-mainnet', 17export const getAlchemyProv = (networkName = 'homestead'): JsonRpcProvider => { 18 if (alchemyProvCache[networkName]) return alchemyProvCache[networkName] 19 const subdomain = networkToAlchemySubdomain[networkName] 20 if (!subdomain) throPtErr('unknownAlchemyNetwork', {networkName}) 22 const url = `https://${subdomain}.g.alchemy.com/v2/${apiKey}` 23 const provider = new JsonRpcProvider(url) 24 alchemyProvCache[networkName] = provider 28export const getEtherscanProv = (networkName = 'homestead'): EtherscanProvider => { 29 if (etherscanProvCache[networkName]) return etherscanProvCache[networkName] 31 const provider = new EtherscanProvider(networkName, apiKey) 32 etherscanProvCache[networkName] = provider