diff --git a/packages/asset-swapper/CHANGELOG.json b/packages/asset-swapper/CHANGELOG.json index 0151b92a72..bf66439cc4 100644 --- a/packages/asset-swapper/CHANGELOG.json +++ b/packages/asset-swapper/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "16.43.0", + "changes": [ + { + "note": "`UniswapV3` support for `Optimism`", + "pr": 385 + } + ] + }, { "version": "16.42.0", "changes": [ diff --git a/packages/asset-swapper/src/utils/market_operation_utils/constants.ts b/packages/asset-swapper/src/utils/market_operation_utils/constants.ts index 3c475e9a55..d12ef84bc8 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/constants.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/constants.ts @@ -61,6 +61,7 @@ function valueByChainId(rest: Partial<{ [key in ChainId]: T }>, defaultValue: [ChainId.Avalanche]: defaultValue, [ChainId.Fantom]: defaultValue, [ChainId.Celo]: defaultValue, + [ChainId.Optimism]: defaultValue, ...(rest || {}), }; } @@ -193,6 +194,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId( ERC20BridgeSource.SushiSwap, ERC20BridgeSource.MultiHop, ]), + [ChainId.Optimism]: new SourceFilters([ERC20BridgeSource.UniswapV3]), }, new SourceFilters([]), ); @@ -325,6 +327,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId( ERC20BridgeSource.SushiSwap, ERC20BridgeSource.MultiHop, ]), + [ChainId.Optimism]: new SourceFilters([ERC20BridgeSource.UniswapV3]), }, new SourceFilters([]), ); @@ -346,6 +349,7 @@ export const FEE_QUOTE_SOURCES_BY_CHAIN_ID = valueByChainId [ChainId.Avalanche]: [ERC20BridgeSource.Pangolin, ERC20BridgeSource.TraderJoe, ERC20BridgeSource.SushiSwap], [ChainId.Fantom]: [ERC20BridgeSource.SpiritSwap, ERC20BridgeSource.SpookySwap, ERC20BridgeSource.SushiSwap], [ChainId.Celo]: [ERC20BridgeSource.UbeSwap, ERC20BridgeSource.SushiSwap], + [ChainId.Optimism]: [ERC20BridgeSource.UniswapV3], }, [], ); @@ -521,6 +525,14 @@ export const FANTOM_TOKENS = { renBTC: '0xdbf31df14b66535af65aac99c32e9ea844e14501', }; +export const OPTIMISM_TOKENS = { + WETH: '0x4200000000000000000000000000000000000006', + USDC: '0x7f5c764cbc14f9669b88837ca1490cca17c31607', + USDT: '0x94b008aa00579c1307b0ef2c499ad98a8ce58e58', + DAI: '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', + WBTC: '0x68f180fcce6836688e9084f035309e29bf0a2095', +}; + export const CURVE_POOLS = { compound: '0xa2b47e3d5c44877cca798226b7b8118f9bfb7a56', // 0.Compound // 1.USDT is dead @@ -702,6 +714,7 @@ export const DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID = valueByChainId( ], [ChainId.Fantom]: [FANTOM_TOKENS.WFTM, FANTOM_TOKENS.WETH, FANTOM_TOKENS.DAI, FANTOM_TOKENS.USDC], [ChainId.Celo]: [CELO_TOKENS.mCUSD, CELO_TOKENS.WETH, CELO_TOKENS.WCELO], + [ChainId.Optimism]: [OPTIMISM_TOKENS.WETH, OPTIMISM_TOKENS.DAI, OPTIMISM_TOKENS.USDC], }, [], ); @@ -741,6 +754,9 @@ export const DEFAULT_TOKEN_ADJACENCY_GRAPH_BY_CHAIN_ID = valueByChainId( [ChainId.Avalanche]: getContractAddressesForChainOrThrow(ChainId.Avalanche).etherToken, [ChainId.Fantom]: getContractAddressesForChainOrThrow(ChainId.Fantom).etherToken, [ChainId.Celo]: getContractAddressesForChainOrThrow(ChainId.Celo).etherToken, + [ChainId.Optimism]: getContractAddressesForChainOrThrow(ChainId.Optimism).etherToken, }, NULL_ADDRESS, ); @@ -1714,6 +1731,10 @@ export const UNISWAPV3_CONFIG_BY_CHAIN_ID = valueByChainId( quoter: '0xb27308f9f90d607463bb33ea1bebb41c27ce5ab6', router: '0xe592427a0aece92de3edee1f18e0157c05861564', }, + [ChainId.Optimism]: { + quoter: '0xb27308f9f90d607463bb33ea1bebb41c27ce5ab6', + router: '0xe592427a0aece92de3edee1f18e0157c05861564', + }, }, { quoter: NULL_ADDRESS, router: NULL_ADDRESS }, ); diff --git a/packages/contract-addresses/CHANGELOG.json b/packages/contract-addresses/CHANGELOG.json index 025d0e393a..a589cd4bcb 100644 --- a/packages/contract-addresses/CHANGELOG.json +++ b/packages/contract-addresses/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "6.11.0", + "changes": [ + { + "note": "Add Optimism addresses", + "pr": 385 + } + ] + }, { "version": "6.10.0", "changes": [ diff --git a/packages/contract-addresses/addresses.json b/packages/contract-addresses/addresses.json index f24924f710..a58696ffb6 100644 --- a/packages/contract-addresses/addresses.json +++ b/packages/contract-addresses/addresses.json @@ -460,5 +460,47 @@ "fillQuoteTransformer": "0xa825d4d3c4d2820c52da69fcccf269b4081871f2", "positiveSlippageFeeTransformer": "0x9ffc7a79133ed5242777e40764777a6d5aab282c" } + }, + "10": { + "erc20Proxy": "0x0000000000000000000000000000000000000000", + "erc721Proxy": "0x0000000000000000000000000000000000000000", + "zrxToken": "0x0000000000000000000000000000000000000000", + "etherToken": "0x4200000000000000000000000000000000000006", + "exchangeV2": "0x0000000000000000000000000000000000000000", + "exchange": "0x0000000000000000000000000000000000000000", + "assetProxyOwner": "0x0000000000000000000000000000000000000000", + "zeroExGovernor": "0x0000000000000000000000000000000000000000", + "forwarder": "0x0000000000000000000000000000000000000000", + "coordinatorRegistry": "0x0000000000000000000000000000000000000000", + "coordinator": "0x0000000000000000000000000000000000000000", + "multiAssetProxy": "0x0000000000000000000000000000000000000000", + "staticCallProxy": "0x0000000000000000000000000000000000000000", + "erc1155Proxy": "0x0000000000000000000000000000000000000000", + "devUtils": "0x0000000000000000000000000000000000000000", + "zrxVault": "0x0000000000000000000000000000000000000000", + "staking": "0x0000000000000000000000000000000000000000", + "stakingProxy": "0x0000000000000000000000000000000000000000", + "erc20BridgeProxy": "0x0000000000000000000000000000000000000000", + "erc20BridgeSampler": "0x0000000000000000000000000000000000000000", + "chaiBridge": "0x0000000000000000000000000000000000000000", + "dydxBridge": "0x0000000000000000000000000000000000000000", + "godsUnchainedValidator": "0x0000000000000000000000000000000000000000", + "broker": "0x0000000000000000000000000000000000000000", + "chainlinkStopLimit": "0x0000000000000000000000000000000000000000", + "maximumGasPrice": "0x0000000000000000000000000000000000000000", + "dexForwarderBridge": "0x0000000000000000000000000000000000000000", + "exchangeProxyGovernor": "0x6d506b2847df0c6f04d2628da1adaf4d8fb2e81b", + "exchangeProxy": "0xdef1abe32c034e558cdd535791643c58a13acc10", + "exchangeProxyTransformerDeployer": "0x3a539ed6bd42de8fbaf3899fb490c792e153d647", + "exchangeProxyFlashWallet": "0xa3128d9b7cca7d5af29780a56abeec12b05a6740", + "exchangeProxyLiquidityProviderSandbox": "0x0000000000000000000000000000000000000000", + "zrxTreasury": "0x0000000000000000000000000000000000000000", + "transformers": { + "wethTransformer": "0x02ce7af6520e2862f961f5d7eda746642865179c", + "payTakerTransformer": "0x085d10a34f14f6a631ea8ff7d016782ee3ffaa11", + "affiliateFeeTransformer": "0x55cf1d7535250db75bf0190493f55781ee583553", + "fillQuoteTransformer": "0x3543ef833d28b7e983c293856561f21a7f089f1d", + "positiveSlippageFeeTransformer": "0xb11e14565dfbeb702dea9bc0cb47f1a8b32f4783" + } } } diff --git a/packages/contract-addresses/src/index.ts b/packages/contract-addresses/src/index.ts index d0a1fb2359..d40aa3a786 100644 --- a/packages/contract-addresses/src/index.ts +++ b/packages/contract-addresses/src/index.ts @@ -55,6 +55,7 @@ export enum ChainId { Avalanche = 43114, Fantom = 250, Celo = 42220, + Optimism = 10, } /**