Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: support op sepolia #486

Merged
merged 2 commits into from
Feb 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
16 changes: 11 additions & 5 deletions src/providers/caching-token-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
DAI_MAINNET,
DAI_MOONBEAM,
DAI_OPTIMISM,
DAI_OPTIMISM_GOERLI,
DAI_OPTIMISM_GOERLI, DAI_OPTIMISM_SEPOLIA,
DAI_POLYGON_MUMBAI,
ETH_BNB,
ITokenProvider,
Expand All @@ -34,21 +34,21 @@
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.
Expand All @@ -56,7 +56,7 @@
[chainId in ChainId]?: { [symbol: string]: Token };
} = {
[ChainId.MAINNET]: {
WETH: WRAPPED_NATIVE_CURRENCY[ChainId.MAINNET]!,

Check warning on line 59 in src/providers/caching-token-provider.ts

View workflow job for this annotation

GitHub Actions / Run linters 2

Forbidden non-null assertion
USDC: USDC_MAINNET,
USDT: USDT_MAINNET,
WBTC: WBTC_MAINNET,
Expand Down Expand Up @@ -87,6 +87,12 @@
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,
Expand Down Expand Up @@ -192,11 +198,11 @@

for (const address of addresses) {
if (await this.tokenCache.has(this.CACHE_KEY(this.chainId, address))) {
addressToToken[address.toLowerCase()] = (await this.tokenCache.get(

Check warning on line 201 in src/providers/caching-token-provider.ts

View workflow job for this annotation

GitHub Actions / Run linters 2

Forbidden non-null assertion
this.CACHE_KEY(this.chainId, address)
))!;
symbolToToken[addressToToken[address]!.symbol!] =

Check warning on line 204 in src/providers/caching-token-provider.ts

View workflow job for this annotation

GitHub Actions / Run linters 2

Forbidden non-null assertion

Check warning on line 204 in src/providers/caching-token-provider.ts

View workflow job for this annotation

GitHub Actions / Run linters 2

Forbidden non-null assertion
(await this.tokenCache.get(this.CACHE_KEY(this.chainId, address)))!;

Check warning on line 205 in src/providers/caching-token-provider.ts

View workflow job for this annotation

GitHub Actions / Run linters 2

Forbidden non-null assertion
} else {
addressesToFindInPrimary.push(address);
}
Expand Down Expand Up @@ -224,10 +230,10 @@

if (token) {
addressToToken[address.toLowerCase()] = token;
symbolToToken[addressToToken[address]!.symbol!] = token;

Check warning on line 233 in src/providers/caching-token-provider.ts

View workflow job for this annotation

GitHub Actions / Run linters 2

Forbidden non-null assertion

Check warning on line 233 in src/providers/caching-token-provider.ts

View workflow job for this annotation

GitHub Actions / Run linters 2

Forbidden non-null assertion
await this.tokenCache.set(
this.CACHE_KEY(this.chainId, address.toLowerCase()),
addressToToken[address]!

Check warning on line 236 in src/providers/caching-token-provider.ts

View workflow job for this annotation

GitHub Actions / Run linters 2

Forbidden non-null assertion
);
} else {
addressesToFindInSecondary.push(address);
Expand Down Expand Up @@ -255,7 +261,7 @@
const token = secondaryTokenAccessor.getTokenByAddress(address);
if (token) {
addressToToken[address.toLowerCase()] = token;
symbolToToken[addressToToken[address]!.symbol!] = token;

Check warning on line 264 in src/providers/caching-token-provider.ts

View workflow job for this annotation

GitHub Actions / Run linters 2

Forbidden non-null assertion

Check warning on line 264 in src/providers/caching-token-provider.ts

View workflow job for this annotation

GitHub Actions / Run linters 2

Forbidden non-null assertion
await this.tokenCache.set(
this.CACHE_KEY(this.chainId, address.toLowerCase()),
addressToToken[address]!
Expand Down
35 changes: 35 additions & 0 deletions src/providers/token-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand All @@ -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:
Expand Down
1 change: 1 addition & 0 deletions src/providers/v2/static-subgraph-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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],
Expand Down
4 changes: 4 additions & 0 deletions src/providers/v3/static-subgraph-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 2 additions & 0 deletions src/providers/v3/subgraph-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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]:
Expand Down
1 change: 1 addition & 0 deletions src/routers/alpha-router/alpha-router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
1 change: 1 addition & 0 deletions src/routers/alpha-router/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
11 changes: 9 additions & 2 deletions src/routers/alpha-router/functions/get-candidate-pools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
15 changes: 6 additions & 9 deletions src/routers/alpha-router/gas-models/gas-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -30,16 +30,16 @@ 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_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 {
Expand All @@ -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],
Expand Down
3 changes: 3 additions & 0 deletions src/routers/alpha-router/gas-models/v3/gas-costs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ export class V3HeuristicGasModelFactory extends IOnChainGasModelFactory {
const opStackChains = [
ChainId.OPTIMISM,
ChainId.OPTIMISM_GOERLI,
ChainId.OPTIMISM_SEPOLIA,
ChainId.BASE,
ChainId.BASE_GOERLI,
];
Expand Down
3 changes: 3 additions & 0 deletions src/routers/legacy-router/bases.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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]!,
Expand Down
13 changes: 13 additions & 0 deletions src/util/addresses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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]:
Expand All @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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',
Expand Down
Loading
Loading