Skip to content

Commit

Permalink
feat: add support for Optimism Goerli (#205)
Browse files Browse the repository at this point in the history
Adds support for Optimism Goerli in the various different places where
support is required.
  • Loading branch information
smartcontracts committed Mar 10, 2023
1 parent 92b4fcd commit b09f4a8
Show file tree
Hide file tree
Showing 17 changed files with 147 additions and 2 deletions.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ JSON_RPC_PROVIDER_RINKEBY = '<JSON_RPC_PROVIDER>'
JSON_RPC_PROVIDER_GORLI = '<JSON_RPC_PROVIDER>'
JSON_RPC_PROVIDER_KOVAN = '<JSON_RPC_PROVIDER>'
JSON_RPC_PROVIDER_OPTIMISM = '<JSON_RPC_PROVIDER>'
JSON_RPC_PROVIDER_OPTIMISM_GOERLI = '<JSON_RPC_PROVIDER>'
JSON_RPC_PROVIDER_OPTIMISTIC_KOVAN = '<JSON_RPC_PROVIDER>'
JSON_RPC_PROVIDER_ARBITRUM_ONE = '<JSON_RPC_PROVIDER>'
JSON_RPC_PROVIDER_ARBITRUM_RINKEBY = '<JSON_RPC_PROVIDER>'
Expand Down Expand Up @@ -154,6 +155,12 @@ Total ticks crossed: 7
```

## Optimism-Goerli

```
./bin/cli quote --tokenIn 0x7E07E15D2a87A24492740D16f5bdF58c16db0c4E --tokenOut 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1 --amount 200000 --exactIn --minSplits 1 --router alpha --chainId 420
```

## Optimistic-Kovan

```
Expand Down
10 changes: 10 additions & 0 deletions src/providers/caching-token-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
DAI_MAINNET,
DAI_MOONBEAM,
DAI_OPTIMISM,
DAI_OPTIMISM_GOERLI,
DAI_OPTIMISTIC_KOVAN,
DAI_POLYGON_MUMBAI,
DAI_RINKEBY_1,
Expand All @@ -36,18 +37,21 @@ import {
USDC_MAINNET,
USDC_MOONBEAM,
USDC_OPTIMISM,
USDC_OPTIMISM_GOERLI,
USDC_OPTIMISTIC_KOVAN,
USDC_POLYGON,
USDT_ARBITRUM,
USDT_ARBITRUM_RINKEBY,
USDT_BSC,
USDT_MAINNET,
USDT_OPTIMISM,
USDT_OPTIMISM_GOERLI,
USDT_OPTIMISTIC_KOVAN,
WBTC_ARBITRUM,
WBTC_MAINNET,
WBTC_MOONBEAM,
WBTC_OPTIMISM,
WBTC_OPTIMISM_GOERLI,
WBTC_OPTIMISTIC_KOVAN,
WMATIC_POLYGON,
WMATIC_POLYGON_MUMBAI,
Expand Down Expand Up @@ -85,6 +89,12 @@ export const CACHE_SEED_TOKENS: {
WBTC: WBTC_OPTIMISM,
DAI: DAI_OPTIMISM,
},
[ChainId.OPTIMISM_GOERLI]: {
USDC: USDC_OPTIMISM_GOERLI,
USDT: USDT_OPTIMISM_GOERLI,
WBTC: WBTC_OPTIMISM_GOERLI,
DAI: DAI_OPTIMISM_GOERLI,
},
[ChainId.OPTIMISTIC_KOVAN]: {
USDC: USDC_OPTIMISTIC_KOVAN,
USDT: USDT_OPTIMISTIC_KOVAN,
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 @@ -222,6 +222,35 @@ export const DAI_OPTIMISM = new Token(
'Dai Stablecoin'
);

export const USDC_OPTIMISM_GOERLI = new Token(
ChainId.OPTIMISM_GOERLI,
'0x7E07E15D2a87A24492740D16f5bdF58c16db0c4E',
6,
'USDC',
'USD//C'
);
export const USDT_OPTIMISM_GOERLI = new Token(
ChainId.OPTIMISM_GOERLI,
'0x853eb4bA5D0Ba2B77a0A5329Fd2110d5CE149ECE',
6,
'USDT',
'Tether USD'
);
export const WBTC_OPTIMISM_GOERLI = new Token(
ChainId.OPTIMISM_GOERLI,
'0xe0a592353e81a94Db6E3226fD4A99F881751776a',
8,
'WBTC',
'Wrapped BTC'
);
export const DAI_OPTIMISM_GOERLI = new Token(
ChainId.OPTIMISM_GOERLI,
'0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1',
18,
'DAI',
'Dai Stablecoin'
);

export const USDC_OPTIMISTIC_KOVAN = new Token(
ChainId.OPTIMISTIC_KOVAN,
'0x3b8e53b3ab8e01fb57d0c9e893bc4d655aa67d84',
Expand Down Expand Up @@ -686,6 +715,8 @@ export const DAI_ON = (chainId: ChainId): Token => {
return DAI_KOVAN;
case ChainId.OPTIMISM:
return DAI_OPTIMISM;
case ChainId.OPTIMISM_GOERLI:
return DAI_OPTIMISM_GOERLI;
case ChainId.OPTIMISTIC_KOVAN:
return DAI_OPTIMISTIC_KOVAN;
case ChainId.ARBITRUM_ONE:
Expand Down Expand Up @@ -725,6 +756,8 @@ export const USDT_ON = (chainId: ChainId): Token => {
return USDT_KOVAN;
case ChainId.OPTIMISM:
return USDT_OPTIMISM;
case ChainId.OPTIMISM_GOERLI:
return USDT_OPTIMISM_GOERLI;
case ChainId.OPTIMISTIC_KOVAN:
return USDT_OPTIMISTIC_KOVAN;
case ChainId.ARBITRUM_ONE:
Expand Down Expand Up @@ -752,6 +785,8 @@ export const USDC_ON = (chainId: ChainId): Token => {
return USDC_KOVAN;
case ChainId.OPTIMISM:
return USDC_OPTIMISM;
case ChainId.OPTIMISM_GOERLI:
return USDC_OPTIMISM_GOERLI;
case ChainId.OPTIMISTIC_KOVAN:
return USDC_OPTIMISTIC_KOVAN;
case ChainId.ARBITRUM_ONE:
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 @@ -40,6 +40,7 @@ const BASES_TO_CHECK_TRADES_AGAINST: ChainTokenList = {
[ChainId.ARBITRUM_ONE]: [],
[ChainId.ARBITRUM_RINKEBY]: [],
[ChainId.ARBITRUM_GOERLI]: [],
[ChainId.OPTIMISM_GOERLI]: [],
[ChainId.OPTIMISTIC_KOVAN]: [],
[ChainId.POLYGON]: [],
[ChainId.POLYGON_MUMBAI]: [],
Expand Down
11 changes: 11 additions & 0 deletions src/providers/v3/static-subgraph-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
DAI_MAINNET,
DAI_MOONBEAM,
DAI_OPTIMISM,
DAI_OPTIMISM_GOERLI,
DAI_OPTIMISTIC_KOVAN,
DAI_POLYGON_MUMBAI,
DAI_RINKEBY_1,
Expand All @@ -42,6 +43,7 @@ import {
USDC_MAINNET,
USDC_MOONBEAM,
USDC_OPTIMISM,
USDC_OPTIMISM_GOERLI,
USDC_OPTIMISTIC_KOVAN,
USDC_POLYGON,
USDC_RINKEBY,
Expand All @@ -53,6 +55,7 @@ import {
USDT_KOVAN,
USDT_MAINNET,
USDT_OPTIMISM,
USDT_OPTIMISM_GOERLI,
USDT_OPTIMISTIC_KOVAN,
USDT_RINKEBY,
USDT_ROPSTEN,
Expand All @@ -63,6 +66,7 @@ import {
WBTC_MAINNET,
WBTC_MOONBEAM,
WBTC_OPTIMISM,
WBTC_OPTIMISM_GOERLI,
WBTC_OPTIMISTIC_KOVAN,
WETH_POLYGON,
WMATIC_POLYGON,
Expand Down Expand Up @@ -136,6 +140,13 @@ const BASES_TO_CHECK_TRADES_AGAINST: ChainTokenList = {
WRAPPED_NATIVE_CURRENCY[ChainId.ARBITRUM_GOERLI]!,
USDC_ARBITRUM_GOERLI,
],
[ChainId.OPTIMISM_GOERLI]: [
WRAPPED_NATIVE_CURRENCY[ChainId.OPTIMISM_GOERLI]!,
USDC_OPTIMISM_GOERLI,
DAI_OPTIMISM_GOERLI,
USDT_OPTIMISM_GOERLI,
WBTC_OPTIMISM_GOERLI,
],
[ChainId.OPTIMISTIC_KOVAN]: [
WRAPPED_NATIVE_CURRENCY[ChainId.OPTIMISTIC_KOVAN]!,
DAI_OPTIMISTIC_KOVAN,
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 @@ -352,6 +352,7 @@ export class AlphaRouter
} else {
switch (chainId) {
case ChainId.OPTIMISM:
case ChainId.OPTIMISM_GOERLI:
case ChainId.OPTIMISTIC_KOVAN:
this.onChainQuoteProvider = new OnChainQuoteProvider(
chainId,
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 @@ -8,6 +8,7 @@ export const DEFAULT_ROUTING_CONFIG_BY_CHAIN = (
switch (chainId) {
// Optimism
case ChainId.OPTIMISM:
case ChainId.OPTIMISM_GOERLI:
case ChainId.OPTIMISTIC_KOVAN:
return {
v2PoolSelection: {
Expand Down
10 changes: 10 additions & 0 deletions src/routers/alpha-router/functions/get-candidate-pools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
DAI_MAINNET,
DAI_MOONBEAM,
DAI_OPTIMISM,
DAI_OPTIMISM_GOERLI,
DAI_OPTIMISTIC_KOVAN,
DAI_POLYGON_MUMBAI,
DAI_RINKEBY_1,
Expand All @@ -34,19 +35,22 @@ import {
USDC_MAINNET,
USDC_MOONBEAM,
USDC_OPTIMISM,
USDC_OPTIMISM_GOERLI,
USDC_OPTIMISTIC_KOVAN,
USDC_POLYGON,
USDT_ARBITRUM,
USDT_ARBITRUM_RINKEBY,
USDT_BSC,
USDT_MAINNET,
USDT_OPTIMISM,
USDT_OPTIMISM_GOERLI,
USDT_OPTIMISTIC_KOVAN,
WBTC_ARBITRUM,
WBTC_GNOSIS,
WBTC_MAINNET,
WBTC_MOONBEAM,
WBTC_OPTIMISM,
WBTC_OPTIMISM_GOERLI,
WBTC_OPTIMISTIC_KOVAN,
WGLMR_MOONBEAM,
WMATIC_POLYGON,
Expand Down Expand Up @@ -144,6 +148,12 @@ const baseTokensByChain: { [chainId in ChainId]?: Token[] } = {
USDT_OPTIMISM,
WBTC_OPTIMISM,
],
[ChainId.OPTIMISM_GOERLI]: [
DAI_OPTIMISM_GOERLI,
USDC_OPTIMISM_GOERLI,
USDT_OPTIMISM_GOERLI,
WBTC_OPTIMISM_GOERLI,
],
[ChainId.OPTIMISTIC_KOVAN]: [
DAI_OPTIMISTIC_KOVAN,
USDC_OPTIMISTIC_KOVAN,
Expand Down
8 changes: 8 additions & 0 deletions src/routers/alpha-router/gas-models/gas-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
DAI_KOVAN,
DAI_MAINNET,
DAI_OPTIMISM,
DAI_OPTIMISM_GOERLI,
DAI_OPTIMISTIC_KOVAN,
DAI_POLYGON_MUMBAI,
DAI_RINKEBY_1,
Expand All @@ -25,6 +26,7 @@ import {
USDC_MAINNET,
USDC_MOONBEAM,
USDC_OPTIMISM,
USDC_OPTIMISM_GOERLI,
USDC_OPTIMISTIC_KOVAN,
USDC_POLYGON,
USDC_ROPSTEN,
Expand All @@ -35,6 +37,7 @@ import {
USDT_KOVAN,
USDT_MAINNET,
USDT_OPTIMISM,
USDT_OPTIMISM_GOERLI,
USDT_OPTIMISTIC_KOVAN,
USDT_ROPSTEN,
WBTC_GÖRLI,
Expand All @@ -60,6 +63,11 @@ export const usdGasTokensByChain: { [chainId in ChainId]?: Token[] } = {
[ChainId.RINKEBY]: [DAI_RINKEBY_1, DAI_RINKEBY_2],
[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.OPTIMISTIC_KOVAN]: [
DAI_OPTIMISTIC_KOVAN,
USDC_OPTIMISTIC_KOVAN,
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 @@ -13,6 +13,7 @@ export const BASE_SWAP_COST = (id: ChainId): BigNumber => {
case ChainId.RINKEBY:
case ChainId.GÖRLI:
case ChainId.OPTIMISM:
case ChainId.OPTIMISM_GOERLI:
case ChainId.OPTIMISTIC_KOVAN:
case ChainId.BSC:
case ChainId.KOVAN:
Expand Down Expand Up @@ -46,6 +47,7 @@ export const COST_PER_INIT_TICK = (id: ChainId): BigNumber => {
case ChainId.KOVAN:
return BigNumber.from(31000);
case ChainId.OPTIMISM:
case ChainId.OPTIMISM_GOERLI:
case ChainId.OPTIMISTIC_KOVAN:
return BigNumber.from(31000);
case ChainId.ARBITRUM_ONE:
Expand Down Expand Up @@ -74,6 +76,7 @@ export const COST_PER_HOP = (id: ChainId): BigNumber => {
case ChainId.KOVAN:
case ChainId.BSC:
case ChainId.OPTIMISM:
case ChainId.OPTIMISM_GOERLI:
case ChainId.OPTIMISTIC_KOVAN:
return BigNumber.from(80000);
case ChainId.ARBITRUM_ONE:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,11 @@ export class V3HeuristicGasModelFactory extends IOnChainGasModelFactory {
};
let l1Used = BigNumber.from(0);
let l1FeeInWei = BigNumber.from(0);
if (chainId == ChainId.OPTIMISM || chainId == ChainId.OPTIMISTIC_KOVAN) {
if (
chainId == ChainId.OPTIMISM ||
chainId == ChainId.OPTIMISTIC_KOVAN ||
chainId == ChainId.OPTIMISM_GOERLI
) {
[l1Used, l1FeeInWei] = this.calculateOptimismToL1SecurityFee(
route,
swapOptions,
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 @@ -38,6 +38,9 @@ export const BASES_TO_CHECK_TRADES_AGAINST = (
[ChainId.GÖRLI]: [WRAPPED_NATIVE_CURRENCY[ChainId.GÖRLI]!],
[ChainId.KOVAN]: [WRAPPED_NATIVE_CURRENCY[ChainId.KOVAN]!],
[ChainId.OPTIMISM]: [WRAPPED_NATIVE_CURRENCY[ChainId.OPTIMISM]!],
[ChainId.OPTIMISM_GOERLI]: [
WRAPPED_NATIVE_CURRENCY[ChainId.OPTIMISM_GOERLI]!,
],
[ChainId.OPTIMISTIC_KOVAN]: [
WRAPPED_NATIVE_CURRENCY[ChainId.OPTIMISTIC_KOVAN]!,
],
Expand Down
17 changes: 17 additions & 0 deletions src/util/addresses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@ const ARBITRUM_GOERLI_QUOTER_ADDRESSES =
const ARBITRUM_GOERLI_MULTICALL_ADDRESS =
'0x8260CB40247290317a4c062F3542622367F206Ee';

const OPTIMISM_GOERLI_V3_CORE_FACTORY_ADDRESSES =
'0xB656dA17129e7EB733A557f4EBc57B76CFbB5d10';
const OPTIMISM_GOERLI_QUOTER_ADDRESSES =
'0x9569CbA925c8ca2248772A9A4976A516743A246F';
const OPTIMISM_GOERLI_MULTICALL_ADDRESS =
'0x07F2D8a2a02251B62af965f22fC4744A5f96BCCd';

const BSC_V3_CORE_FACTORY_ADDRESSES =
'0x128Ce3A3D48f27CE35A3F810cF2cddD2f6879b13';
const BSC_QUOTER_ADDRESSES = '0xD00bD441CEF3623dC59B5D9b5EF96ee87b42Db42';
Expand All @@ -33,6 +40,7 @@ export const V3_CORE_FACTORY_ADDRESSES: AddressMap = {
...constructSameAddressMap(FACTORY_ADDRESS),
[ChainId.CELO]: CELO_V3_CORE_FACTORY_ADDRESSES,
[ChainId.CELO_ALFAJORES]: CELO_V3_CORE_FACTORY_ADDRESSES,
[ChainId.OPTIMISM_GOERLI]: OPTIMISM_GOERLI_V3_CORE_FACTORY_ADDRESSES,
[ChainId.ARBITRUM_GOERLI]: ARBITRUM_GOERLI_V3_CORE_FACTORY_ADDRESSES,
[ChainId.BSC]: BSC_V3_CORE_FACTORY_ADDRESSES,
// TODO: Gnosis + Moonbeam contracts to be deployed
Expand All @@ -42,6 +50,7 @@ export const QUOTER_V2_ADDRESSES: AddressMap = {
...constructSameAddressMap('0x61fFE014bA17989E743c5F6cB21bF9697530B21e'),
[ChainId.CELO]: CELO_QUOTER_ADDRESSES,
[ChainId.CELO_ALFAJORES]: CELO_QUOTER_ADDRESSES,
[ChainId.OPTIMISM_GOERLI]: OPTIMISM_GOERLI_QUOTER_ADDRESSES,
[ChainId.ARBITRUM_GOERLI]: ARBITRUM_GOERLI_QUOTER_ADDRESSES,
[ChainId.BSC]: BSC_QUOTER_ADDRESSES,
// TODO: Gnosis + Moonbeam contracts to be deployed
Expand All @@ -58,6 +67,7 @@ export const UNISWAP_MULTICALL_ADDRESSES: AddressMap = {
...constructSameAddressMap('0x1F98415757620B543A52E61c46B32eB19261F984'),
[ChainId.CELO]: CELO_MULTICALL_ADDRESS,
[ChainId.CELO_ALFAJORES]: CELO_MULTICALL_ADDRESS,
[ChainId.OPTIMISM_GOERLI]: OPTIMISM_GOERLI_MULTICALL_ADDRESS,
[ChainId.ARBITRUM_GOERLI]: ARBITRUM_GOERLI_MULTICALL_ADDRESS,
[ChainId.BSC]: BSC_MULTICALL_ADDRESS,
// TODO: Gnosis + Moonbeam contracts to be deployed
Expand Down Expand Up @@ -158,6 +168,13 @@ export const WETH9: {
'WETH',
'Wrapped Ether'
),
[ChainId.OPTIMISM_GOERLI]: new Token(
ChainId.OPTIMISM_GOERLI,
'0x4200000000000000000000000000000000000006',
18,
'WETH',
'Wrapped Ether'
),
[ChainId.OPTIMISTIC_KOVAN]: new Token(
ChainId.OPTIMISTIC_KOVAN,
'0x4200000000000000000000000000000000000006',
Expand Down
Loading

0 comments on commit b09f4a8

Please sign in to comment.