diff --git a/.changeset/brave-dolls-try.md b/.changeset/brave-dolls-try.md new file mode 100644 index 00000000..da1ea4dd --- /dev/null +++ b/.changeset/brave-dolls-try.md @@ -0,0 +1,5 @@ +--- +'@protocolink/common': patch +--- + +add Optimism, Base, Metis, Avalanche information diff --git a/.changeset/strange-wolves-sleep.md b/.changeset/strange-wolves-sleep.md new file mode 100644 index 00000000..b14d7795 --- /dev/null +++ b/.changeset/strange-wolves-sleep.md @@ -0,0 +1,5 @@ +--- +'@protocolink/core': patch +--- + +add Router address for Optimism, Base, Metis and Avalanche network diff --git a/packages/common/src/networks/data.json b/packages/common/src/networks/data.json index e2bead91..c7abe41e 100644 --- a/packages/common/src/networks/data.json +++ b/packages/common/src/networks/data.json @@ -22,6 +22,29 @@ "multicall2Address": "0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696", "multicall3Address": "0xcA11bde05977b3631167028862bE2a173976CA11" }, + { + "id": "optimism", + "chainId": 10, + "name": "Optimism", + "explorerUrl": "https://optimistic.etherscan.io/", + "rpcUrl": "https://rpc.ankr.com/optimism", + "nativeToken": { + "chainId": 10, + "address": "0x0000000000000000000000000000000000000000", + "decimals": 18, + "symbol": "ETH", + "name": "Ethereum" + }, + "wrappedNativeToken": { + "chainId": 10, + "address": "0x4200000000000000000000000000000000000006", + "decimals": 18, + "symbol": "WETH", + "name": "Wrapped Ether" + }, + "multicall2Address": "0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696", + "multicall3Address": "0xcA11bde05977b3631167028862bE2a173976CA11" + }, { "id": "polygon", "chainId": 137, @@ -45,6 +68,76 @@ "multicall2Address": "0x275617327c958bD06b5D6b871E7f491D76113dd8", "multicall3Address": "0xcA11bde05977b3631167028862bE2a173976CA11" }, + { + "id": "zksync", + "chainId": 324, + "name": "zkSync", + "explorerUrl": "https://explorer.zksync.io/", + "rpcUrl": "https://mainnet.era.zksync.io/", + "nativeToken": { + "chainId": 324, + "address": "0x0000000000000000000000000000000000000000", + "decimals": 18, + "symbol": "ETH", + "name": "Ethereum" + }, + "wrappedNativeToken": { + "chainId": 324, + "address": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", + "decimals": 18, + "symbol": "WETH", + "name": "Wrapped Ether" + }, + "multicall2Address": "0x1fCD733705ec1CF534dD19ecF627F013352e776F", + "multicall3Address": "0xF9cda624FBC7e059355ce98a31693d299FACd963" + }, + { + "id": "metis", + "chainId": 1088, + "name": "Metis", + "explorerUrl": "https://andromeda-explorer.metis.io/", + "rpcUrl": "https://metis-mainnet.public.blastapi.io", + "nativeToken": { + "chainId": 1088, + "address": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", + "decimals": 18, + "symbol": "METIS", + "name": "Metis" + }, + "wrappedNativeToken": { + "chainId": 1088, + "address": "0x71802e8F394BB9d05a1b8E9d0562917609FD7325", + "decimals": 18, + "symbol": "WMETIS", + "name": "Wrapped METIS" + }, + + "multicall2Address": "0xc39aBB6c4451089dE48Cffb013c39d3110530e5C", + "multicall3Address": "0xcA11bde05977b3631167028862bE2a173976CA11" + }, + { + "id": "base", + "chainId": 8453, + "name": "Base", + "explorerUrl": "https://basescan.org/", + "rpcUrl": "https://rpc.ankr.com/base", + "nativeToken": { + "chainId": 8453, + "address": "0x0000000000000000000000000000000000000000", + "decimals": 18, + "symbol": "ETH", + "name": "Ethereum" + }, + "wrappedNativeToken": { + "chainId": 8453, + "address": "0x4200000000000000000000000000000000000006", + "decimals": 18, + "symbol": "WETH", + "name": "Wrapped Ether" + }, + "multicall2Address": "0xcA11bde05977b3631167028862bE2a173976CA11", + "multicall3Address": "0xcA11bde05977b3631167028862bE2a173976CA11" + }, { "id": "arbitrum", "chainId": 42161, @@ -69,26 +162,26 @@ "multicall3Address": "0xcA11bde05977b3631167028862bE2a173976CA11" }, { - "id": "zksync", - "chainId": 324, - "name": "zkSync", - "explorerUrl": "https://explorer.zksync.io/", - "rpcUrl": "https://mainnet.era.zksync.io/", + "id": "avalanche", + "chainId": 43114, + "name": "Avalanche", + "explorerUrl": "https://snowtrace.io/", + "rpcUrl": "https://rpc.ankr.com/avalanche", "nativeToken": { - "chainId": 324, - "symbol": "ETH", - "name": "Ethereum", + "chainId": 43114, "address": "0x0000000000000000000000000000000000000000", - "decimals": 18 + "decimals": 18, + "symbol": "AVAX", + "name": "Avalanche" }, "wrappedNativeToken": { - "chainId": 324, - "symbol": "WETH", - "name": "Wrapped Ether", - "address": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", - "decimals": 18 + "chainId": 43114, + "address": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", + "decimals": 18, + "symbol": "WAVAX", + "name": "Wrapped AVAX" }, - "multicall2Address": "0x1fCD733705ec1CF534dD19ecF627F013352e776F", - "multicall3Address": "0xF9cda624FBC7e059355ce98a31693d299FACd963" + "multicall2Address": "0xF2FD8219609E28C61A998cc534681f95D2740f61", + "multicall3Address": "0xcA11bde05977b3631167028862bE2a173976CA11" } ] diff --git a/packages/common/src/networks/index.test.ts b/packages/common/src/networks/index.test.ts index 4a9be49f..3ff20437 100644 --- a/packages/common/src/networks/index.test.ts +++ b/packages/common/src/networks/index.test.ts @@ -14,9 +14,13 @@ import { expect } from 'chai'; describe('Test isSupportedChainId', function () { const testCases = [ { chainId: ChainId.mainnet, expected: true }, + { chainId: ChainId.optimism, expected: true }, { chainId: ChainId.polygon, expected: true }, - { chainId: ChainId.arbitrum, expected: true }, { chainId: ChainId.zksync, expected: true }, + { chainId: ChainId.metis, expected: true }, + { chainId: ChainId.base, expected: true }, + { chainId: ChainId.arbitrum, expected: true }, + { chainId: ChainId.avalanche, expected: true }, { chainId: 1337, expected: false }, ]; @@ -30,9 +34,13 @@ describe('Test isSupportedChainId', function () { describe('Test isSupportedNetworkId', function () { const testCases = [ { networkId: NetworkId.mainnet, expected: true }, + { networkId: NetworkId.optimism, expected: true }, { networkId: NetworkId.polygon, expected: true }, - { networkId: NetworkId.arbitrum, expected: true }, { networkId: NetworkId.zksync, expected: true }, + { networkId: NetworkId.metis, expected: true }, + { networkId: NetworkId.base, expected: true }, + { networkId: NetworkId.arbitrum, expected: true }, + { networkId: NetworkId.avalanche, expected: true }, { networkId: 'hardhat', expected: false }, ]; @@ -63,6 +71,24 @@ describe('Test newExplorerUrl', function () { data: '0xdAC17F958D2ee523a2206206994597C13D831ec7', expected: 'https://etherscan.io/token/0xdAC17F958D2ee523a2206206994597C13D831ec7', }, + { + chainId: ChainId.optimism, + type: ExplorerType.tx, + data: '0x7b00ad829b19ebd4df94f8b5cd0120d300d67482d41755dd5d259defb0164743', + expected: 'https://optimistic.etherscan.io/tx/0x7b00ad829b19ebd4df94f8b5cd0120d300d67482d41755dd5d259defb0164743', + }, + { + chainId: ChainId.optimism, + type: ExplorerType.address, + data: '0xd8c1cecca51d5d97a70a35e194bb6670b85d8576', + expected: 'https://optimistic.etherscan.io/address/0xd8c1cecca51d5d97a70a35e194bb6670b85d8576', + }, + { + chainId: ChainId.optimism, + type: ExplorerType.token, + data: '0xdAC17F958D2ee523a2206206994597C13D831ec7', + expected: 'https://optimistic.etherscan.io/token/0xdAC17F958D2ee523a2206206994597C13D831ec7', + }, { chainId: ChainId.polygon, type: ExplorerType.tx, @@ -81,6 +107,55 @@ describe('Test newExplorerUrl', function () { data: '0xdAC17F958D2ee523a2206206994597C13D831ec7', expected: 'https://polygonscan.com/token/0xdAC17F958D2ee523a2206206994597C13D831ec7', }, + { + chainId: ChainId.zksync, + type: ExplorerType.tx, + data: '0xf2796c0c8814a8fb37e30fef66a43b872803921d7d674b87916959ae57efcc71', + expected: 'https://explorer.zksync.io/tx/0xf2796c0c8814a8fb37e30fef66a43b872803921d7d674b87916959ae57efcc71', + }, + { + chainId: ChainId.zksync, + type: ExplorerType.address, + data: '0x460f500EFfDC9d9ddD120f2812ff409bFdff47fA', + expected: 'https://explorer.zksync.io/address/0x460f500EFfDC9d9ddD120f2812ff409bFdff47fA', + }, + { + chainId: ChainId.metis, + type: ExplorerType.tx, + data: '0x7b00ad829b19ebd4df94f8b5cd0120d300d67482d41755dd5d259defb0164743', + expected: + 'https://andromeda-explorer.metis.io/tx/0x7b00ad829b19ebd4df94f8b5cd0120d300d67482d41755dd5d259defb0164743', + }, + { + chainId: ChainId.metis, + type: ExplorerType.address, + data: '0xd8c1cecca51d5d97a70a35e194bb6670b85d8576', + expected: 'https://andromeda-explorer.metis.io/address/0xd8c1cecca51d5d97a70a35e194bb6670b85d8576', + }, + { + chainId: ChainId.metis, + type: ExplorerType.token, + data: '0xdAC17F958D2ee523a2206206994597C13D831ec7', + expected: 'https://andromeda-explorer.metis.io/token/0xdAC17F958D2ee523a2206206994597C13D831ec7', + }, + { + chainId: ChainId.base, + type: ExplorerType.tx, + data: '0x7b00ad829b19ebd4df94f8b5cd0120d300d67482d41755dd5d259defb0164743', + expected: 'https://basescan.org/tx/0x7b00ad829b19ebd4df94f8b5cd0120d300d67482d41755dd5d259defb0164743', + }, + { + chainId: ChainId.base, + type: ExplorerType.address, + data: '0xd8c1cecca51d5d97a70a35e194bb6670b85d8576', + expected: 'https://basescan.org/address/0xd8c1cecca51d5d97a70a35e194bb6670b85d8576', + }, + { + chainId: ChainId.base, + type: ExplorerType.token, + data: '0xdAC17F958D2ee523a2206206994597C13D831ec7', + expected: 'https://basescan.org/token/0xdAC17F958D2ee523a2206206994597C13D831ec7', + }, { chainId: ChainId.arbitrum, type: ExplorerType.tx, @@ -100,16 +175,22 @@ describe('Test newExplorerUrl', function () { expected: 'https://arbiscan.io/token/0xdAC17F958D2ee523a2206206994597C13D831ec7', }, { - chainId: ChainId.zksync, + chainId: ChainId.avalanche, type: ExplorerType.tx, - data: '0xf2796c0c8814a8fb37e30fef66a43b872803921d7d674b87916959ae57efcc71', - expected: 'https://explorer.zksync.io/tx/0xf2796c0c8814a8fb37e30fef66a43b872803921d7d674b87916959ae57efcc71', + data: '0x7b00ad829b19ebd4df94f8b5cd0120d300d67482d41755dd5d259defb0164743', + expected: 'https://snowtrace.io/tx/0x7b00ad829b19ebd4df94f8b5cd0120d300d67482d41755dd5d259defb0164743', }, { - chainId: ChainId.zksync, + chainId: ChainId.avalanche, type: ExplorerType.address, - data: '0x460f500EFfDC9d9ddD120f2812ff409bFdff47fA', - expected: 'https://explorer.zksync.io/address/0x460f500EFfDC9d9ddD120f2812ff409bFdff47fA', + data: '0xd8c1cecca51d5d97a70a35e194bb6670b85d8576', + expected: 'https://snowtrace.io/address/0xd8c1cecca51d5d97a70a35e194bb6670b85d8576', + }, + { + chainId: ChainId.avalanche, + type: ExplorerType.token, + data: '0xdAC17F958D2ee523a2206206994597C13D831ec7', + expected: 'https://snowtrace.io/token/0xdAC17F958D2ee523a2206206994597C13D831ec7', }, ]; diff --git a/packages/common/src/networks/index.ts b/packages/common/src/networks/index.ts index 49e7d92a..5acdce7a 100644 --- a/packages/common/src/networks/index.ts +++ b/packages/common/src/networks/index.ts @@ -64,16 +64,24 @@ export function toChainId(networkId: string) { export enum ChainId { mainnet = 1, + optimism = 10, polygon = 137, - arbitrum = 42161, zksync = 324, + metis = 1088, + base = 8453, + arbitrum = 42161, + avalanche = 43114, } export enum NetworkId { mainnet = 'mainnet', + optimism = 'optimism', polygon = 'polygon', - arbitrum = 'arbitrum', zksync = 'zksync', + metis = 'metis', + base = 'base', + arbitrum = 'arbitrum', + avalanche = 'avalanche', } export function isSupportedChainId(chainId: number) { diff --git a/packages/core/src/configs.ts b/packages/core/src/configs.ts index 538e2381..badc6038 100644 --- a/packages/core/src/configs.ts +++ b/packages/core/src/configs.ts @@ -6,15 +6,27 @@ export const contractAddressMap: Record<number, Record<ContractNames, string>> = [common.ChainId.mainnet]: { Router: '0x3fa3B62F0c9c13733245A778DE4157E47Cf5bA21', }, - [common.ChainId.polygon]: { + [common.ChainId.optimism]: { Router: '0x3fa3B62F0c9c13733245A778DE4157E47Cf5bA21', }, - [common.ChainId.arbitrum]: { + [common.ChainId.polygon]: { Router: '0x3fa3B62F0c9c13733245A778DE4157E47Cf5bA21', }, [common.ChainId.zksync]: { Router: '0xa8350893B36e0425B50917125d9603F81F2D3C87', }, + [common.ChainId.metis]: { + Router: '0x3fa3B62F0c9c13733245A778DE4157E47Cf5bA21', + }, + [common.ChainId.base]: { + Router: '0x3fa3B62F0c9c13733245A778DE4157E47Cf5bA21', + }, + [common.ChainId.arbitrum]: { + Router: '0x3fa3B62F0c9c13733245A778DE4157E47Cf5bA21', + }, + [common.ChainId.avalanche]: { + Router: '0x3fa3B62F0c9c13733245A778DE4157E47Cf5bA21', + }, }; export function getContractAddress(chainId: number, name: ContractNames) {