From 622cdec68d16b0359501c89c0755f38bf90c9fe6 Mon Sep 17 00:00:00 2001 From: jsy1218 <91580504+jsy1218@users.noreply.github.com> Date: Fri, 9 Feb 2024 15:34:20 +0800 Subject: [PATCH 1/2] support op sepolia --- package-lock.json | 14 ++++---- package.json | 2 +- src/providers/caching-token-provider.ts | 16 ++++++--- src/providers/token-provider.ts | 35 +++++++++++++++++++ src/providers/v2/static-subgraph-provider.ts | 1 + src/providers/v3/static-subgraph-provider.ts | 4 +++ src/providers/v3/subgraph-provider.ts | 2 ++ src/routers/alpha-router/alpha-router.ts | 1 + src/routers/alpha-router/config.ts | 1 + .../functions/get-candidate-pools.ts | 11 ++++-- .../alpha-router/gas-models/gas-model.ts | 15 ++++---- .../alpha-router/gas-models/v3/gas-costs.ts | 3 ++ .../gas-models/v3/v3-heuristic-gas-model.ts | 1 + src/routers/legacy-router/bases.ts | 3 ++ src/util/addresses.ts | 13 +++++++ src/util/chains.ts | 22 ++++++++++++ .../alpha-router.integration.test.ts | 3 ++ 17 files changed, 123 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 030546661..3c8698268 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@uniswap/default-token-list": "^11.2.0", "@uniswap/permit2-sdk": "^1.2.0", "@uniswap/router-sdk": "^1.7.5", - "@uniswap/sdk-core": "^4.0.7", + "@uniswap/sdk-core": "^4.0.9", "@uniswap/swap-router-contracts": "^1.3.0", "@uniswap/token-lists": "^1.0.0-beta.31", "@uniswap/universal-router": "^1.6.0", @@ -3134,9 +3134,9 @@ } }, "node_modules/@uniswap/sdk-core": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@uniswap/sdk-core/-/sdk-core-4.0.7.tgz", - "integrity": "sha512-jscx7KUIWzQatcL5PHY6xy0gEL9IGQcL5h/obxzX9foP2KoNk9cq66Ia8I2Kvpa7zBcPOeW1hU0hJNBq6CzcIQ==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@uniswap/sdk-core/-/sdk-core-4.0.10.tgz", + "integrity": "sha512-RiobXJKXvVVb+wfNM09Ik8djOMOuRQGfyRP5pHgUjojicK/7nscZILjZ87DjVCGjXEoD8yTSIps0UAQuz6pJIw==", "dependencies": { "@ethersproject/address": "^5.0.2", "big.js": "^5.2.2", @@ -14098,9 +14098,9 @@ } }, "@uniswap/sdk-core": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@uniswap/sdk-core/-/sdk-core-4.0.7.tgz", - "integrity": "sha512-jscx7KUIWzQatcL5PHY6xy0gEL9IGQcL5h/obxzX9foP2KoNk9cq66Ia8I2Kvpa7zBcPOeW1hU0hJNBq6CzcIQ==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@uniswap/sdk-core/-/sdk-core-4.0.10.tgz", + "integrity": "sha512-RiobXJKXvVVb+wfNM09Ik8djOMOuRQGfyRP5pHgUjojicK/7nscZILjZ87DjVCGjXEoD8yTSIps0UAQuz6pJIw==", "requires": { "@ethersproject/address": "^5.0.2", "big.js": "^5.2.2", diff --git a/package.json b/package.json index 34572860a..1c03c9f0e 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@uniswap/default-token-list": "^11.2.0", "@uniswap/permit2-sdk": "^1.2.0", "@uniswap/router-sdk": "^1.7.5", - "@uniswap/sdk-core": "^4.0.7", + "@uniswap/sdk-core": "^4.0.9", "@uniswap/swap-router-contracts": "^1.3.0", "@uniswap/token-lists": "^1.0.0-beta.31", "@uniswap/universal-router": "^1.6.0", diff --git a/src/providers/caching-token-provider.ts b/src/providers/caching-token-provider.ts index 7bbfe00ca..a9f59a40e 100644 --- a/src/providers/caching-token-provider.ts +++ b/src/providers/caching-token-provider.ts @@ -20,7 +20,7 @@ import { DAI_MAINNET, DAI_MOONBEAM, DAI_OPTIMISM, - DAI_OPTIMISM_GOERLI, + DAI_OPTIMISM_GOERLI, DAI_OPTIMISM_SEPOLIA, DAI_POLYGON_MUMBAI, ETH_BNB, ITokenProvider, @@ -34,21 +34,21 @@ import { USDC_MAINNET, USDC_MOONBEAM, USDC_OPTIMISM, - USDC_OPTIMISM_GOERLI, + USDC_OPTIMISM_GOERLI, USDC_OPTIMISM_SEPOLIA, USDC_POLYGON, USDC_SEPOLIA, USDT_ARBITRUM, USDT_BNB, USDT_MAINNET, USDT_OPTIMISM, - USDT_OPTIMISM_GOERLI, + USDT_OPTIMISM_GOERLI, USDT_OPTIMISM_SEPOLIA, WBTC_ARBITRUM, WBTC_MAINNET, WBTC_MOONBEAM, WBTC_OPTIMISM, - WBTC_OPTIMISM_GOERLI, + WBTC_OPTIMISM_GOERLI, WBTC_OPTIMISM_SEPOLIA, WMATIC_POLYGON, - WMATIC_POLYGON_MUMBAI, + WMATIC_POLYGON_MUMBAI } from './token-provider'; // These tokens will added to the Token cache on initialization. @@ -87,6 +87,12 @@ export const CACHE_SEED_TOKENS: { WBTC: WBTC_OPTIMISM_GOERLI, DAI: DAI_OPTIMISM_GOERLI, }, + [ChainId.OPTIMISM_SEPOLIA]: { + USDC: USDC_OPTIMISM_SEPOLIA, + USDT: USDT_OPTIMISM_SEPOLIA, + WBTC: WBTC_OPTIMISM_SEPOLIA, + DAI: DAI_OPTIMISM_SEPOLIA, + }, [ChainId.ARBITRUM_ONE]: { USDC: USDC_ARBITRUM, USDT: USDT_ARBITRUM, diff --git a/src/providers/token-provider.ts b/src/providers/token-provider.ts index 6bc0c4851..7d980a753 100644 --- a/src/providers/token-provider.ts +++ b/src/providers/token-provider.ts @@ -211,6 +211,35 @@ export const DAI_OPTIMISM_GOERLI = new Token( 'Dai Stablecoin' ); +export const USDC_OPTIMISM_SEPOLIA = new Token( + ChainId.OPTIMISM_SEPOLIA, + '0x7E07E15D2a87A24492740D16f5bdF58c16db0c4E', + 6, + 'USDC', + 'USD//C' +); +export const USDT_OPTIMISM_SEPOLIA = new Token( + ChainId.OPTIMISM_SEPOLIA, + '0x853eb4bA5D0Ba2B77a0A5329Fd2110d5CE149ECE', + 6, + 'USDT', + 'Tether USD' +); +export const WBTC_OPTIMISM_SEPOLIA = new Token( + ChainId.OPTIMISM_SEPOLIA, + '0xe0a592353e81a94Db6E3226fD4A99F881751776a', + 8, + 'WBTC', + 'Wrapped BTC' +); +export const DAI_OPTIMISM_SEPOLIA = new Token( + ChainId.OPTIMISM_SEPOLIA, + '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', + 18, + 'DAI', + 'Dai Stablecoin' +); + export const USDC_ARBITRUM = new Token( ChainId.ARBITRUM_ONE, '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', @@ -721,6 +750,8 @@ export const DAI_ON = (chainId: ChainId): Token => { return DAI_OPTIMISM; case ChainId.OPTIMISM_GOERLI: return DAI_OPTIMISM_GOERLI; + case ChainId.OPTIMISM_SEPOLIA: + return DAI_OPTIMISM_SEPOLIA; case ChainId.ARBITRUM_ONE: return DAI_ARBITRUM; case ChainId.ARBITRUM_GOERLI: @@ -754,6 +785,8 @@ export const USDT_ON = (chainId: ChainId): Token => { return USDT_OPTIMISM; case ChainId.OPTIMISM_GOERLI: return USDT_OPTIMISM_GOERLI; + case ChainId.OPTIMISM_SEPOLIA: + return USDT_OPTIMISM_SEPOLIA; case ChainId.ARBITRUM_ONE: return USDT_ARBITRUM; case ChainId.BNB: @@ -775,6 +808,8 @@ export const USDC_ON = (chainId: ChainId): Token => { return USDC_OPTIMISM; case ChainId.OPTIMISM_GOERLI: return USDC_OPTIMISM_GOERLI; + case ChainId.OPTIMISM_SEPOLIA: + return USDC_OPTIMISM_SEPOLIA; case ChainId.ARBITRUM_ONE: return USDC_ARBITRUM; case ChainId.ARBITRUM_GOERLI: diff --git a/src/providers/v2/static-subgraph-provider.ts b/src/providers/v2/static-subgraph-provider.ts index c48cfbbbb..8dd285e3f 100644 --- a/src/providers/v2/static-subgraph-provider.ts +++ b/src/providers/v2/static-subgraph-provider.ts @@ -75,6 +75,7 @@ const BASES_TO_CHECK_TRADES_AGAINST: ChainTokenList = { ], [ChainId.ARBITRUM_GOERLI]: [], [ChainId.OPTIMISM_GOERLI]: [], + [ChainId.OPTIMISM_SEPOLIA]: [], [ChainId.POLYGON]: [USDC_POLYGON, WETH_POLYGON, WMATIC_POLYGON], [ChainId.POLYGON_MUMBAI]: [], [ChainId.CELO]: [CELO, CUSD_CELO, CEUR_CELO, DAI_CELO], diff --git a/src/providers/v3/static-subgraph-provider.ts b/src/providers/v3/static-subgraph-provider.ts index a6fc4366d..4de9afdcb 100644 --- a/src/providers/v3/static-subgraph-provider.ts +++ b/src/providers/v3/static-subgraph-provider.ts @@ -94,6 +94,10 @@ const BASES_TO_CHECK_TRADES_AGAINST: ChainTokenList = { WBTC_OPTIMISM, OP_OPTIMISM, ], + // todo: once subgraph is created + [ChainId.OPTIMISM_SEPOLIA]: [ + // WRAPPED_NATIVE_CURRENCY[ChainId.OPTIMISM_SEPOLIA]!, + ], [ChainId.ARBITRUM_ONE]: [ WRAPPED_NATIVE_CURRENCY[ChainId.ARBITRUM_ONE]!, WBTC_ARBITRUM, diff --git a/src/providers/v3/subgraph-provider.ts b/src/providers/v3/subgraph-provider.ts index 95af7cde4..908d622ad 100644 --- a/src/providers/v3/subgraph-provider.ts +++ b/src/providers/v3/subgraph-provider.ts @@ -49,6 +49,8 @@ const SUBGRAPH_URL_BY_CHAIN: { [chainId in ChainId]?: string } = { 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3', [ChainId.OPTIMISM]: 'https://api.thegraph.com/subgraphs/name/ianlapham/optimism-post-regenesis', + // todo: add once subgraph is live + [ChainId.OPTIMISM_SEPOLIA]: '', [ChainId.ARBITRUM_ONE]: 'https://api.thegraph.com/subgraphs/name/ianlapham/arbitrum-minimal', [ChainId.POLYGON]: diff --git a/src/routers/alpha-router/alpha-router.ts b/src/routers/alpha-router/alpha-router.ts index d05117c57..9a6a2e0f0 100644 --- a/src/routers/alpha-router/alpha-router.ts +++ b/src/routers/alpha-router/alpha-router.ts @@ -512,6 +512,7 @@ export class AlphaRouter switch (chainId) { case ChainId.OPTIMISM: case ChainId.OPTIMISM_GOERLI: + case ChainId.OPTIMISM_SEPOLIA: this.onChainQuoteProvider = new OnChainQuoteProvider( chainId, provider, diff --git a/src/routers/alpha-router/config.ts b/src/routers/alpha-router/config.ts index 90466d4da..4311443be 100644 --- a/src/routers/alpha-router/config.ts +++ b/src/routers/alpha-router/config.ts @@ -9,6 +9,7 @@ export const DEFAULT_ROUTING_CONFIG_BY_CHAIN = ( // Optimism case ChainId.OPTIMISM: case ChainId.OPTIMISM_GOERLI: + case ChainId.OPTIMISM_SEPOLIA: case ChainId.BASE: case ChainId.BASE_GOERLI: return { diff --git a/src/routers/alpha-router/functions/get-candidate-pools.ts b/src/routers/alpha-router/functions/get-candidate-pools.ts index e360dd097..77e3ff92c 100644 --- a/src/routers/alpha-router/functions/get-candidate-pools.ts +++ b/src/routers/alpha-router/functions/get-candidate-pools.ts @@ -4,9 +4,10 @@ import { FeeAmount } from '@uniswap/v3-sdk'; import _ from 'lodash'; import { + DAI_OPTIMISM_SEPOLIA, ITokenListProvider, - IV2SubgraphProvider, - V2SubgraphPool, + IV2SubgraphProvider, USDC_OPTIMISM_SEPOLIA, USDT_OPTIMISM_SEPOLIA, + V2SubgraphPool, WBTC_OPTIMISM_SEPOLIA } from '../../../providers'; import { CELO, @@ -148,6 +149,12 @@ const baseTokensByChain: { [chainId in ChainId]?: Token[] } = { USDT_OPTIMISM_GOERLI, WBTC_OPTIMISM_GOERLI, ], + [ChainId.OPTIMISM_SEPOLIA]: [ + DAI_OPTIMISM_SEPOLIA, + USDC_OPTIMISM_SEPOLIA, + USDT_OPTIMISM_SEPOLIA, + WBTC_OPTIMISM_SEPOLIA, + ], [ChainId.ARBITRUM_ONE]: [ DAI_ARBITRUM, USDC_ARBITRUM, diff --git a/src/routers/alpha-router/gas-models/gas-model.ts b/src/routers/alpha-router/gas-models/gas-model.ts index 608c2f780..f391b2937 100644 --- a/src/routers/alpha-router/gas-models/gas-model.ts +++ b/src/routers/alpha-router/gas-models/gas-model.ts @@ -17,7 +17,7 @@ import { DAI_GOERLI, DAI_MAINNET, DAI_OPTIMISM, - DAI_OPTIMISM_GOERLI, + DAI_OPTIMISM_GOERLI, DAI_OPTIMISM_SEPOLIA, DAI_POLYGON_MUMBAI, DAI_SEPOLIA, USDC_ARBITRUM, @@ -30,7 +30,7 @@ import { USDC_MAINNET, USDC_MOONBEAM, USDC_OPTIMISM, - USDC_OPTIMISM_GOERLI, + USDC_OPTIMISM_GOERLI, USDC_OPTIMISM_SEPOLIA, USDC_POLYGON, USDC_SEPOLIA, USDT_ARBITRUM, @@ -38,8 +38,8 @@ import { USDT_GOERLI, USDT_MAINNET, USDT_OPTIMISM, - USDT_OPTIMISM_GOERLI, - WBTC_GOERLI, + USDT_OPTIMISM_GOERLI, USDT_OPTIMISM_SEPOLIA, + WBTC_GOERLI } from '../../../providers/token-provider'; import { IV2PoolProvider } from '../../../providers/v2/pool-provider'; import { @@ -63,11 +63,8 @@ export const usdGasTokensByChain: { [chainId in ChainId]?: Token[] } = { [ChainId.MAINNET]: [DAI_MAINNET, USDC_MAINNET, USDT_MAINNET], [ChainId.ARBITRUM_ONE]: [DAI_ARBITRUM, USDC_ARBITRUM, USDT_ARBITRUM], [ChainId.OPTIMISM]: [DAI_OPTIMISM, USDC_OPTIMISM, USDT_OPTIMISM], - [ChainId.OPTIMISM_GOERLI]: [ - DAI_OPTIMISM_GOERLI, - USDC_OPTIMISM_GOERLI, - USDT_OPTIMISM_GOERLI, - ], + [ChainId.OPTIMISM_GOERLI]: [DAI_OPTIMISM_GOERLI, USDC_OPTIMISM_GOERLI, USDT_OPTIMISM_GOERLI], + [ChainId.OPTIMISM_SEPOLIA]: [DAI_OPTIMISM_SEPOLIA, USDC_OPTIMISM_SEPOLIA, USDT_OPTIMISM_SEPOLIA], [ChainId.ARBITRUM_GOERLI]: [USDC_ARBITRUM_GOERLI], [ChainId.GOERLI]: [DAI_GOERLI, USDC_GOERLI, USDT_GOERLI, WBTC_GOERLI], [ChainId.SEPOLIA]: [USDC_SEPOLIA, DAI_SEPOLIA], diff --git a/src/routers/alpha-router/gas-models/v3/gas-costs.ts b/src/routers/alpha-router/gas-models/v3/gas-costs.ts index b197266ac..d4a23d7ae 100644 --- a/src/routers/alpha-router/gas-models/v3/gas-costs.ts +++ b/src/routers/alpha-router/gas-models/v3/gas-costs.ts @@ -15,6 +15,7 @@ export const BASE_SWAP_COST = (id: ChainId): BigNumber => { case ChainId.SEPOLIA: case ChainId.OPTIMISM: case ChainId.OPTIMISM_GOERLI: + case ChainId.OPTIMISM_SEPOLIA: case ChainId.BNB: case ChainId.AVALANCHE: case ChainId.BASE: @@ -48,6 +49,7 @@ export const COST_PER_INIT_TICK = (id: ChainId): BigNumber => { return BigNumber.from(31000); case ChainId.OPTIMISM: case ChainId.OPTIMISM_GOERLI: + case ChainId.OPTIMISM_SEPOLIA: case ChainId.BASE: case ChainId.BASE_GOERLI: return BigNumber.from(31000); @@ -75,6 +77,7 @@ export const COST_PER_HOP = (id: ChainId): BigNumber => { case ChainId.BNB: case ChainId.OPTIMISM: case ChainId.OPTIMISM_GOERLI: + case ChainId.OPTIMISM_SEPOLIA: case ChainId.AVALANCHE: case ChainId.BASE: case ChainId.BASE_GOERLI: diff --git a/src/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.ts b/src/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.ts index 5982f1dff..cc3b9667f 100644 --- a/src/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.ts +++ b/src/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.ts @@ -100,6 +100,7 @@ export class V3HeuristicGasModelFactory extends IOnChainGasModelFactory { const opStackChains = [ ChainId.OPTIMISM, ChainId.OPTIMISM_GOERLI, + ChainId.OPTIMISM_SEPOLIA, ChainId.BASE, ChainId.BASE_GOERLI, ]; diff --git a/src/routers/legacy-router/bases.ts b/src/routers/legacy-router/bases.ts index ef174dc29..269fdadde 100644 --- a/src/routers/legacy-router/bases.ts +++ b/src/routers/legacy-router/bases.ts @@ -41,6 +41,9 @@ export const BASES_TO_CHECK_TRADES_AGAINST = ( [ChainId.OPTIMISM_GOERLI]: [ WRAPPED_NATIVE_CURRENCY[ChainId.OPTIMISM_GOERLI]!, ], + [ChainId.OPTIMISM_SEPOLIA]: [ + WRAPPED_NATIVE_CURRENCY[ChainId.OPTIMISM_SEPOLIA]!, + ], [ChainId.ARBITRUM_ONE]: [WRAPPED_NATIVE_CURRENCY[ChainId.ARBITRUM_ONE]!], [ChainId.ARBITRUM_GOERLI]: [ WRAPPED_NATIVE_CURRENCY[ChainId.ARBITRUM_GOERLI]!, diff --git a/src/util/addresses.ts b/src/util/addresses.ts index fead6df9b..e7d779326 100644 --- a/src/util/addresses.ts +++ b/src/util/addresses.ts @@ -19,6 +19,8 @@ export const V3_CORE_FACTORY_ADDRESSES: AddressMap = { CHAIN_TO_ADDRESSES_MAP[ChainId.CELO_ALFAJORES].v3CoreFactoryAddress, [ChainId.OPTIMISM_GOERLI]: CHAIN_TO_ADDRESSES_MAP[ChainId.OPTIMISM_GOERLI].v3CoreFactoryAddress, + [ChainId.OPTIMISM_SEPOLIA]: + CHAIN_TO_ADDRESSES_MAP[ChainId.OPTIMISM_SEPOLIA].v3CoreFactoryAddress, [ChainId.SEPOLIA]: CHAIN_TO_ADDRESSES_MAP[ChainId.SEPOLIA].v3CoreFactoryAddress, [ChainId.ARBITRUM_GOERLI]: @@ -39,6 +41,8 @@ export const QUOTER_V2_ADDRESSES: AddressMap = { CHAIN_TO_ADDRESSES_MAP[ChainId.CELO_ALFAJORES].quoterAddress, [ChainId.OPTIMISM_GOERLI]: CHAIN_TO_ADDRESSES_MAP[ChainId.OPTIMISM_GOERLI].quoterAddress, + [ChainId.OPTIMISM_SEPOLIA]: + CHAIN_TO_ADDRESSES_MAP[ChainId.OPTIMISM_SEPOLIA].quoterAddress, [ChainId.SEPOLIA]: CHAIN_TO_ADDRESSES_MAP[ChainId.SEPOLIA].quoterAddress, [ChainId.ARBITRUM_GOERLI]: CHAIN_TO_ADDRESSES_MAP[ChainId.ARBITRUM_GOERLI].quoterAddress, @@ -64,6 +68,8 @@ export const UNISWAP_MULTICALL_ADDRESSES: AddressMap = { CHAIN_TO_ADDRESSES_MAP[ChainId.CELO_ALFAJORES].multicallAddress, [ChainId.OPTIMISM_GOERLI]: CHAIN_TO_ADDRESSES_MAP[ChainId.OPTIMISM_GOERLI].multicallAddress, + [ChainId.OPTIMISM_SEPOLIA]: + CHAIN_TO_ADDRESSES_MAP[ChainId.OPTIMISM_SEPOLIA].multicallAddress, [ChainId.SEPOLIA]: CHAIN_TO_ADDRESSES_MAP[ChainId.SEPOLIA].multicallAddress, [ChainId.ARBITRUM_GOERLI]: CHAIN_TO_ADDRESSES_MAP[ChainId.ARBITRUM_GOERLI].multicallAddress, @@ -158,6 +164,13 @@ export const WETH9: { 'WETH', 'Wrapped Ether' ), + [ChainId.OPTIMISM_SEPOLIA]: new Token( + ChainId.OPTIMISM_SEPOLIA, + '0x4200000000000000000000000000000000000006', + 18, + 'WETH', + 'Wrapped Ether' + ), [ChainId.ARBITRUM_ONE]: new Token( ChainId.ARBITRUM_ONE, '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', diff --git a/src/util/chains.ts b/src/util/chains.ts index 7bc19d8ed..6936bf737 100644 --- a/src/util/chains.ts +++ b/src/util/chains.ts @@ -11,6 +11,7 @@ export const SUPPORTED_CHAINS: ChainId[] = [ ChainId.MAINNET, ChainId.OPTIMISM, ChainId.OPTIMISM_GOERLI, + ChainId.OPTIMISM_SEPOLIA, ChainId.ARBITRUM_ONE, ChainId.ARBITRUM_GOERLI, ChainId.POLYGON, @@ -39,6 +40,7 @@ export const V2_SUPPORTED = [ export const HAS_L1_FEE = [ ChainId.OPTIMISM, ChainId.OPTIMISM_GOERLI, + ChainId.OPTIMISM_SEPOLIA, ChainId.ARBITRUM_ONE, ChainId.ARBITRUM_GOERLI, ChainId.BASE, @@ -68,6 +70,8 @@ export const ID_TO_CHAIN_ID = (id: number): ChainId => { return ChainId.OPTIMISM; case 420: return ChainId.OPTIMISM_GOERLI; + case 11155420: + return ChainId.OPTIMISM_SEPOLIA; case 42161: return ChainId.ARBITRUM_ONE; case 421613: @@ -101,6 +105,7 @@ export enum ChainName { SEPOLIA = 'sepolia', OPTIMISM = 'optimism-mainnet', OPTIMISM_GOERLI = 'optimism-goerli', + OPTIMISM_SEPOLIA = 'op-sepolia', ARBITRUM_ONE = 'arbitrum-mainnet', ARBITRUM_GOERLI = 'arbitrum-goerli', POLYGON = 'polygon-mainnet', @@ -152,6 +157,11 @@ export const NATIVE_NAMES_BY_ID: { [chainId: number]: string[] } = { 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], + [ChainId.OPTIMISM_SEPOLIA]: [ + 'ETH', + 'ETHER', + '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', + ], [ChainId.ARBITRUM_ONE]: [ 'ETH', 'ETHER', @@ -190,6 +200,7 @@ export const NATIVE_CURRENCY: { [chainId: number]: NativeCurrencyName } = { [ChainId.SEPOLIA]: NativeCurrencyName.ETHER, [ChainId.OPTIMISM]: NativeCurrencyName.ETHER, [ChainId.OPTIMISM_GOERLI]: NativeCurrencyName.ETHER, + [ChainId.OPTIMISM_SEPOLIA]: NativeCurrencyName.ETHER, [ChainId.ARBITRUM_ONE]: NativeCurrencyName.ETHER, [ChainId.ARBITRUM_GOERLI]: NativeCurrencyName.ETHER, [ChainId.POLYGON]: NativeCurrencyName.MATIC, @@ -217,6 +228,8 @@ export const ID_TO_NETWORK_NAME = (id: number): ChainName => { return ChainName.OPTIMISM; case 420: return ChainName.OPTIMISM_GOERLI; + case 11155420: + return ChainName.OPTIMISM_SEPOLIA; case 42161: return ChainName.ARBITRUM_ONE; case 421613: @@ -260,6 +273,8 @@ export const ID_TO_PROVIDER = (id: ChainId): string => { return process.env.JSON_RPC_PROVIDER_OPTIMISM!; case ChainId.OPTIMISM_GOERLI: return process.env.JSON_RPC_PROVIDER_OPTIMISM_GOERLI!; + case ChainId.OPTIMISM_SEPOLIA: + return process.env.JSON_RPC_PROVIDER_OPTIMISM_SEPOLIA!; case ChainId.ARBITRUM_ONE: return process.env.JSON_RPC_PROVIDER_ARBITRUM_ONE!; case ChainId.ARBITRUM_GOERLI: @@ -326,6 +341,13 @@ export const WRAPPED_NATIVE_CURRENCY: { [chainId in ChainId]: Token } = { 'WETH', 'Wrapped Ether' ), + [ChainId.OPTIMISM_SEPOLIA]: new Token( + ChainId.OPTIMISM_SEPOLIA, + '0x4200000000000000000000000000000000000006', + 18, + 'WETH', + 'Wrapped Ether' + ), [ChainId.ARBITRUM_ONE]: new Token( ChainId.ARBITRUM_ONE, '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', diff --git a/test/integ/routers/alpha-router/alpha-router.integration.test.ts b/test/integ/routers/alpha-router/alpha-router.integration.test.ts index e10387f4d..4487e7f9b 100644 --- a/test/integ/routers/alpha-router/alpha-router.integration.test.ts +++ b/test/integ/routers/alpha-router/alpha-router.integration.test.ts @@ -104,6 +104,7 @@ const GAS_ESTIMATE_DEVIATION_PERCENT: { [chainId in ChainId]: number } = { [ChainId.SEPOLIA]: 50, [ChainId.OPTIMISM]: 26, [ChainId.OPTIMISM_GOERLI]: 30, + [ChainId.OPTIMISM_SEPOLIA]: 30, [ChainId.ARBITRUM_ONE]: 53, [ChainId.ARBITRUM_GOERLI]: 50, [ChainId.POLYGON]: 34, @@ -3273,6 +3274,7 @@ describe('quote for other networks', () => { [ChainId.SEPOLIA]: () => USDC_ON(ChainId.SEPOLIA), [ChainId.OPTIMISM]: () => USDC_ON(ChainId.OPTIMISM), [ChainId.OPTIMISM_GOERLI]: () => USDC_ON(ChainId.OPTIMISM_GOERLI), + [ChainId.OPTIMISM_SEPOLIA]: () => USDC_ON(ChainId.OPTIMISM_SEPOLIA), [ChainId.ARBITRUM_ONE]: () => USDC_ON(ChainId.ARBITRUM_ONE), [ChainId.ARBITRUM_GOERLI]: () => USDC_ON(ChainId.ARBITRUM_GOERLI), [ChainId.POLYGON]: () => USDC_ON(ChainId.POLYGON), @@ -3292,6 +3294,7 @@ describe('quote for other networks', () => { [ChainId.SEPOLIA]: () => DAI_ON(ChainId.SEPOLIA), [ChainId.OPTIMISM]: () => DAI_ON(ChainId.OPTIMISM), [ChainId.OPTIMISM_GOERLI]: () => DAI_ON(ChainId.OPTIMISM_GOERLI), + [ChainId.OPTIMISM_SEPOLIA]: () => USDC_ON(ChainId.OPTIMISM_SEPOLIA), [ChainId.ARBITRUM_ONE]: () => DAI_ON(ChainId.ARBITRUM_ONE), [ChainId.ARBITRUM_GOERLI]: () => DAI_ON(ChainId.ARBITRUM_GOERLI), [ChainId.POLYGON]: () => DAI_ON(ChainId.POLYGON), From 08102cf7d0785f7c9a65f6b167959dc1bba47474 Mon Sep 17 00:00:00 2001 From: jsy1218 <91580504+jsy1218@users.noreply.github.com> Date: Fri, 9 Feb 2024 15:51:54 +0800 Subject: [PATCH 2/2] filter out op sepolia from running integ-test --- test/integ/routers/alpha-router/alpha-router.integration.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/test/integ/routers/alpha-router/alpha-router.integration.test.ts b/test/integ/routers/alpha-router/alpha-router.integration.test.ts index 4487e7f9b..c122e2ca8 100644 --- a/test/integ/routers/alpha-router/alpha-router.integration.test.ts +++ b/test/integ/routers/alpha-router/alpha-router.integration.test.ts @@ -3314,6 +3314,7 @@ describe('quote for other networks', () => { SUPPORTED_CHAINS, (c) => c != ChainId.OPTIMISM_GOERLI && + c != ChainId.OPTIMISM_SEPOLIA && c != ChainId.POLYGON_MUMBAI && c != ChainId.ARBITRUM_GOERLI && // Tests are failing https://github.com/Uniswap/smart-order-router/issues/104