From d744cf535dcf8c4ebea202aac13aab1bbe70f367 Mon Sep 17 00:00:00 2001 From: codingsh Date: Mon, 25 Apr 2022 14:26:48 +0200 Subject: [PATCH 01/31] feat(network): integrate astar network --- cspell.json | 2 + .../Wallet/GasSetting/Prior1559GasSetting.tsx | 1 + .../mask/src/plugins/EVM/assets/astar.png | Bin 0 -> 114350 bytes packages/mask/src/plugins/EVM/constants.ts | 10 + packages/mask/src/plugins/FindTruman/base.ts | 1 + .../SNSAdaptor/RedPacketCreateNew.tsx | 4 +- packages/mask/src/plugins/RedPacket/base.ts | 1 + packages/mask/src/plugins/Tips/base.ts | 1 + .../src/plugins/Trader/apis/trader/index.ts | 3 + .../mask/src/plugins/Trader/constants/0x.ts | 1 + .../src/plugins/Trader/constants/arthswap.ts | 13 + .../mask/src/plugins/Trader/constants/dodo.ts | 1 + .../src/plugins/Trader/constants/index.ts | 1 + .../src/plugins/Trader/constants/openocean.ts | 1 + packages/mask/src/plugins/Trader/pipes.ts | 1 + .../src/plugins/Trader/trader/0x/useTrade.ts | 1 + .../Trader/trader/useAllTradeComputed.ts | 8 + .../Trader/trader/useGetTradeContext.ts | 15 + .../plugins/Trader/trader/useTradeCallback.ts | 2 + .../mask/src/plugins/Trader/types/trader.ts | 1 + .../GasSettingDialog/Prior1559GasSetting.tsx | 3 +- packages/public-api/src/web.ts | 2 + packages/web3-constants/compile-constants.ts | 1 + packages/web3-constants/evm/aave.json | 9 +- packages/web3-constants/evm/airdrop.json | 3 +- packages/web3-constants/evm/artblocks.json | 3 +- packages/web3-constants/evm/coingecko.json | 6 +- .../web3-constants/evm/coinmarketcap.json | 3 +- packages/web3-constants/evm/cryptoartai.json | 9 +- packages/web3-constants/evm/debank.json | 3 +- packages/web3-constants/evm/dhedge.json | 6 +- packages/web3-constants/evm/ethereum.json | 12 +- packages/web3-constants/evm/explorer.json | 6 +- packages/web3-constants/evm/gitcoin.json | 12 +- .../web3-constants/evm/good-ghosting.json | 6 +- packages/web3-constants/evm/ito.json | 21 +- packages/web3-constants/evm/lbp.json | 3 +- packages/web3-constants/evm/lido.json | 6 +- packages/web3-constants/evm/mask-box.json | 6 +- .../web3-constants/evm/nft-red-packet.json | 6 +- packages/web3-constants/evm/openocean.json | 3 +- packages/web3-constants/evm/opensea-api.json | 9 +- packages/web3-constants/evm/pooltogether.json | 6 +- packages/web3-constants/evm/red-packet.json | 18 +- packages/web3-constants/evm/rpc.json | 6 +- .../evm/space-station-galaxy.json | 6 +- .../evm/token-asset-base-url.json | 3 +- packages/web3-constants/evm/token-list.json | 3 +- packages/web3-constants/evm/token.json | 350 +++++++++++++----- packages/web3-constants/evm/trader.json | 253 ++++++++++--- packages/web3-constants/evm/trending.json | 9 +- packages/web3-constants/evm/zerion.json | 6 +- packages/web3-shared/evm/assets/chains.json | 18 + packages/web3-shared/evm/pipes/index.ts | 3 + packages/web3-shared/evm/types/index.ts | 4 + .../web3-shared/evm/utils/chainDetailed.ts | 2 + 56 files changed, 671 insertions(+), 222 deletions(-) create mode 100644 packages/mask/src/plugins/EVM/assets/astar.png create mode 100644 packages/mask/src/plugins/Trader/constants/arthswap.ts diff --git a/cspell.json b/cspell.json index 19852b5cee60..2771836a0952 100644 --- a/cspell.json +++ b/cspell.json @@ -25,7 +25,9 @@ "arbitrum", "areth", "artblocks", + "arthswap", "arweave", + "astar", "avalanche", "avax", "betanet", diff --git a/packages/mask/src/extension/popups/pages/Wallet/GasSetting/Prior1559GasSetting.tsx b/packages/mask/src/extension/popups/pages/Wallet/GasSetting/Prior1559GasSetting.tsx index fcbc87fb0df9..bee67983c90d 100644 --- a/packages/mask/src/extension/popups/pages/Wallet/GasSetting/Prior1559GasSetting.tsx +++ b/packages/mask/src/extension/popups/pages/Wallet/GasSetting/Prior1559GasSetting.tsx @@ -97,6 +97,7 @@ const minGasPriceOfChain: ChainIdOptionalRecord = { [ChainId.BSC]: pow10(9).multipliedBy(5), // 5 Gwei [ChainId.Conflux]: pow10(9).multipliedBy(5), // 5 Gwei [ChainId.Matic]: pow10(9).multipliedBy(30), // 30 Gwei + [ChainId.Astar]: pow10(9).multipliedBy(5), // 5 Gwei } export const Prior1559GasSetting = memo(() => { diff --git a/packages/mask/src/plugins/EVM/assets/astar.png b/packages/mask/src/plugins/EVM/assets/astar.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1a25913b807722cdf6c842c3e6f483cba2380b GIT binary patch literal 114350 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

8I00vEKCY`;Z%+3 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 literal 0 HcmV?d00001 diff --git a/packages/mask/src/plugins/EVM/constants.ts b/packages/mask/src/plugins/EVM/constants.ts index 791f19849232..749dc87ee860 100644 --- a/packages/mask/src/plugins/EVM/constants.ts +++ b/packages/mask/src/plugins/EVM/constants.ts @@ -175,6 +175,16 @@ export const PLUGIN_NETWORKS: Web3Plugin.NetworkDescriptor[] = [ iconColor: 'rgb(112, 212, 74)', isMainnet: true, }, + { + ID: `${PLUGIN_ID}_astar`, + networkSupporterPluginID: PLUGIN_ID, + chainId: ChainId.Astar, + type: NetworkType.Astar, + name: 'Conflux', + icon: new URL('./assets/astar.png', import.meta.url), + iconColor: 'rgb(36, 150, 238)', + isMainnet: true, + }, ] export const PLUGIN_PROVIDERS: Web3Plugin.ProviderDescriptor[] = [ { diff --git a/packages/mask/src/plugins/FindTruman/base.ts b/packages/mask/src/plugins/FindTruman/base.ts index b5b340c83f6d..416e8cf8fc4b 100644 --- a/packages/mask/src/plugins/FindTruman/base.ts +++ b/packages/mask/src/plugins/FindTruman/base.ts @@ -26,6 +26,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Avalanche, ChainId.Aurora, ChainId.Conflux, + ChainId.Astar, ], }, [NetworkPluginID.PLUGIN_FLOW]: { supportedChainIds: [] }, diff --git a/packages/mask/src/plugins/RedPacket/SNSAdaptor/RedPacketCreateNew.tsx b/packages/mask/src/plugins/RedPacket/SNSAdaptor/RedPacketCreateNew.tsx index cdc94626b9c1..3a14fe202800 100644 --- a/packages/mask/src/plugins/RedPacket/SNSAdaptor/RedPacketCreateNew.tsx +++ b/packages/mask/src/plugins/RedPacket/SNSAdaptor/RedPacketCreateNew.tsx @@ -74,7 +74,9 @@ export function RedPacketCreateNew(props: RedPacketFormProps & { state: readonly ), children: , sx: { p: 0 }, - disabled: ![ChainId.Mainnet, ChainId.Matic, ChainId.BSC, ChainId.Conflux].includes(chainId), + disabled: ![ChainId.Mainnet, ChainId.Matic, ChainId.BSC, ChainId.Conflux, ChainId.Astar].includes( + chainId, + ), }, ], state, diff --git a/packages/mask/src/plugins/RedPacket/base.ts b/packages/mask/src/plugins/RedPacket/base.ts index 6895af863cc4..59be0fe2f002 100644 --- a/packages/mask/src/plugins/RedPacket/base.ts +++ b/packages/mask/src/plugins/RedPacket/base.ts @@ -30,6 +30,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Avalanche, ChainId.Aurora, ChainId.Conflux, + ChainId.Astar, ], }, [NetworkPluginID.PLUGIN_FLOW]: { supportedChainIds: [] }, diff --git a/packages/mask/src/plugins/Tips/base.ts b/packages/mask/src/plugins/Tips/base.ts index c055f214de2a..fb23be9aac82 100644 --- a/packages/mask/src/plugins/Tips/base.ts +++ b/packages/mask/src/plugins/Tips/base.ts @@ -29,6 +29,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Avalanche, ChainId.Aurora, ChainId.Conflux, + ChainId.Astar, ], }, }, diff --git a/packages/mask/src/plugins/Trader/apis/trader/index.ts b/packages/mask/src/plugins/Trader/apis/trader/index.ts index 8b1c44229c17..d16da7f30621 100644 --- a/packages/mask/src/plugins/Trader/apis/trader/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trader/index.ts @@ -52,11 +52,14 @@ export async function getAvailableTraderProviders(chainId: ChainId) { return [TradeProvider.SUSHISWAP] case NetworkType.Aurora: return [TradeProvider.DODO, TradeProvider.WANNASWAP, TradeProvider.TRISOLARIS] + case NetworkType.Astar: + return [TradeProvider.ARTHSWAP] case NetworkType.Boba: case NetworkType.Fuse: case NetworkType.Metis: case NetworkType.Optimistic: case NetworkType.Conflux: + case NetworkType.Astar: console.error('To be implement network: ', networkType) return [] default: diff --git a/packages/mask/src/plugins/Trader/constants/0x.ts b/packages/mask/src/plugins/Trader/constants/0x.ts index c1e3a34a1da7..f58f2a722da5 100644 --- a/packages/mask/src/plugins/Trader/constants/0x.ts +++ b/packages/mask/src/plugins/Trader/constants/0x.ts @@ -15,6 +15,7 @@ export const ZRX_BASE_URL: Record = { [NetworkType.Metis]: '', [NetworkType.Optimistic]: '', [NetworkType.Conflux]: '', + [NetworkType.Astar]: '', } export const ZRX_AFFILIATE_ADDRESS = '0x934B510D4C9103E6a87AEf13b816fb080286D649' diff --git a/packages/mask/src/plugins/Trader/constants/arthswap.ts b/packages/mask/src/plugins/Trader/constants/arthswap.ts new file mode 100644 index 000000000000..248bcc59da7e --- /dev/null +++ b/packages/mask/src/plugins/Trader/constants/arthswap.ts @@ -0,0 +1,13 @@ +import { ChainId, USDC, USDT, WNATIVE, WNATIVE_ONLY } from '@masknet/web3-shared-evm' +import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' + +/** + * Some tokens can only be swapped via certain pairs, + * so we override the list of bases that are considered for these tokens. + */ +export const ARTHSWAP_CUSTOM_BASES: ERC20TokenCustomizedBase = {} + +export const ARTHSWAP_BASE_AGAINST_TOKENS: ERC20AgainstToken = { + ...WNATIVE_ONLY, + [ChainId.Astar]: [WNATIVE, USDC, USDT].map((x) => x[ChainId.Astar]), +} diff --git a/packages/mask/src/plugins/Trader/constants/dodo.ts b/packages/mask/src/plugins/Trader/constants/dodo.ts index 912c4af0615d..937716934672 100644 --- a/packages/mask/src/plugins/Trader/constants/dodo.ts +++ b/packages/mask/src/plugins/Trader/constants/dodo.ts @@ -17,4 +17,5 @@ export const networkNames: Record = { [NetworkType.Metis]: '', [NetworkType.Optimistic]: '', [NetworkType.Conflux]: '', + [NetworkType.Astar]: '', } diff --git a/packages/mask/src/plugins/Trader/constants/index.ts b/packages/mask/src/plugins/Trader/constants/index.ts index 9f89799a8a2d..f28a0811d291 100644 --- a/packages/mask/src/plugins/Trader/constants/index.ts +++ b/packages/mask/src/plugins/Trader/constants/index.ts @@ -13,5 +13,6 @@ export * from './traderjoe' export * from './pangolindex' export * from './wannaswap' export * from './trisolaris' +export * from './arthswap' export * from './mdex' export type { ERC20TokenCustomizedBase, ERC20AgainstToken } from './types' diff --git a/packages/mask/src/plugins/Trader/constants/openocean.ts b/packages/mask/src/plugins/Trader/constants/openocean.ts index 5749ad41b6e6..dc75ddcc6dde 100644 --- a/packages/mask/src/plugins/Trader/constants/openocean.ts +++ b/packages/mask/src/plugins/Trader/constants/openocean.ts @@ -17,4 +17,5 @@ export const networkNames: Record = { [NetworkType.Metis]: '', [NetworkType.Optimistic]: '', [NetworkType.Conflux]: '', + [NetworkType.Astar]: '', } diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index d04f1b973f57..76909fca65ad 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -41,6 +41,7 @@ export const resolveTradeProviderName = createLookupTableResolver { throw new Error(`Unknown provider type: ${tradeProvider}`) diff --git a/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts b/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts index d401ce7f1ae1..c3a7f9d62741 100644 --- a/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts +++ b/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts @@ -35,6 +35,7 @@ export function getNativeTokenLabel(networkType: NetworkType) { case NetworkType.Avalanche: case NetworkType.Optimistic: case NetworkType.Conflux: + case NetworkType.Astar: return NATIVE_TOKEN_ADDRESS default: safeUnreachable(networkType) diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index e8f998637286..9b390966901f 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -206,6 +206,13 @@ export function useAllTradeComputed( traderEstimateGas: mdexEstimateGas, } = useUniswapV2Like(tradeProviders, TradeProvider.MDEX, inputAmount_, inputToken, outputToken) + // Arthswap + const { + trader_: arthswap_, + trader: arthswap, + traderEstimateGas: arthswapEstimateGas, + } = useUniswapV2Like(tradeProviders, TradeProvider.ARTHSWAP, inputAmount_, inputToken, outputToken) + const allTradeResult = [ { provider: TradeProvider.UNISWAP_V2, ...uniswapV2_, value: uniswapV2, gas: uniswapV2EstimateGas }, { provider: TradeProvider.SUSHISWAP, ...sushiSwap_, value: sushiSwap, gas: sushiSwapEstimateGas }, @@ -223,6 +230,7 @@ export function useAllTradeComputed( { provider: TradeProvider.WANNASWAP, ...wannaswap_, value: wannaswap, gas: wannaSwapEstimateGas }, { provider: TradeProvider.TRISOLARIS, ...trisolaris_, value: trisolaris, gas: trisolarisEstimateGas }, { provider: TradeProvider.MDEX, ...mdex_, value: mdex, gas: mdexEstimateGas }, + { provider: TradeProvider.ARTHSWAP, ...arthswap_, value: arthswap, gas: arthswapEstimateGas }, ] return nativeToken_.value diff --git a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts index 940a289cb781..6f626483b4f0 100644 --- a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts @@ -23,6 +23,8 @@ import { TRISOLARIS_CUSTOM_BASES, MDEX_BASE_AGAINST_TOKENS, MDEX_CUSTOM_BASES, + ARTHSWAP_BASE_AGAINST_TOKENS, + ARTHSWAP_CUSTOM_BASES, } from '../constants' import { unreachable } from '@dimensiondev/kit' import { TargetChainIdContext } from './useTargetChainIdContext' @@ -175,6 +177,19 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: MDEX_CUSTOM_BASES, } + case TradeProvider.ARTHSWAP: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.ARTHSWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.ARTHSWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.ARTHSWAP_ROUTER_ADDRESS, + SPENDER_CONTRACT_ADDRESS: DEX_TRADE.ARTHSWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.ARTHSWAP_FACTORY_ADDRESS, + AGAINST_TOKENS: ARTHSWAP_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: ARTHSWAP_CUSTOM_BASES, + } case TradeProvider.ZRX: return { TYPE: tradeProvider, diff --git a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts index 1f45f7b22380..a47b3cc75547 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts @@ -102,6 +102,8 @@ export function useTradeCallback( return uniswapV2Like case TradeProvider.MDEX: return uniswapV2Like + case TradeProvider.ARTHSWAP: + return uniswapV2Like case TradeProvider.ZRX: return zrx case TradeProvider.BALANCER: diff --git a/packages/mask/src/plugins/Trader/types/trader.ts b/packages/mask/src/plugins/Trader/types/trader.ts index ca44b2391919..4c52bbacc179 100644 --- a/packages/mask/src/plugins/Trader/types/trader.ts +++ b/packages/mask/src/plugins/Trader/types/trader.ts @@ -76,6 +76,7 @@ export enum ZrxTradePool { Trisolaris = 'Trisolaris', WannaSwap = 'WannaSwap', Mdex = 'Mdex', + Arthswap = 'ArthSwap', } export interface TradeComputed { diff --git a/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/Prior1559GasSetting.tsx b/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/Prior1559GasSetting.tsx index 725775c21af7..9c769ee03c39 100644 --- a/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/Prior1559GasSetting.tsx +++ b/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/Prior1559GasSetting.tsx @@ -23,12 +23,13 @@ import { WalletRPC } from '../../../Wallet/messages' import { useNativeTokenPrice } from '../../hooks/useTokenPrice' import type { GasSettingProps } from './types' import { useGasSettingStyles } from './useGasSettingStyles' -import { pow10 } from '@masknet/web3-shared-base' +import { pow10, scale10 } from '@masknet/web3-shared-base' const minGasPriceOfChain: ChainIdOptionalRecord = { [ChainId.BSC]: pow10(9).multipliedBy(5), // 5 Gwei [ChainId.Conflux]: pow10(9).multipliedBy(5), // 5 Gwei [ChainId.Matic]: pow10(9).multipliedBy(30), // 30 Gwei + [ChainId.Astar]: scale10(9).multipliedBy(5), // 5 Gwei } export const Prior1559GasSetting: FC = memo( diff --git a/packages/public-api/src/web.ts b/packages/public-api/src/web.ts index 0a580c37f672..136f5d8fc4e6 100644 --- a/packages/public-api/src/web.ts +++ b/packages/public-api/src/web.ts @@ -183,6 +183,7 @@ export enum TradeProvider { TRADERJOE = 13, PANGOLIN = 14, MDEX = 15, + ARTHSWAP = 16, } /** Supported language settings */ @@ -222,6 +223,7 @@ export enum NetworkType { Metis = 'Metis', Optimistic = 'Optimistic', Conflux = 'Conflux', + Astar = 'Astar', } export enum ProviderType { diff --git a/packages/web3-constants/compile-constants.ts b/packages/web3-constants/compile-constants.ts index e9462b36f726..fabf1ab0ed62 100644 --- a/packages/web3-constants/compile-constants.ts +++ b/packages/web3-constants/compile-constants.ts @@ -60,6 +60,7 @@ compileConstants(path.join(__dirname, 'evm'), [ 'Aurora', 'Aurora_Testnet', 'Conflux', + 'Astar', ]) compileConstants(path.join(__dirname, 'solana'), ['Mainnet', 'Testnet', 'Devnet']) diff --git a/packages/web3-constants/evm/aave.json b/packages/web3-constants/evm/aave.json index 4894405bcf10..0692c607e580 100644 --- a/packages/web3-constants/evm/aave.json +++ b/packages/web3-constants/evm/aave.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "AAVE_LENDING_POOL_ADDRESSES_PROVIDER_CONTRACT_ADDRESS": { "Mainnet": "0xb53c1a33016b2dc2ff3653530bff1848a515c8c5", @@ -39,7 +40,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "AAVE_PROTOCOL_DATA_PROVIDER_CONTRACT_ADDRESS": { "Mainnet": "0x057835Ad21a177dbdd3090bB1CAE03EaCF78Fc6d", @@ -60,6 +62,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/airdrop.json b/packages/web3-constants/evm/airdrop.json index 28ca1f00abf1..29f333dc2b49 100644 --- a/packages/web3-constants/evm/airdrop.json +++ b/packages/web3-constants/evm/airdrop.json @@ -18,6 +18,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/artblocks.json b/packages/web3-constants/evm/artblocks.json index 0ac17edfdcae..faa87671bef2 100644 --- a/packages/web3-constants/evm/artblocks.json +++ b/packages/web3-constants/evm/artblocks.json @@ -18,6 +18,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/coingecko.json b/packages/web3-constants/evm/coingecko.json index 20dbb8910035..c7073a297d66 100644 --- a/packages/web3-constants/evm/coingecko.json +++ b/packages/web3-constants/evm/coingecko.json @@ -18,7 +18,8 @@ "Fantom": "fantom", "Aurora": "aurora", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "astar" }, "COIN_ID": { "Mainnet": "ethereum", @@ -39,6 +40,7 @@ "Fantom": "fantom", "Aurora": "ethereum", "Aurora_Testnet": "", - "Conflux": "conflux-token" + "Conflux": "conflux-token", + "Astar": "astar-token" } } diff --git a/packages/web3-constants/evm/coinmarketcap.json b/packages/web3-constants/evm/coinmarketcap.json index 44f07aaa4b88..49f2947cd0dd 100644 --- a/packages/web3-constants/evm/coinmarketcap.json +++ b/packages/web3-constants/evm/coinmarketcap.json @@ -18,6 +18,7 @@ "Fantom": "3513", "Aurora": "1313161554", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "12885" } } diff --git a/packages/web3-constants/evm/cryptoartai.json b/packages/web3-constants/evm/cryptoartai.json index 8819260601ef..dde0e52b8765 100644 --- a/packages/web3-constants/evm/cryptoartai.json +++ b/packages/web3-constants/evm/cryptoartai.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "ARTIST_ACCEPTING_BIDS_V2": { "Mainnet": "0x78C889749f29D2965a76Ede3BBb232A9729Ccf0b", @@ -39,7 +40,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "CANFT_MARKET": { "Mainnet": "0x72d081953957723e540780a0C6bA31725469238E", @@ -60,6 +62,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/debank.json b/packages/web3-constants/evm/debank.json index f4ba365239c1..499bcf09ea01 100644 --- a/packages/web3-constants/evm/debank.json +++ b/packages/web3-constants/evm/debank.json @@ -18,6 +18,7 @@ "Fantom": "ftm", "Aurora": "aurora", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "astar" } } diff --git a/packages/web3-constants/evm/dhedge.json b/packages/web3-constants/evm/dhedge.json index 9aa7b2dbd671..81356c9e7a96 100644 --- a/packages/web3-constants/evm/dhedge.json +++ b/packages/web3-constants/evm/dhedge.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "API_URL": { "Mainnet": "https://api-v2.dhedge.org/graphql", @@ -39,6 +40,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/ethereum.json b/packages/web3-constants/evm/ethereum.json index 9915418599d4..3ff6c146d896 100644 --- a/packages/web3-constants/evm/ethereum.json +++ b/packages/web3-constants/evm/ethereum.json @@ -18,7 +18,8 @@ "Fantom": "0xc119574d5fb333f5ac018658d4d8b5035e16bf39", "Aurora": "0xC119574D5Fb333F5AC018658D4d8b5035E16bf39", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MULTICALL_ADDRESS": { "Mainnet": "0x1F98415757620B543A52E61c46B32eB19261F984", @@ -39,7 +40,8 @@ "Fantom": "0x913975af2Bb8a6Be4100D7dc5e9765B77F6A5d6c", "Aurora": "0x6cc1b1058F9153358278C35E0b2D382f1585854B", "Aurora_Testnet": "", - "Conflux": "0x19f179d7e0d7d9f9d5386afff64271d98a91615b" + "Conflux": "0x19f179d7e0d7d9f9d5386afff64271d98a91615b", + "Astar": "0x5FA712069F62c62eA73a7F8e2A4bdec11c2BfeF7" }, "ENS_REGISTRAR_ADDRESS": { "Mainnet": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e", @@ -60,7 +62,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "ENS_REVERSE_RECORDS_ADDRESS": { "Mainnet": "0x3671aE578E63FdF66ad4F3E12CC0c0d71Ac7510C", @@ -81,6 +84,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/explorer.json b/packages/web3-constants/evm/explorer.json index 27b6689b8f7f..6c42a755b602 100644 --- a/packages/web3-constants/evm/explorer.json +++ b/packages/web3-constants/evm/explorer.json @@ -18,7 +18,8 @@ "Fantom": ["AST4WWPNEYDURUXG2GH32JZMYWEFDP999S"], "Aurora": [], "Aurora_Testnet": [], - "Conflux": [] + "Conflux": [], + "Astar": [] }, "EXPLORER_API": { "Mainnet": "https://api.etherscan.io/api", @@ -39,6 +40,7 @@ "Fantom": "https://api.ftmscan.com/api", "Aurora": "https://explorer.mainnet.aurora.dev/api", "Aurora_Testnet": "https://explorer.testnet.aurora.dev/api", - "Conflux": "https://evmapi.confluxscan.net/api" + "Conflux": "https://evmapi.confluxscan.net/api", + "Astar": "" } } diff --git a/packages/web3-constants/evm/gitcoin.json b/packages/web3-constants/evm/gitcoin.json index c26772f90dd9..cda537c9e4cb 100644 --- a/packages/web3-constants/evm/gitcoin.json +++ b/packages/web3-constants/evm/gitcoin.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "BULK_CHECKOUT_ADDRESS": { "Mainnet": "0x7d655c57f71464B6f83811C55D84009Cd9f5221C", @@ -39,7 +40,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "GITCOIN_ETH_ADDRESS": { "Mainnet": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", @@ -60,7 +62,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "GITCOIN_TIP_PERCENTAGE": { "Mainnet": 5, @@ -81,6 +84,7 @@ "Fantom": 0, "Aurora": 0, "Aurora_Testnet": 0, - "Conflux": 0 + "Conflux": 0, + "Astar": 0 } } diff --git a/packages/web3-constants/evm/good-ghosting.json b/packages/web3-constants/evm/good-ghosting.json index 9ab7b3a1ba84..0d044afbb138 100644 --- a/packages/web3-constants/evm/good-ghosting.json +++ b/packages/web3-constants/evm/good-ghosting.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "GOOD_GHOSTING_INCENTIVES_CONTRACT_ADDRESS": { "Mainnet": "", @@ -39,6 +40,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/ito.json b/packages/web3-constants/evm/ito.json index 7a56f24e5d98..7a425fdae9e5 100644 --- a/packages/web3-constants/evm/ito.json +++ b/packages/web3-constants/evm/ito.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MASK_ITO_CONTRACT_ADDRESS": { "Mainnet": "0x86812da3A623ab9606976078588b80C315E55FA3", @@ -39,7 +40,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "ITO2_CONTRACT_ADDRESS": { "Mainnet": "0xc2CFbF22d6Dc87D0eE18d38d73733524c109Ff46", @@ -60,7 +62,8 @@ "Fantom": "0x981be454a930479d92C91a0092D204b64845A5D6", "Aurora": "0x2cf91AD8C175305EBe6970Bd8f81231585EFbd77", "Aurora_Testnet": "0xdcA6F476EebCDE8FE8b072e3fC80dBC28dC209b3", - "Conflux": "0x066804d9123bf2609ed4a4a40b1177a9c5a9ed51" + "Conflux": "0x066804d9123bf2609ed4a4a40b1177a9c5a9ed51", + "Astar": "" }, "ITO2_CONTRACT_CREATION_BLOCK_HEIGHT": { "Mainnet": 12766513, @@ -81,7 +84,8 @@ "Fantom": 25071597, "Aurora": 57350598, "Aurora_Testnet": 77919102, - "Conflux": 37722805 + "Conflux": 37722805, + "Astar": 0 }, "DEFAULT_QUALIFICATION_ADDRESS": { "Mainnet": "0x81b6ae377e360dcad63611846a2516f4ba8c88ac", @@ -102,7 +106,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "DEFAULT_QUALIFICATION2_ADDRESS": { "Mainnet": "0x4dC5f343Fe57E4fbDA1B454d125D396A3181272c", @@ -123,7 +128,8 @@ "Fantom": "0x83D6b366f21e413f214EB077D5378478e71a5eD2", "Aurora": "0x578a7Fee5f0D8CEc7d00578Bf37374C5b95C4b98", "Aurora_Testnet": "", - "Conflux": "0x05ee315e407c21a594f807d61d6cc11306d1f149" + "Conflux": "0x05ee315e407c21a594f807d61d6cc11306d1f149", + "Astar": "" }, "SUBGRAPH_URL": { "Mainnet": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-mainnet", @@ -144,6 +150,7 @@ "Fantom": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-fantom", "Aurora": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-aurora", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/lbp.json b/packages/web3-constants/evm/lbp.json index 4e867a9c5741..51f58dee9edd 100644 --- a/packages/web3-constants/evm/lbp.json +++ b/packages/web3-constants/evm/lbp.json @@ -18,6 +18,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/lido.json b/packages/web3-constants/evm/lido.json index 0a3c06476274..98d6e00f1a1d 100644 --- a/packages/web3-constants/evm/lido.json +++ b/packages/web3-constants/evm/lido.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "LIDO_REFERRAL_ADDRESS": { "Mainnet": "0x934b510d4c9103e6a87aef13b816fb080286d649", @@ -39,6 +40,7 @@ "Fantom": "0x934b510d4c9103e6a87aef13b816fb080286d649", "Aurora": "0x934b510d4c9103e6a87aef13b816fb080286d649", "Aurora_Testnet": "0x934b510d4c9103e6a87aef13b816fb080286d649", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/mask-box.json b/packages/web3-constants/evm/mask-box.json index d1bc8e10c0f8..44a91720b872 100644 --- a/packages/web3-constants/evm/mask-box.json +++ b/packages/web3-constants/evm/mask-box.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "0xf5056B96ab242C566002852d0b98ce0BcDf1af51", "Aurora_Testnet": "0xB4D669bc117735FdA44e90e52795132187705B21", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MASK_BOX_CONTRACT_FROM_BLOCK": { "Mainnet": 13687866, @@ -39,6 +40,7 @@ "Fantom": 0, "Aurora": 57259004, "Aurora_Testnet": 77919118, - "Conflux": 0 + "Conflux": 0, + "Astar": 0 } } diff --git a/packages/web3-constants/evm/nft-red-packet.json b/packages/web3-constants/evm/nft-red-packet.json index b0457542eee0..4ac6a0d7c633 100644 --- a/packages/web3-constants/evm/nft-red-packet.json +++ b/packages/web3-constants/evm/nft-red-packet.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "0x05ee315E407C21a594f807D61d6CC11306D1F149", "Aurora_Testnet": "0x97369fEE7db34E0BfE47861f2ec44b4378d13eB4", - "Conflux": "0x5b966f3a32db9c180843bcb40267a66b73e4f022" + "Conflux": "0x5b966f3a32db9c180843bcb40267a66b73e4f022", + "Astar": "" }, "SUBGRAPH_URL": { "Mainnet": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-nft-red-packet-mainnet", @@ -39,6 +40,7 @@ "Fantom": "", "Aurora": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-nft-red-packet-aurora", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/openocean.json b/packages/web3-constants/evm/openocean.json index a0004c674b66..653986711b8c 100644 --- a/packages/web3-constants/evm/openocean.json +++ b/packages/web3-constants/evm/openocean.json @@ -18,6 +18,7 @@ "Fantom": "0x934B510D4C9103E6a87AEf13b816fb080286D649", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/opensea-api.json b/packages/web3-constants/evm/opensea-api.json index eec5cbdb1162..393e4c8e5035 100644 --- a/packages/web3-constants/evm/opensea-api.json +++ b/packages/web3-constants/evm/opensea-api.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "GET_SINGLE_ASSET_URL": { "Mainnet": "https://api.opensea.io/api/v1/asset", @@ -39,7 +40,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "GET_ASSETS_URL": { "Mainnet": "https://api.opensea.io/api/v1/assets", @@ -60,6 +62,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/pooltogether.json b/packages/web3-constants/evm/pooltogether.json index ea3096e69ea4..49e39b6eecf9 100644 --- a/packages/web3-constants/evm/pooltogether.json +++ b/packages/web3-constants/evm/pooltogether.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MASK_POOL_ADDRESS": { "Mainnet": "", @@ -39,6 +40,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/red-packet.json b/packages/web3-constants/evm/red-packet.json index 3fc873e50bb9..d44b9219add1 100644 --- a/packages/web3-constants/evm/red-packet.json +++ b/packages/web3-constants/evm/red-packet.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "HAPPY_RED_PACKET_ADDRESS_V2": { "Mainnet": "0x8D8912E1237F9FF3EF661F32743CFB276E052F98", @@ -39,7 +40,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "HAPPY_RED_PACKET_ADDRESS_V3": { "Mainnet": "", @@ -60,7 +62,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "HAPPY_RED_PACKET_ADDRESS_V4": { "Mainnet": "0xaBBe1101FD8fa5847c452A6D70C8655532B03C33", @@ -81,7 +84,8 @@ "Fantom": "0x578a7Fee5f0D8CEc7d00578Bf37374C5b95C4b98", "Aurora": "0x19f179D7e0D7d9F9d5386afFF64271D98A91615B", "Aurora_Testnet": "0xdB93cCd481012bB5D1E2c8d0aF7C5f2940c00fdC", - "Conflux": "0x96c7d011cdfd467f551605f0f5fce279f86f4186" + "Conflux": "0x96c7d011cdfd467f551605f0f5fce279f86f4186", + "Astar": "" }, "HAPPY_RED_PACKET_ADDRESS_V4_BLOCK_HEIGHT": { "Mainnet": 12939427, @@ -102,7 +106,8 @@ "Fantom": 25112473, "Aurora": 57552338, "Aurora_Testnet": 77918765, - "Conflux": 37670572 + "Conflux": 37670572, + "Astar": 0 }, "SUBGRAPH_URL": { "Mainnet": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-mainnet", @@ -123,6 +128,7 @@ "Fantom": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-fantom", "Aurora": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-aurora", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/rpc.json b/packages/web3-constants/evm/rpc.json index 5bd061c414bb..f0b4c823c5cd 100644 --- a/packages/web3-constants/evm/rpc.json +++ b/packages/web3-constants/evm/rpc.json @@ -60,7 +60,8 @@ "Fantom": ["https://rpc.ftm.tools/"], "Aurora": ["https://mainnet.aurora.dev"], "Aurora_Testnet": ["https://testnet.aurora.dev"], - "Conflux": ["https://evm.confluxrpc.com"] + "Conflux": ["https://evm.confluxrpc.com"], + "Astar": [] }, "RPC_WEIGHTS": { "Mainnet": [0, 1, 2, 3, 4], @@ -81,6 +82,7 @@ "Fantom": [0, 0, 0, 0, 0], "Aurora": [0, 0, 0, 0, 0], "Aurora_Testnet": [0, 0, 0, 0, 0], - "Conflux": [0, 0, 0, 0, 0] + "Conflux": [0, 0, 0, 0, 0], + "Astar": [] } } diff --git a/packages/web3-constants/evm/space-station-galaxy.json b/packages/web3-constants/evm/space-station-galaxy.json index 28bd2f7c41ed..288c940f4423 100644 --- a/packages/web3-constants/evm/space-station-galaxy.json +++ b/packages/web3-constants/evm/space-station-galaxy.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "SUBGRAPH_URL": { "Mainnet": "", @@ -39,6 +40,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/token-asset-base-url.json b/packages/web3-constants/evm/token-asset-base-url.json index 79acb11afe4d..a5187cd568ee 100644 --- a/packages/web3-constants/evm/token-asset-base-url.json +++ b/packages/web3-constants/evm/token-asset-base-url.json @@ -48,6 +48,7 @@ "Fantom": [], "Aurora": [], "Aurora_Testnet": [], - "Conflux": [] + "Conflux": [], + "Astar": [] } } diff --git a/packages/web3-constants/evm/token-list.json b/packages/web3-constants/evm/token-list.json index 15193e2a83fb..b62ed61ae57d 100644 --- a/packages/web3-constants/evm/token-list.json +++ b/packages/web3-constants/evm/token-list.json @@ -18,6 +18,7 @@ "Fantom": ["https://tokens.r2d2.to/latest/250/tokens.json"], "Aurora": ["https://tokens.r2d2.to/latest/1313161554/tokens.json"], "Aurora_Testnet": [], - "Conflux": ["https://tokens.r2d2.to/latest/1030/tokens.json"] + "Conflux": ["https://tokens.r2d2.to/latest/1030/tokens.json"], + "Astar": [] } } diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index e6cdc468f1a2..f94e1e821a1c 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -18,7 +18,8 @@ "Fantom": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", "Aurora": "0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "0xaeaaf0e2c81af264101b9129c00f4440ccf0f720" }, "LDO_stETH_ADDRESS": { "Mainnet": "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", @@ -39,7 +40,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "USDC_ADDRESS": { "Mainnet": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", @@ -60,7 +62,8 @@ "Fantom": "0x04068da6c83afcfa0e13ba15a6696662335d5b75", "Aurora": "0xb12bfca5a55806aaf64e99521918a4bf0fc40802", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98" }, "USDT_ADDRESS": { "Mainnet": "0xdAC17F958D2ee523a2206206994597C13D831ec7", @@ -81,7 +84,8 @@ "Fantom": "", "Aurora": "0x4988a896b1227218e4a686fde5eabdcabd91571f", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "0x3795C36e7D12A8c252A20C5a7B455f7c57b60283" }, "aUSDT_ADDRESS": { "Mainnet": "0x71fc860F7D3A592A4a98740e39dB31d25db65ae8", @@ -102,7 +106,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "HUSD_ADDRESS": { "Mainnet": "0xdf574c24545e5ffecb9a659c229253d4111d87e1", @@ -123,7 +128,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "BUSD_ADDRESS": { "Mainnet": "0x4fabb145d64652a948d72533023f6e7a623c7c53", @@ -144,7 +150,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "COMP_ADDRESS": { "Mainnet": "0xc00e94Cb662C3520282E6f5717214004A7f26888", @@ -165,7 +172,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "EASY_ADDRESS": { "Mainnet": "", @@ -186,7 +194,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MKR_ADDRESS": { "Mainnet": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", @@ -207,7 +216,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MASK_ADDRESS": { "Mainnet": "0x69af81e73A73B40adF4f3d4223Cd9b1ECE623074", @@ -228,7 +238,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MSKA_ADDRESS": { "Mainnet": "", @@ -249,7 +260,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MSKB_ADDRESS": { "Mainnet": "", @@ -270,7 +282,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MSKC_ADDRESS": { "Mainnet": "", @@ -291,7 +304,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MSKD_ADDRESS": { "Mainnet": "", @@ -312,7 +326,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MSKE_ADDRESS": { "Mainnet": "", @@ -333,7 +348,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "DAI_ADDRESS": { "Mainnet": "0x6B175474E89094C44Da98b954EedeAC495271d0F", @@ -354,7 +370,8 @@ "Fantom": "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", "Aurora": "0xe3520349f477a5f6eb06107066048508498a291b", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "AMPL_ADDRESS": { "Mainnet": "0xD46bA6D942050d489DBd938a2C909A5d5039A161", @@ -375,7 +392,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "OKB_ADDRESS": { "Mainnet": "0x75231F58b43240C9718Dd58B4967c5114342a86c", @@ -396,7 +414,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UST_ADDRESS": { "Mainnet": "0xa47c8bf37f92aBed4A126BDA807A7b7498661acD", @@ -417,7 +436,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "eUSDC_ADDRESS": { "Mainnet": "", @@ -438,7 +458,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "eUSDT_ADDRESS": { "Mainnet": "", @@ -459,7 +480,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "fUSDT_ADDRESS": { "Mainnet": "", @@ -480,7 +502,8 @@ "Fantom": "0x049d68029688eAbF473097a2fC38ef61633A3C7A", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "eDAI_ADDRESS": { "Mainnet": "", @@ -501,7 +524,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UNITOKEN_ADDRESS": { "Mainnet": "", @@ -522,7 +546,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "TT01_ADDRESS": { "Mainnet": "", @@ -543,7 +568,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "TT02_ADDRESS": { "Mainnet": "", @@ -564,7 +590,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "QUICK_ADDRESS": { "Mainnet": "", @@ -585,7 +612,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "WANNA_ADDRESS": { "Mainnet": "", @@ -606,7 +634,8 @@ "Fantom": "", "Aurora": "0x7faA64Faf54750a2E3eE621166635fEAF406Ab22", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "WBTC_ADDRESS": { "Mainnet": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", @@ -627,7 +656,8 @@ "Fantom": "0x321162Cd933E2Be498Cd2267a90534A804051b11", "Aurora": "0xf4eb217ba2454613b15dbdea6e5f22276410e89e", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "IGG_ADDRESS": { "Mainnet": "", @@ -648,7 +678,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "OM_ADDRESS": { "Mainnet": "", @@ -669,7 +700,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "SUSHI_ADDRESS": { "Mainnet": "0x6B3595068778DD592e39A122f4f5a5cF09C90fE2", @@ -690,7 +722,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "YAM_ADDRESS": { "Mainnet": "0x0e2298E3B3390e3b945a5456fBf59eCc3f55DA16", @@ -711,7 +744,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "RUNE_ADDRESS": { "Mainnet": "0x3155BA85D5F96b2d030a4966AF206230e46849cb", @@ -732,7 +766,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "YFI_ADDRESS": { "Mainnet": "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", @@ -753,7 +788,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "sUSD_ADDRESS": { "Mainnet": "0x57ab1ec28d129707052df4df418d58a2d46d5f51", @@ -774,7 +810,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "BTCB_ADDRESS": { "Mainnet": "", @@ -795,7 +832,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "CAKE_ADDRESS": { "Mainnet": "", @@ -816,7 +854,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "maUSDC_ADDRESS": { "Mainnet": "", @@ -837,7 +876,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "stETH_ADDRESS": { "Mainnet": "0xDFe66B14D37C77F4E9b180cEb433d1b164f0281D", @@ -858,7 +898,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "NFTX_ADDRESS": { "Mainnet": "0x87d73E916D7057945c9BcD8cdd94e42A6F47f776", @@ -879,7 +920,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "cUSD_ADDRESS": { "Mainnet": "", @@ -900,7 +942,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "cEUR_ADDRESS": { "Mainnet": "", @@ -921,7 +964,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "xTRI_ADDRESS": { "Mainnet": "", @@ -942,7 +986,8 @@ "Fantom": "", "Aurora": "0x802119e4e253D5C19aA06A5d567C5a41596D6803", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "JOE_ADDRESS": { "Mainnet": "", @@ -963,7 +1008,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "PNG_ADDRESS": { "Mainnet": "", @@ -984,7 +1030,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "ETHER_ADDRESS": { "Mainnet": "", @@ -1005,7 +1052,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "NATIVE_TOKEN_ADDRESS": { "Mainnet": "0x0000000000000000000000000000000000000000", @@ -1026,7 +1074,8 @@ "Fantom": "0x0000000000000000000000000000000000000000", "Aurora": "0x0000000000000000000000000000000000000000", "Aurora_Testnet": "", - "Conflux": "0x0000000000000000000000000000000000000000" + "Conflux": "0x0000000000000000000000000000000000000000", + "Astar": "" }, "WETH_ADDRESS": { "Mainnet": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", @@ -1047,7 +1096,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "0x81ECac0D6Be0550A00FF064a4f9dd2400585FE9c" }, "aWETH_ADDRESS": { "Mainnet": "0x030bA81f1c18d280636F32af80b9AAd02Cf0854e", @@ -1068,7 +1118,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "ZRX_ADDRESS": { "Mainnet": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", @@ -1089,7 +1140,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aZRX_ADDRESS": { "Mainnet": "0xDf7FF54aAcAcbFf42dfe29DD6144A69b629f8C9e", @@ -1110,7 +1162,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UNI_ADDRESS": { "Mainnet": "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", @@ -1131,7 +1184,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aUNI_ADDRESS": { "Mainnet": "0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1", @@ -1152,7 +1206,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "LIDO_ADDRESS": { "Mainnet": "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", @@ -1173,7 +1228,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "AAVE_ADDRESS": { "Mainnet": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", @@ -1194,7 +1250,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aAAVE_ADDRESS": { "Mainnet": "0xFFC97d72E13E01096502Cb8Eb52dEe56f74DAD7B", @@ -1215,7 +1272,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "BAT_ADDRESS": { "Mainnet": "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", @@ -1236,7 +1294,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aBAT_ADDRESS": { "Mainnet": "0x05Ec93c0365baAeAbF7AefFb0972ea7ECdD39CF1", @@ -1257,7 +1316,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "ENJ_ADDRESS": { "Mainnet": "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", @@ -1278,7 +1338,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aENJ_ADDRESS": { "Mainnet": "0xaC6Df26a590F08dcC95D5a4705ae8abbc88509Ef", @@ -1299,7 +1360,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "KNC_ADDRESS": { "Mainnet": "0xdd974D5C2e2928deA5F71b9825b8b646686BD200", @@ -1320,7 +1382,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aKNC_ADDRESS": { "Mainnet": "0x39C6b3e42d6A679d7D776778Fe880BC9487C2EDA", @@ -1341,7 +1404,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "LINK_ADDRESS": { "Mainnet": "0x514910771AF9Ca656af840dff83E8264EcF986CA", @@ -1362,7 +1426,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aLINK_ADDRESS": { "Mainnet": "0xa06bC25B5805d5F8d82847D191Cb4Af5A3e873E0", @@ -1383,7 +1448,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MANA_ADDRESS": { "Mainnet": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", @@ -1404,7 +1470,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aMANA_ADDRESS": { "Mainnet": "0xa685a61171bb30d4072B338c80Cb7b2c865c873E", @@ -1425,7 +1492,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "REN_ADDRESS": { "Mainnet": "0x408e41876cCCDC0F92210600ef50372656052a38", @@ -1446,7 +1514,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aREN_ADDRESS": { "Mainnet": "0xCC12AbE4ff81c9378D670De1b57F8e0Dd228D77a", @@ -1467,7 +1536,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "SNX_ADDRESS": { "Mainnet": "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", @@ -1488,7 +1558,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aSNX_ADDRESS": { "Mainnet": "0x35f6B052C598d933D69A4EEC4D04c73A191fE6c2", @@ -1509,7 +1580,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "TUSD_ADDRESS": { "Mainnet": "0x0000000000085d4780B73119b644AE5ecd22b376", @@ -1530,7 +1602,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aTUSD_ADDRESS": { "Mainnet": "0x101cc05f4A51C0319f570d5E146a8C625198e636", @@ -1551,7 +1624,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "CRV_ADDRESS": { "Mainnet": "0xD533a949740bb3306d119CC777fa900bA034cd52", @@ -1572,7 +1646,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aCRV_ADDRESS": { "Mainnet": "0x8dAE6Cb04688C62d939ed9B68d32Bc62e49970b1", @@ -1593,7 +1668,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "GUSD_ADDRESS": { "Mainnet": "0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd", @@ -1614,7 +1690,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aGUSD_ADDRESS": { "Mainnet": "0xD37EE7e4f452C6638c96536e68090De8cBcdb583", @@ -1635,7 +1712,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "BAL_ADDRESS": { "Mainnet": "0xba100000625a3754423978a60c9317c58a424e3D", @@ -1656,7 +1734,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aBAL_ADDRESS": { "Mainnet": "0x272F97b7a56a387aE942350bBC7Df5700f8a4576", @@ -1677,7 +1756,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "xSUSHI_ADDRESS": { "Mainnet": "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272", @@ -1698,7 +1778,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aXSUSHI_ADDRESS": { "Mainnet": "0xF256CC7847E919FAc9B808cC216cAc87CCF2f47a", @@ -1719,7 +1800,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "renFIL_ADDRESS": { "Mainnet": "0xD5147bc8e386d91Cc5DBE72099DAC6C9b99276F5", @@ -1740,7 +1822,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aRENFIL_ADDRESS": { "Mainnet": "0x514cd6756CCBe28772d4Cb81bC3156BA9d1744aa", @@ -1761,7 +1844,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "RAI_ADDRESS": { "Mainnet": "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919", @@ -1782,7 +1866,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aRAI_ADDRESS": { "Mainnet": "0xc9BC48c72154ef3e5425641a3c747242112a46AF", @@ -1803,7 +1888,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "USDP_ADDRESS": { "Mainnet": "0x8E870D67F660D95d5be530380D0eC0bd388289E1", @@ -1824,7 +1910,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aUSDP_ADDRESS": { "Mainnet": "0x2e8F4bdbE3d47d7d7DE490437AeA9915D930F1A3", @@ -1845,7 +1932,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "DPI_ADDRESS": { "Mainnet": "0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b", @@ -1866,7 +1954,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aDPI_ADDRESS": { "Mainnet": "0x6F634c6135D2EBD550000ac92F494F9CB8183dAe", @@ -1887,7 +1976,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "FRAX_ADDRESS": { "Mainnet": "0x853d955aCEf822Db058eb8505911ED77F175b99e", @@ -1908,7 +1998,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aFRAX_ADDRESS": { "Mainnet": "0xd4937682df3C8aEF4FE912A96A74121C0829E664", @@ -1929,7 +2020,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "FEI_ADDRESS": { "Mainnet": "0x956F47F50A910163D8BF957Cf5846D573E7f87CA", @@ -1950,7 +2042,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aFEI_ADDRESS": { "Mainnet": "0x683923dB55Fead99A79Fa01A27EeC3cB19679cC3", @@ -1971,7 +2064,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aWBTC_ADDRESS": { "Mainnet": "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656", @@ -1992,7 +2086,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aYFI_ADDRESS": { "Mainnet": "0x5165d24277cD063F5ac44Efd447B27025e888f37", @@ -2013,7 +2108,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aBUSD_ADDRESS": { "Mainnet": "0xA361718326c15715591c299427c62086F69923D9", @@ -2034,7 +2130,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aDAI_ADDRESS": { "Mainnet": "0x028171bCA77440897B824Ca71D1c56caC55b68A3", @@ -2055,7 +2152,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aMKR_ADDRESS": { "Mainnet": "0xc713e5E149D5D0715DcD1c156a020976e7E56B88", @@ -2076,7 +2174,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aSUSD_ADDRESS": { "Mainnet": "0x6C5024Cd4F8A59110119C56f8933403A539555EB", @@ -2097,7 +2196,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aUSDC_ADDRESS": { "Mainnet": "0xBcca60bB61934080951369a648Fb03DF4F96263C", @@ -2118,7 +2218,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "aAMPL_ADDRESS": { "Mainnet": "0x1E6bb68Acec8fefBD87D192bE09bb274170a0548", @@ -2139,6 +2240,51 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "0x0000000000000000000000000000000000000000" + "Conflux": "0x0000000000000000000000000000000000000000", + "Astar": "" + }, + "SDN_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "" + }, + "ASTR_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/trader.json b/packages/web3-constants/evm/trader.json index e8cac04eca46..dde0b7a72481 100644 --- a/packages/web3-constants/evm/trader.json +++ b/packages/web3-constants/evm/trader.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UNISWAP_V2_FACTORY_ADDRESS": { "Mainnet": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", @@ -39,7 +40,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UNISWAP_V2_THEGRAPH": { "Mainnet": "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2", @@ -60,7 +62,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UNISWAP_V2_INIT_CODE_HASH": { "Mainnet": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", @@ -81,7 +84,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UNISWAP_SWAP_ROUTER_ADDRESS": { "Mainnet": "0xe592427a0aece92de3edee1f18e0157c05861564", @@ -102,7 +106,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UNISWAP_V3_FACTORY_ADDRESS": { "Mainnet": "0x1F98431c8aD98523631AE4a59f267346ea31F984", @@ -123,7 +128,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UNISWAP_V3_QUOTER_ADDRESS": { "Mainnet": "0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6", @@ -144,7 +150,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UNISWAP_V3_THEGRAPH": { "Mainnet": "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3", @@ -165,7 +172,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UNISWAP_V3_INIT_CODE_HASH": { "Mainnet": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", @@ -186,7 +194,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "SUSHISWAP_ROUTER_ADDRESS": { "Mainnet": "0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F", @@ -207,7 +216,8 @@ "Fantom": "0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506", "Aurora": "0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "SUSHISWAP_FACTORY_ADDRESS": { "Mainnet": "0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac", @@ -228,7 +238,8 @@ "Fantom": "0xc35DADB65012eC5796536bD9864eD8773aBc74C4", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "SUSHISWAP_THEGRAPH": { "Mainnet": "https://api.thegraph.com/subgraphs/name/zippoxer/sushiswap-subgraph-fork", @@ -249,7 +260,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "SUSHISWAP_INIT_CODE_HASH": { "Mainnet": "0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303", @@ -270,7 +282,8 @@ "Fantom": "0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "SASHIMISWAP_ROUTER_ADDRESS": { "Mainnet": "0xe4fe6a45f354e845f954cddee6084603cedb9410", @@ -291,7 +304,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "SASHIMISWAP_FACTORY_ADDRESS": { "Mainnet": "0xF028F723ED1D0fE01cC59973C49298AA95c57472", @@ -312,7 +326,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "SASHIMISWAP_THEGRAPH": { "Mainnet": "https://api.thegraph.com/subgraphs/name/sashimiproject/sashimi", @@ -333,7 +348,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "SASHIMISWAP_INIT_CODE_HASH": { "Mainnet": "0xb465bbe4edb8c9b0da8ff0b2b36ce0065de9fcd5a33f32c6856ea821779c8b72", @@ -354,7 +370,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "QUICKSWAP_ROUTER_ADDRESS": { "Mainnet": "", @@ -375,7 +392,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "QUICKSWAP_FACTORY_ADDRESS": { "Mainnet": "", @@ -396,7 +414,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "QUICKSWAP_THEGRAPH": { "Mainnet": "", @@ -417,7 +436,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "QUICKSWAP_INIT_CODE_HASH": { "Mainnet": "", @@ -438,7 +458,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "PANCAKESWAP_ROUTER_ADDRESS": { "Mainnet": "", @@ -459,7 +480,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "PANCAKESWAP_FACTORY_ADDRESS": { "Mainnet": "", @@ -480,7 +502,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "PANCAKESWAP_THEGRAPH": { "Mainnet": "", @@ -501,7 +524,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "PANCAKESWAP_INIT_CODE_HASH": { "Mainnet": "", @@ -522,7 +546,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "BALANCER_ETH_ADDRESS": { "Mainnet": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", @@ -543,7 +568,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "BALANCER_EXCHANGE_PROXY_ADDRESS": { "Mainnet": "0x3E66B66Fd1d0b02fDa6C811Da9E0547970DB2f21", @@ -564,7 +590,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "BALANCER_POOLS_URL": { "Mainnet": "https://ipfs.fleek.co/ipns/balancer-bucket.storage.fleek.co/balancer-exchange/pools", @@ -585,7 +612,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "DODO_ETH_ADDRESS": { "Mainnet": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", @@ -606,7 +634,8 @@ "Fantom": "", "Aurora": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "DODO_EXCHANGE_PROXY_ADDRESS": { "Mainnet": "0xCB859eA579b28e02B87A1FDE08d087ab9dbE5149", @@ -627,7 +656,8 @@ "Fantom": "", "Aurora": "0x335aC99bb3E51BDbF22025f092Ebc1Cf2c5cC619", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "BANCOR_ETH_ADDRESS": { "Mainnet": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", @@ -648,7 +678,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "BANCOR_EXCHANGE_PROXY_ADDRESS": { "Mainnet": "0x2F9EC37d6CcFFf1caB21733BdaDEdE11c823cCB0", @@ -669,7 +700,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "TRADERJOE_ROUTER_ADDRESS": { "Mainnet": "", @@ -690,7 +722,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "TRADERJOE_FACTORY_ADDRESS": { "Mainnet": "", @@ -711,7 +744,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "TRADERJOE_THEGRAPH": { "Mainnet": "https://api.thegraph.com/subgraphs/name/traderjoe-xyz/exchange", @@ -732,7 +766,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "TRADERJOE_INIT_CODE_HASH": { "Mainnet": "", @@ -753,7 +788,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "OPENOCEAN_ETH_ADDRESS": { "Mainnet": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", @@ -774,7 +810,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "OPENOCEAN_EXCHANGE_PROXY_ADDRESS": { "Mainnet": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64", @@ -795,7 +832,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "PANGOLIN_ROUTER_ADDRESS": { "Mainnet": "", @@ -816,7 +854,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "PANGOLIN_FACTORY_ADDRESS": { "Mainnet": "", @@ -837,7 +876,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "PANGOLIN_THEGRAPH": { "Mainnet": "", @@ -858,7 +898,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "PANGOLIN_INIT_CODE_HASH": { "Mainnet": "", @@ -879,7 +920,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "WANNASWAP_ROUTER_V2_ADDRESS": { "Mainnet": "", @@ -900,7 +942,8 @@ "Fantom": "", "Aurora": "0xa3a1eF5Ae6561572023363862e238aFA84C72ef5", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "WANNASWAP_ROUTER_ADDRESS": { "Mainnet": "", @@ -921,7 +964,8 @@ "Fantom": "", "Aurora": "0x8f1E0Cf0f9f269Bc977C38635E560aa5b0E63323", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "WANNASWAP_FACTORY_ADDRESS": { "Mainnet": "", @@ -942,7 +986,8 @@ "Fantom": "", "Aurora": "0x7928D4FeA7b2c90C732c10aFF59cf403f0C38246", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "WANNASWAP_THEGRAPH": { "Mainnet": "", @@ -963,7 +1008,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "WANNASWAP_INIT_CODE_HASH": { "Mainnet": "", @@ -984,7 +1030,8 @@ "Fantom": "", "Aurora": "0xa06b8b0642cf6a9298322d0c8ac3c68c291ca24dc66245cf23aa2abc33b57e21", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "TRISOLARIS_ROUTER_ADDRESS": { "Mainnet": "", @@ -1005,7 +1052,8 @@ "Fantom": "", "Aurora": "0x2CB45Edb4517d5947aFdE3BEAbF95A582506858B", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "TRISOLARIS_FACTORY_ADDRESS": { "Mainnet": "", @@ -1026,7 +1074,8 @@ "Fantom": "", "Aurora": "0xc66F594268041dB60507F00703b152492fb176E7", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "TRISOLARIS_THEGRAPH": { "Mainnet": "", @@ -1047,7 +1096,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "TRISOLARIS_INIT_CODE_HASH": { "Mainnet": "", @@ -1068,7 +1118,8 @@ "Fantom": "", "Aurora": "0x754e1d90e536e4c1df81b7f030f47b4ca80c87120e145c294f098c83a6cb5ace", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MDEX_ROUTER_ADDRESS": { "Mainnet": "0x74119c3bca85bEA0538A62319a79b4a372590B47", @@ -1089,7 +1140,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MDEX_FACTORY_ADDRESS": { "Mainnet": "0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8", @@ -1110,7 +1162,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MDEX_THEGRAPH": { "Mainnet": "", @@ -1131,7 +1184,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "MDEX_INIT_CODE_HASH": { "Mainnet": "0x8ecc069c645df696f2ca5116ab459c5c2889f299e73c1b208aaa3cdd7d110b16", @@ -1152,6 +1206,95 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" + }, + "ARTHSWAP_ROUTER_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "0xE915D2393a08a00c5A463053edD31bAe2199b9e7" + }, + "ARTHSWAP_FACTORY_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "0xA9473608514457b4bF083f9045fA63ae5810A03E" + }, + "ARTHSWAP_THEGRAPH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "" + }, + "ARTHSWAP_INIT_CODE_HASH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "0x613b36de6401276e4d938ad0db4063490e66bb3ab2e4aec17cab78a15ea7a0b6" } } diff --git a/packages/web3-constants/evm/trending.json b/packages/web3-constants/evm/trending.json index 4848e30aa5d4..a626e15e8bc5 100644 --- a/packages/web3-constants/evm/trending.json +++ b/packages/web3-constants/evm/trending.json @@ -18,7 +18,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "UNISWAP_V2_HEALTH_URL": { "Mainnet": "https://api.thegraph.com/index-node/graphql", @@ -39,7 +40,8 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" }, "ETHEREUM_BLOCKS_SUBGRAPH_URL": { "Mainnet": "https://api.thegraph.com/subgraphs/name/blocklytics/ethereum-blocks", @@ -60,6 +62,7 @@ "Fantom": "", "Aurora": "", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/zerion.json b/packages/web3-constants/evm/zerion.json index 7ccce157682d..fb15a1cd4e9d 100644 --- a/packages/web3-constants/evm/zerion.json +++ b/packages/web3-constants/evm/zerion.json @@ -18,7 +18,8 @@ "Fantom": "fantom-assets", "Aurora": "aurora-assets", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "astar-assets" }, "TRANSACTIONS_SCOPE_NAME": { "Mainnet": "transactions", @@ -39,6 +40,7 @@ "Fantom": "fantom-transactions", "Aurora": "aurora-transactions", "Aurora_Testnet": "", - "Conflux": "" + "Conflux": "", + "Astar": "astar-transactions" } } diff --git a/packages/web3-shared/evm/assets/chains.json b/packages/web3-shared/evm/assets/chains.json index 7e8b9f9c89d7..37317ef4a83d 100644 --- a/packages/web3-shared/evm/assets/chains.json +++ b/packages/web3-shared/evm/assets/chains.json @@ -2857,5 +2857,23 @@ "shortName": "Conflux", "chainId": 1030, "networkId": 1030 + }, + { + "name": "Astar", + "chain": "Astar", + "network": "mainnet", + "rpc": ["https://evm.astar.network"], + "faucets": [], + "features": [], + "nativeCurrency": { + "name": "Astar", + "symbol": "Astar", + "decimals": 18, + "logoURI": "https://static.debank.com/image/chain/logo_url/astar/398c7e0014bdada3d818367a7273fabe.png" + }, + "infoURL": "https://astar.subscan.io/", + "shortName": "Astar", + "chainId": 592, + "networkId": 592 } ] diff --git a/packages/web3-shared/evm/pipes/index.ts b/packages/web3-shared/evm/pipes/index.ts index 9e247a3caf95..8ab2c30d885d 100644 --- a/packages/web3-shared/evm/pipes/index.ts +++ b/packages/web3-shared/evm/pipes/index.ts @@ -97,6 +97,7 @@ export const resolveNetworkAddressPrefix = createLookupTableResolver [NetworkType.Fantom]: 'Fantom', [NetworkType.Aurora]: 'Aurora', [NetworkType.Conflux]: 'Conflux', + [NetworkType.Astar]: 'Astar', }, 'Unknown', ) @@ -148,6 +150,7 @@ export const resolveChainColor = createLookupTableResolver( [ChainId.Aurora]: 'rgb(112, 212, 74)', [ChainId.Conflux]: 'rgb(24, 163, 138)', [ChainId.Aurora_Testnet]: 'rgb(112, 212, 74)', + [ChainId.Astar]: 'rgb(36, 150, 238)', }, 'rgb(214, 217, 220)', ) diff --git a/packages/web3-shared/evm/types/index.ts b/packages/web3-shared/evm/types/index.ts index 5a061e31366c..0b544c04c7c7 100644 --- a/packages/web3-shared/evm/types/index.ts +++ b/packages/web3-shared/evm/types/index.ts @@ -73,6 +73,9 @@ export enum ChainId { // Conflux Conflux = 1030, + + // Astar + Astar = 592, } export enum LockStatus { @@ -660,6 +663,7 @@ export enum NetworkType { Metis = 'Metis', Optimistic = 'Optimistic', Conflux = 'Conflux', + Astar = 'Astar', } export enum ProviderType { diff --git a/packages/web3-shared/evm/utils/chainDetailed.ts b/packages/web3-shared/evm/utils/chainDetailed.ts index 9c0ca1669814..071e36d197a2 100644 --- a/packages/web3-shared/evm/utils/chainDetailed.ts +++ b/packages/web3-shared/evm/utils/chainDetailed.ts @@ -96,6 +96,7 @@ export const getChainIdFromNetworkType = createLookupTableResolver = { [NetworkType.Metis]: 'Metis', [NetworkType.Optimistic]: 'Optimistic', [NetworkType.Conflux]: 'Conflux', + [NetworkType.Astar]: 'Astar', } export function getNetworkTypeFromChainId(chainId: ChainId, value?: boolean) { const chainDetailed = getChainDetailed(chainId) From c7690ebadf3b81e6bcea8fc0c2777f7b0cfda928 Mon Sep 17 00:00:00 2001 From: codingsh Date: Mon, 25 Apr 2022 15:16:48 +0200 Subject: [PATCH 02/31] chore(astar): change explorer infos --- packages/web3-constants/evm/explorer.json | 2 +- packages/web3-shared/evm/assets/chains.json | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/web3-constants/evm/explorer.json b/packages/web3-constants/evm/explorer.json index 6c42a755b602..495576815c07 100644 --- a/packages/web3-constants/evm/explorer.json +++ b/packages/web3-constants/evm/explorer.json @@ -41,6 +41,6 @@ "Aurora": "https://explorer.mainnet.aurora.dev/api", "Aurora_Testnet": "https://explorer.testnet.aurora.dev/api", "Conflux": "https://evmapi.confluxscan.net/api", - "Astar": "" + "Astar": "https://blockscout.com/astar/api" } } diff --git a/packages/web3-shared/evm/assets/chains.json b/packages/web3-shared/evm/assets/chains.json index 37317ef4a83d..400588244fa3 100644 --- a/packages/web3-shared/evm/assets/chains.json +++ b/packages/web3-shared/evm/assets/chains.json @@ -2871,9 +2871,16 @@ "decimals": 18, "logoURI": "https://static.debank.com/image/chain/logo_url/astar/398c7e0014bdada3d818367a7273fabe.png" }, - "infoURL": "https://astar.subscan.io/", + "infoURL": "https://blockscout.com/astar/", "shortName": "Astar", "chainId": 592, - "networkId": 592 + "networkId": 592, + "explorers": [ + { + "name": "blockscout", + "url": "https://blockscout.com/astar/", + "standard": "EIP3091" + } + ] } ] From 5464f673abdfa100a48a8b972f0758c33bb19aa2 Mon Sep 17 00:00:00 2001 From: codingsh Date: Mon, 25 Apr 2022 15:45:05 +0200 Subject: [PATCH 03/31] feat(astar): enable trading plugin --- docs/evm-integration.md | 1 + packages/mask/shared/flags.ts | 1 + packages/mask/src/plugins/EVM/constants.ts | 2 +- packages/mask/src/plugins/ITO/base.ts | 1 + packages/mask/src/plugins/NextID/base.ts | 1 + packages/mask/src/plugins/Savings/base.ts | 1 + packages/mask/src/plugins/Trader/apis/trader/index.ts | 1 - packages/mask/src/plugins/Trader/base.ts | 1 + packages/mask/src/plugins/Wallet/services/account.ts | 1 + 9 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/evm-integration.md b/docs/evm-integration.md index d4377758bc26..c1682a8b7321 100644 --- a/docs/evm-integration.md +++ b/docs/evm-integration.md @@ -119,3 +119,4 @@ Here is the chain abilities checklist. If you are working on a bounty task, plea | xDai | | | Arbitrum | | | Avalanche | | +| Astar | | diff --git a/packages/mask/shared/flags.ts b/packages/mask/shared/flags.ts index 9a51168b9496..5cac9fbbc38e 100644 --- a/packages/mask/shared/flags.ts +++ b/packages/mask/shared/flags.ts @@ -37,6 +37,7 @@ export const Flags = { fantom_enabled: true, celo_enabled: true, aurora_enabled: true, + astar_enabled: true, nft_airdrop_enabled: false, post_actions_enabled: true, next_id_tip_enabled: true, diff --git a/packages/mask/src/plugins/EVM/constants.ts b/packages/mask/src/plugins/EVM/constants.ts index 749dc87ee860..8114d3ec0c9a 100644 --- a/packages/mask/src/plugins/EVM/constants.ts +++ b/packages/mask/src/plugins/EVM/constants.ts @@ -180,7 +180,7 @@ export const PLUGIN_NETWORKS: Web3Plugin.NetworkDescriptor[] = [ networkSupporterPluginID: PLUGIN_ID, chainId: ChainId.Astar, type: NetworkType.Astar, - name: 'Conflux', + name: 'Astar', icon: new URL('./assets/astar.png', import.meta.url), iconColor: 'rgb(36, 150, 238)', isMainnet: true, diff --git a/packages/mask/src/plugins/ITO/base.ts b/packages/mask/src/plugins/ITO/base.ts index cb3556541e59..6aaa271841ee 100644 --- a/packages/mask/src/plugins/ITO/base.ts +++ b/packages/mask/src/plugins/ITO/base.ts @@ -28,6 +28,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Aurora, ChainId.Avalanche, ChainId.Fantom, + ChainId.Astar, ], }, [NetworkPluginID.PLUGIN_FLOW]: { supportedChainIds: [] }, diff --git a/packages/mask/src/plugins/NextID/base.ts b/packages/mask/src/plugins/NextID/base.ts index cafbe251789a..12600703ac29 100644 --- a/packages/mask/src/plugins/NextID/base.ts +++ b/packages/mask/src/plugins/NextID/base.ts @@ -30,6 +30,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Avalanche, ChainId.Fantom, ChainId.Conflux, + ChainId.Astar, ], }, [NetworkPluginID.PLUGIN_FLOW]: { supportedChainIds: [] }, diff --git a/packages/mask/src/plugins/Savings/base.ts b/packages/mask/src/plugins/Savings/base.ts index 5bf0aa30c04d..a0851ec12bc1 100644 --- a/packages/mask/src/plugins/Savings/base.ts +++ b/packages/mask/src/plugins/Savings/base.ts @@ -28,6 +28,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Aurora, ChainId.Avalanche, ChainId.Fantom, + ChainId.Astar, ], }, [NetworkPluginID.PLUGIN_FLOW]: { supportedChainIds: [] }, diff --git a/packages/mask/src/plugins/Trader/apis/trader/index.ts b/packages/mask/src/plugins/Trader/apis/trader/index.ts index d16da7f30621..964d93bd6de5 100644 --- a/packages/mask/src/plugins/Trader/apis/trader/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trader/index.ts @@ -59,7 +59,6 @@ export async function getAvailableTraderProviders(chainId: ChainId) { case NetworkType.Metis: case NetworkType.Optimistic: case NetworkType.Conflux: - case NetworkType.Astar: console.error('To be implement network: ', networkType) return [] default: diff --git a/packages/mask/src/plugins/Trader/base.ts b/packages/mask/src/plugins/Trader/base.ts index 0406e75311fd..9a827db452c1 100644 --- a/packages/mask/src/plugins/Trader/base.ts +++ b/packages/mask/src/plugins/Trader/base.ts @@ -23,6 +23,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Aurora, ChainId.Avalanche, ChainId.Fantom, + ChainId.Astar, ], }, [NetworkPluginID.PLUGIN_FLOW]: { supportedChainIds: [] }, diff --git a/packages/mask/src/plugins/Wallet/services/account.ts b/packages/mask/src/plugins/Wallet/services/account.ts index 2b3759fc6beb..1736584d838a 100644 --- a/packages/mask/src/plugins/Wallet/services/account.ts +++ b/packages/mask/src/plugins/Wallet/services/account.ts @@ -128,5 +128,6 @@ export async function getSupportedNetworks() { Flags.fantom_enabled ? NetworkType.Fantom : undefined, Flags.avalanche_enabled ? NetworkType.Avalanche : undefined, Flags.aurora_enabled ? NetworkType.Aurora : undefined, + Flags.astar_enabled ? NetworkType.Astar : undefined, ].filter(Boolean) as NetworkType[] } From 55f567e31af9b29175d43d3fec5d10c0669dd965 Mon Sep 17 00:00:00 2001 From: codingsh Date: Mon, 25 Apr 2022 15:58:14 +0200 Subject: [PATCH 04/31] feat(astar): add versa.finance --- .../src/plugins/Trader/apis/trader/index.ts | 2 +- .../src/plugins/Trader/constants/index.ts | 3 +- .../src/plugins/Trader/constants/versa.ts | 13 +++ .../Trader/trader/useAllTradeComputed.ts | 8 ++ .../Trader/trader/useGetTradeContext.ts | 15 ++++ .../plugins/Trader/trader/useTradeCallback.ts | 2 + .../mask/src/plugins/Trader/types/trader.ts | 1 + packages/public-api/src/web.ts | 1 + packages/web3-constants/evm/token.json | 24 ++++- packages/web3-constants/evm/trader.json | 88 +++++++++++++++++++ packages/web3-shared/evm/constants/tokens.ts | 2 + 11 files changed, 156 insertions(+), 3 deletions(-) create mode 100644 packages/mask/src/plugins/Trader/constants/versa.ts diff --git a/packages/mask/src/plugins/Trader/apis/trader/index.ts b/packages/mask/src/plugins/Trader/apis/trader/index.ts index 964d93bd6de5..41de09ae99e4 100644 --- a/packages/mask/src/plugins/Trader/apis/trader/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trader/index.ts @@ -53,7 +53,7 @@ export async function getAvailableTraderProviders(chainId: ChainId) { case NetworkType.Aurora: return [TradeProvider.DODO, TradeProvider.WANNASWAP, TradeProvider.TRISOLARIS] case NetworkType.Astar: - return [TradeProvider.ARTHSWAP] + return [TradeProvider.ARTHSWAP, TradeProvider.VERSA] case NetworkType.Boba: case NetworkType.Fuse: case NetworkType.Metis: diff --git a/packages/mask/src/plugins/Trader/constants/index.ts b/packages/mask/src/plugins/Trader/constants/index.ts index f28a0811d291..b537225d84f6 100644 --- a/packages/mask/src/plugins/Trader/constants/index.ts +++ b/packages/mask/src/plugins/Trader/constants/index.ts @@ -13,6 +13,7 @@ export * from './traderjoe' export * from './pangolindex' export * from './wannaswap' export * from './trisolaris' -export * from './arthswap' export * from './mdex' +export * from './arthswap' +export * from './versa' export type { ERC20TokenCustomizedBase, ERC20AgainstToken } from './types' diff --git a/packages/mask/src/plugins/Trader/constants/versa.ts b/packages/mask/src/plugins/Trader/constants/versa.ts new file mode 100644 index 000000000000..6814d95a07c6 --- /dev/null +++ b/packages/mask/src/plugins/Trader/constants/versa.ts @@ -0,0 +1,13 @@ +import { ChainId, USDC, USDT, VERSA, BUSD, WNATIVE, WNATIVE_ONLY } from '@masknet/web3-shared-evm' +import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' + +/** + * Some tokens can only be swapped via certain pairs, + * so we override the list of bases that are considered for these tokens. + */ +export const VERSA_CUSTOM_BASES: ERC20TokenCustomizedBase = {} + +export const VERSA_BASE_AGAINST_TOKENS: ERC20AgainstToken = { + ...WNATIVE_ONLY, + [ChainId.Astar]: [WNATIVE, USDC, USDT, BUSD, VERSA].map((x) => x[ChainId.Astar]), +} diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index 9b390966901f..f5965969c855 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -213,6 +213,13 @@ export function useAllTradeComputed( traderEstimateGas: arthswapEstimateGas, } = useUniswapV2Like(tradeProviders, TradeProvider.ARTHSWAP, inputAmount_, inputToken, outputToken) + // Versa Finance + const { + trader_: versa_, + trader: versa, + traderEstimateGas: versaEstimateGas, + } = useUniswapV2Like(tradeProviders, TradeProvider.VERSA, inputAmount_, inputToken, outputToken) + const allTradeResult = [ { provider: TradeProvider.UNISWAP_V2, ...uniswapV2_, value: uniswapV2, gas: uniswapV2EstimateGas }, { provider: TradeProvider.SUSHISWAP, ...sushiSwap_, value: sushiSwap, gas: sushiSwapEstimateGas }, @@ -231,6 +238,7 @@ export function useAllTradeComputed( { provider: TradeProvider.TRISOLARIS, ...trisolaris_, value: trisolaris, gas: trisolarisEstimateGas }, { provider: TradeProvider.MDEX, ...mdex_, value: mdex, gas: mdexEstimateGas }, { provider: TradeProvider.ARTHSWAP, ...arthswap_, value: arthswap, gas: arthswapEstimateGas }, + { provider: TradeProvider.VERSA, ...versa_, value: versa, gas: versaEstimateGas }, ] return nativeToken_.value diff --git a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts index 6f626483b4f0..87d0ff53a20f 100644 --- a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts @@ -25,6 +25,8 @@ import { MDEX_CUSTOM_BASES, ARTHSWAP_BASE_AGAINST_TOKENS, ARTHSWAP_CUSTOM_BASES, + VERSA_BASE_AGAINST_TOKENS, + VERSA_CUSTOM_BASES, } from '../constants' import { unreachable } from '@dimensiondev/kit' import { TargetChainIdContext } from './useTargetChainIdContext' @@ -190,6 +192,19 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: ARTHSWAP_CUSTOM_BASES, } + case TradeProvider.VERSA: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.VERSA_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.VERSA_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.VERSA_ROUTER_ADDRESS, + SPENDER_CONTRACT_ADDRESS: DEX_TRADE.VERSA_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.VERSA_FACTORY_ADDRESS, + AGAINST_TOKENS: VERSA_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: VERSA_CUSTOM_BASES, + } case TradeProvider.ZRX: return { TYPE: tradeProvider, diff --git a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts index a47b3cc75547..33fefef9608a 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts @@ -104,6 +104,8 @@ export function useTradeCallback( return uniswapV2Like case TradeProvider.ARTHSWAP: return uniswapV2Like + case TradeProvider.VERSA: + return uniswapV2Like case TradeProvider.ZRX: return zrx case TradeProvider.BALANCER: diff --git a/packages/mask/src/plugins/Trader/types/trader.ts b/packages/mask/src/plugins/Trader/types/trader.ts index 4c52bbacc179..54b15c5c4236 100644 --- a/packages/mask/src/plugins/Trader/types/trader.ts +++ b/packages/mask/src/plugins/Trader/types/trader.ts @@ -77,6 +77,7 @@ export enum ZrxTradePool { WannaSwap = 'WannaSwap', Mdex = 'Mdex', Arthswap = 'ArthSwap', + Versa = 'Versa', } export interface TradeComputed { diff --git a/packages/public-api/src/web.ts b/packages/public-api/src/web.ts index 136f5d8fc4e6..dc0526542111 100644 --- a/packages/public-api/src/web.ts +++ b/packages/public-api/src/web.ts @@ -184,6 +184,7 @@ export enum TradeProvider { PANGOLIN = 14, MDEX = 15, ARTHSWAP = 16, + VERSA = 17, } /** Supported language settings */ diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index f94e1e821a1c..614d4efa1acb 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -151,7 +151,7 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "" + "Astar": "0x4Bf769b05E832FCdc9053fFFBC78Ca889aCb5E1E" }, "COMP_ADDRESS": { "Mainnet": "0xc00e94Cb662C3520282E6f5717214004A7f26888", @@ -2286,5 +2286,27 @@ "Aurora_Testnet": "", "Conflux": "", "Astar": "" + }, + "VERSA_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "0xB9dEDB74bd7b298aBf76b9dFbE5b62F0aB05a57b" } } diff --git a/packages/web3-constants/evm/trader.json b/packages/web3-constants/evm/trader.json index dde0b7a72481..64dd4a49d9ac 100644 --- a/packages/web3-constants/evm/trader.json +++ b/packages/web3-constants/evm/trader.json @@ -1296,5 +1296,93 @@ "Aurora_Testnet": "", "Conflux": "", "Astar": "0x613b36de6401276e4d938ad0db4063490e66bb3ab2e4aec17cab78a15ea7a0b6" + }, + "VERSA_ROUTER_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "0xDAC282cA5534DC5936165197263E5f08b2C4577c" + }, + "VERSA_FACTORY_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "0x4346A7C8C39Bf91b8a80933c2fdb10d815c401dB" + }, + "VERSA_THEGRAPH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "" + }, + "VERSA_INIT_CODE_HASH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "0xd85454abf78812c626635684bd82ec9bbcf160e8f7b0cfb33b5fd6f4db851b88" } } diff --git a/packages/web3-shared/evm/constants/tokens.ts b/packages/web3-shared/evm/constants/tokens.ts index 69b687e60645..400007d5ac98 100644 --- a/packages/web3-shared/evm/constants/tokens.ts +++ b/packages/web3-shared/evm/constants/tokens.ts @@ -45,6 +45,7 @@ export const CUSD = createERC20Tokens('cUSD_ADDRESS', 'Celo Dollar', 'cUSD', 18) export const CEUR = createERC20Tokens('cEUR_ADDRESS', 'Celo Euro', 'cEUR', 18) export const JOE = createERC20Tokens('JOE_ADDRESS', 'JoeToken', 'JOE', 18) export const PNG = createERC20Tokens('PNG_ADDRESS', 'Pangolin', 'PNG', 18) +export const VERSA = createERC20Tokens('VERSA_ADDRESS', 'Versa Finance', 'VERSA', 18) export const WNATIVE = createERC20Tokens( 'WNATIVE_ADDRESS', @@ -72,4 +73,5 @@ export const WNATIVE_ONLY: ERC20AgainstToken = { [ChainId.Fantom]: [WNATIVE[ChainId.Fantom]], [ChainId.Aurora]: [WNATIVE[ChainId.Aurora]], [ChainId.Aurora_Testnet]: [WNATIVE[ChainId.Aurora_Testnet]], + [ChainId.Astar]: [WNATIVE[ChainId.Astar]], } From 3e20c547b535609e101c7c9832ac96514903108e Mon Sep 17 00:00:00 2001 From: codingsh Date: Mon, 25 Apr 2022 16:46:45 +0200 Subject: [PATCH 05/31] feat(astar): add astar exchange --- cspell.json | 1 + .../src/plugins/Trader/apis/trader/index.ts | 2 +- .../plugins/Trader/constants/astarexchange.ts | 13 +++ .../src/plugins/Trader/constants/index.ts | 1 + packages/mask/src/plugins/Trader/pipes.ts | 2 + .../Trader/trader/useAllTradeComputed.ts | 13 +++ .../Trader/trader/useGetTradeContext.ts | 15 ++++ packages/web3-constants/evm/token.json | 22 ----- packages/web3-constants/evm/trader.json | 88 +++++++++++++++++++ 9 files changed, 134 insertions(+), 23 deletions(-) create mode 100644 packages/mask/src/plugins/Trader/constants/astarexchange.ts diff --git a/cspell.json b/cspell.json index 2771836a0952..54728c412180 100644 --- a/cspell.json +++ b/cspell.json @@ -28,6 +28,7 @@ "arthswap", "arweave", "astar", + "astarexchange", "avalanche", "avax", "betanet", diff --git a/packages/mask/src/plugins/Trader/apis/trader/index.ts b/packages/mask/src/plugins/Trader/apis/trader/index.ts index 41de09ae99e4..e02602881d6a 100644 --- a/packages/mask/src/plugins/Trader/apis/trader/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trader/index.ts @@ -53,7 +53,7 @@ export async function getAvailableTraderProviders(chainId: ChainId) { case NetworkType.Aurora: return [TradeProvider.DODO, TradeProvider.WANNASWAP, TradeProvider.TRISOLARIS] case NetworkType.Astar: - return [TradeProvider.ARTHSWAP, TradeProvider.VERSA] + return [TradeProvider.ARTHSWAP, TradeProvider.VERSA, TradeProvider.ASTAREXCHANGE] case NetworkType.Boba: case NetworkType.Fuse: case NetworkType.Metis: diff --git a/packages/mask/src/plugins/Trader/constants/astarexchange.ts b/packages/mask/src/plugins/Trader/constants/astarexchange.ts new file mode 100644 index 000000000000..aca2f119b0b6 --- /dev/null +++ b/packages/mask/src/plugins/Trader/constants/astarexchange.ts @@ -0,0 +1,13 @@ +import { ChainId, USDC, USDT, WNATIVE, WNATIVE_ONLY } from '@masknet/web3-shared-evm' +import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' + +/** + * Some tokens can only be swapped via certain pairs, + * so we override the list of bases that are considered for these tokens. + */ +export const ASTAREXCHANGE_CUSTOM_BASES: ERC20TokenCustomizedBase = {} + +export const ASTAREXCHANGE_BASE_AGAINST_TOKENS: ERC20AgainstToken = { + ...WNATIVE_ONLY, + [ChainId.Astar]: [WNATIVE, USDC, USDT].map((x) => x[ChainId.Astar]), +} diff --git a/packages/mask/src/plugins/Trader/constants/index.ts b/packages/mask/src/plugins/Trader/constants/index.ts index b537225d84f6..e5be0c40f1ea 100644 --- a/packages/mask/src/plugins/Trader/constants/index.ts +++ b/packages/mask/src/plugins/Trader/constants/index.ts @@ -16,4 +16,5 @@ export * from './trisolaris' export * from './mdex' export * from './arthswap' export * from './versa' +export * from './astarexchange' export type { ERC20TokenCustomizedBase, ERC20AgainstToken } from './types' diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index 76909fca65ad..e16ace01ebe6 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -42,6 +42,8 @@ export const resolveTradeProviderName = createLookupTableResolver { throw new Error(`Unknown provider type: ${tradeProvider}`) diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index f5965969c855..bc2c8fe76fee 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -220,6 +220,13 @@ export function useAllTradeComputed( traderEstimateGas: versaEstimateGas, } = useUniswapV2Like(tradeProviders, TradeProvider.VERSA, inputAmount_, inputToken, outputToken) + // Astar Exchange + const { + trader_: astarexchange_, + trader: astarexchange, + traderEstimateGas: astarexchangeEstimateGas, + } = useUniswapV2Like(tradeProviders, TradeProvider.ASTAREXCHANGE, inputAmount_, inputToken, outputToken) + const allTradeResult = [ { provider: TradeProvider.UNISWAP_V2, ...uniswapV2_, value: uniswapV2, gas: uniswapV2EstimateGas }, { provider: TradeProvider.SUSHISWAP, ...sushiSwap_, value: sushiSwap, gas: sushiSwapEstimateGas }, @@ -239,6 +246,12 @@ export function useAllTradeComputed( { provider: TradeProvider.MDEX, ...mdex_, value: mdex, gas: mdexEstimateGas }, { provider: TradeProvider.ARTHSWAP, ...arthswap_, value: arthswap, gas: arthswapEstimateGas }, { provider: TradeProvider.VERSA, ...versa_, value: versa, gas: versaEstimateGas }, + { + provider: TradeProvider.ASTAREXCHANGE, + ...astarexchange_, + value: astarexchange, + gas: astarexchangeEstimateGas, + }, ] return nativeToken_.value diff --git a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts index 87d0ff53a20f..8757e0704213 100644 --- a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts @@ -27,6 +27,8 @@ import { ARTHSWAP_CUSTOM_BASES, VERSA_BASE_AGAINST_TOKENS, VERSA_CUSTOM_BASES, + ASTAREXCHANGE_BASE_AGAINST_TOKENS, + ASTAREXCHANGE_CUSTOM_BASES, } from '../constants' import { unreachable } from '@dimensiondev/kit' import { TargetChainIdContext } from './useTargetChainIdContext' @@ -205,6 +207,19 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: VERSA_CUSTOM_BASES, } + case TradeProvider.ASTAREXCHANGE: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.ASTAREXCHANGE_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.ASTAREXCHANGE_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.ASTAREXCHANGE_ROUTER_ADDRESS, + SPENDER_CONTRACT_ADDRESS: DEX_TRADE.ASTAREXCHANGE_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.ASTAREXCHANGE_FACTORY_ADDRESS, + AGAINST_TOKENS: ASTAREXCHANGE_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: ASTAREXCHANGE_CUSTOM_BASES, + } case TradeProvider.ZRX: return { TYPE: tradeProvider, diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index 614d4efa1acb..fda175555165 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -2265,28 +2265,6 @@ "Conflux": "", "Astar": "" }, - "ASTR_ADDRESS": { - "Mainnet": "", - "Ropsten": "", - "Rinkeby": "", - "Kovan": "", - "Gorli": "", - "BSC": "", - "BSCT": "", - "Matic": "", - "Mumbai": "", - "Arbitrum": "", - "Arbitrum_Rinkeby": "", - "xDai": "", - "Avalanche": "", - "Avalanche_Fuji": "", - "Celo": "", - "Fantom": "", - "Aurora": "", - "Aurora_Testnet": "", - "Conflux": "", - "Astar": "" - }, "VERSA_ADDRESS": { "Mainnet": "", "Ropsten": "", diff --git a/packages/web3-constants/evm/trader.json b/packages/web3-constants/evm/trader.json index 64dd4a49d9ac..99409733c9ac 100644 --- a/packages/web3-constants/evm/trader.json +++ b/packages/web3-constants/evm/trader.json @@ -1384,5 +1384,93 @@ "Aurora_Testnet": "", "Conflux": "", "Astar": "0xd85454abf78812c626635684bd82ec9bbcf160e8f7b0cfb33b5fd6f4db851b88" + }, + "ASTAREXCHANGE_ROUTER_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "0xD38F0bC4a0728d2a1fCAaFa364F7c8422Ba1CD14" + }, + "ASTAREXCHANGE_FACTORY_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "0x95f506E72777efCB3C54878bB4160b00Cd11cd84" + }, + "ASTAREXCHANGE_THEGRAPH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "" + }, + "ASTAREXCHANGE_INIT_CODE_HASH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Astar": "0xc2cba59c13ce63f268e47d20538deaff688bc65268a5214b851a42ba61d73118" } } From 67716f79ccef9ee36372c8971f1eee0da8e49ada Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 26 Apr 2022 02:41:29 +0200 Subject: [PATCH 06/31] chore(astar): fixed astarexchange tradeProvider --- packages/mask/src/plugins/Trader/trader/useTradeCallback.ts | 2 ++ packages/public-api/src/web.ts | 1 + 2 files changed, 3 insertions(+) diff --git a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts index 33fefef9608a..ba4463c1aa9f 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts @@ -106,6 +106,8 @@ export function useTradeCallback( return uniswapV2Like case TradeProvider.VERSA: return uniswapV2Like + case TradeProvider.ASTAREXCHANGE: + return uniswapV2Like case TradeProvider.ZRX: return zrx case TradeProvider.BALANCER: diff --git a/packages/public-api/src/web.ts b/packages/public-api/src/web.ts index dc0526542111..2a4ca5a4e259 100644 --- a/packages/public-api/src/web.ts +++ b/packages/public-api/src/web.ts @@ -185,6 +185,7 @@ export enum TradeProvider { MDEX = 15, ARTHSWAP = 16, VERSA = 17, + ASTAREXCHANGE = 18, } /** Supported language settings */ From 42790865430ff0af8209997428661d5c7adacd2e Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 26 Apr 2022 15:04:06 +0200 Subject: [PATCH 07/31] chore(astar): add tokenlist address --- packages/web3-constants/evm/token-list.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-constants/evm/token-list.json b/packages/web3-constants/evm/token-list.json index b62ed61ae57d..540541ab8bb5 100644 --- a/packages/web3-constants/evm/token-list.json +++ b/packages/web3-constants/evm/token-list.json @@ -19,6 +19,6 @@ "Aurora": ["https://tokens.r2d2.to/latest/1313161554/tokens.json"], "Aurora_Testnet": [], "Conflux": ["https://tokens.r2d2.to/latest/1030/tokens.json"], - "Astar": [] + "Astar": ["https://tokens.r2d2.to/latest/592/tokens.json"] } } From 14d24d42430f35db33ad6de5d947b57fdb2f78bd Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 27 Apr 2022 17:09:02 +0200 Subject: [PATCH 08/31] feat: add red-packet and mask-box astar address --- packages/web3-constants/evm/mask-box.json | 4 ++-- packages/web3-constants/evm/nft-red-packet.json | 4 ++-- packages/web3-constants/evm/red-packet.json | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/web3-constants/evm/mask-box.json b/packages/web3-constants/evm/mask-box.json index 44a91720b872..30de9e3f0c52 100644 --- a/packages/web3-constants/evm/mask-box.json +++ b/packages/web3-constants/evm/mask-box.json @@ -19,7 +19,7 @@ "Aurora": "0xf5056B96ab242C566002852d0b98ce0BcDf1af51", "Aurora_Testnet": "0xB4D669bc117735FdA44e90e52795132187705B21", "Conflux": "", - "Astar": "" + "Astar": "0x041Bdc5b713aFc3AA06b9511E1e55552138b139A" }, "MASK_BOX_CONTRACT_FROM_BLOCK": { "Mainnet": 13687866, @@ -41,6 +41,6 @@ "Aurora": 57259004, "Aurora_Testnet": 77919118, "Conflux": 0, - "Astar": 0 + "Astar": 911315 } } diff --git a/packages/web3-constants/evm/nft-red-packet.json b/packages/web3-constants/evm/nft-red-packet.json index 4ac6a0d7c633..19d9594c5ab2 100644 --- a/packages/web3-constants/evm/nft-red-packet.json +++ b/packages/web3-constants/evm/nft-red-packet.json @@ -19,7 +19,7 @@ "Aurora": "0x05ee315E407C21a594f807D61d6CC11306D1F149", "Aurora_Testnet": "0x97369fEE7db34E0BfE47861f2ec44b4378d13eB4", "Conflux": "0x5b966f3a32db9c180843bcb40267a66b73e4f022", - "Astar": "" + "Astar": "0xc3e62b2CC70439C32a381Bfc056aCEd1d7162cef" }, "SUBGRAPH_URL": { "Mainnet": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-nft-red-packet-mainnet", @@ -41,6 +41,6 @@ "Aurora": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-nft-red-packet-aurora", "Aurora_Testnet": "", "Conflux": "", - "Astar": "" + "Astar": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-nft-red-packet-astar" } } diff --git a/packages/web3-constants/evm/red-packet.json b/packages/web3-constants/evm/red-packet.json index d44b9219add1..8b1e86f9f26e 100644 --- a/packages/web3-constants/evm/red-packet.json +++ b/packages/web3-constants/evm/red-packet.json @@ -85,7 +85,7 @@ "Aurora": "0x19f179D7e0D7d9F9d5386afFF64271D98A91615B", "Aurora_Testnet": "0xdB93cCd481012bB5D1E2c8d0aF7C5f2940c00fdC", "Conflux": "0x96c7d011cdfd467f551605f0f5fce279f86f4186", - "Astar": "" + "Astar": "0x2cF46Db820e279c5fBF778367D49d9C931D54524" }, "HAPPY_RED_PACKET_ADDRESS_V4_BLOCK_HEIGHT": { "Mainnet": 12939427, @@ -107,7 +107,7 @@ "Aurora": 57552338, "Aurora_Testnet": 77918765, "Conflux": 37670572, - "Astar": 0 + "Astar": 910985 }, "SUBGRAPH_URL": { "Mainnet": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-mainnet", @@ -129,6 +129,6 @@ "Aurora": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-aurora", "Aurora_Testnet": "", "Conflux": "", - "Astar": "" + "Astar": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-astar" } } From 6334054f16761aff89ea602c632722950ef83c36 Mon Sep 17 00:00:00 2001 From: codingsh Date: Fri, 29 Apr 2022 13:09:34 +0200 Subject: [PATCH 09/31] chore(astar): update ITO address --- packages/web3-constants/evm/ito.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/web3-constants/evm/ito.json b/packages/web3-constants/evm/ito.json index 7a425fdae9e5..ea5e646b1c2b 100644 --- a/packages/web3-constants/evm/ito.json +++ b/packages/web3-constants/evm/ito.json @@ -63,7 +63,7 @@ "Aurora": "0x2cf91AD8C175305EBe6970Bd8f81231585EFbd77", "Aurora_Testnet": "0xdcA6F476EebCDE8FE8b072e3fC80dBC28dC209b3", "Conflux": "0x066804d9123bf2609ed4a4a40b1177a9c5a9ed51", - "Astar": "" + "Astar": "0x1D720657e6B11F468BACE2d513b10C8CbfF247Cd" }, "ITO2_CONTRACT_CREATION_BLOCK_HEIGHT": { "Mainnet": 12766513, @@ -85,7 +85,7 @@ "Aurora": 57350598, "Aurora_Testnet": 77919102, "Conflux": 37722805, - "Astar": 0 + "Astar": 915536 }, "DEFAULT_QUALIFICATION_ADDRESS": { "Mainnet": "0x81b6ae377e360dcad63611846a2516f4ba8c88ac", @@ -129,7 +129,7 @@ "Aurora": "0x578a7Fee5f0D8CEc7d00578Bf37374C5b95C4b98", "Aurora_Testnet": "", "Conflux": "0x05ee315e407c21a594f807d61d6cc11306d1f149", - "Astar": "" + "Astar": "0xdd2Cf3fF67769d49613587CcE8A452D3b58AfC33" }, "SUBGRAPH_URL": { "Mainnet": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-mainnet", @@ -151,6 +151,6 @@ "Aurora": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-aurora", "Aurora_Testnet": "", "Conflux": "", - "Astar": "" + "Astar": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-astar" } } From 1421297ab0f1c1f28898c74c170078baa6e588f3 Mon Sep 17 00:00:00 2001 From: codingsh Date: Sat, 30 Apr 2022 18:40:59 +0200 Subject: [PATCH 10/31] chore(astor): add rpc astor --- packages/web3-constants/evm/rpc.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web3-constants/evm/rpc.json b/packages/web3-constants/evm/rpc.json index 8f7aa2b7286d..7830ff9c3c87 100644 --- a/packages/web3-constants/evm/rpc.json +++ b/packages/web3-constants/evm/rpc.json @@ -61,7 +61,7 @@ "Aurora": ["https://mainnet.aurora.dev"], "Aurora_Testnet": ["https://testnet.aurora.dev"], "Conflux": ["https://evm.confluxrpc.com"], - "Astar": [] + "Astar": ["https://astar.api.onfinality.io/public"] }, "RPC_WEIGHTS": { "Mainnet": [0, 1, 2, 3, 4], @@ -83,6 +83,6 @@ "Aurora": [0, 0, 0, 0, 0], "Aurora_Testnet": [0, 0, 0, 0, 0], "Conflux": [0, 0, 0, 0, 0], - "Astar": [] + "Astar": [0, 0, 0, 0, 0] } } From 470789515ed2ade9ac34cca9485fa30adf29ea90 Mon Sep 17 00:00:00 2001 From: codingsh Date: Fri, 13 May 2022 15:33:11 +0100 Subject: [PATCH 11/31] Update packages/web3-shared/evm/pipes/index.ts Co-authored-by: septs --- packages/web3-shared/evm/pipes/index.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/web3-shared/evm/pipes/index.ts b/packages/web3-shared/evm/pipes/index.ts index 7b0f894a947a..0d7ab104784f 100644 --- a/packages/web3-shared/evm/pipes/index.ts +++ b/packages/web3-shared/evm/pipes/index.ts @@ -163,10 +163,10 @@ export const resolveChainColor = createLookupTableResolver( [ChainId.Harmony_Test]: 'rgb(48, 153, 242)', [ChainId.Aurora_Testnet]: 'rgb(112, 212, 74)', [ChainId.Astar]: 'rgb(36, 150, 238)', - [ChainId.Fuse]: 'rgb(255 255 255)', - [ChainId.Boba]: 'rgb(255 255 255)', - [ChainId.Metis]: 'rgb(255 255 255)', - [ChainId.Optimistic]: 'rgb(255 255 255)', + [ChainId.Fuse]: 'rgb(255, 255, 255)', + [ChainId.Boba]: 'rgb(255, 255, 255)', + [ChainId.Metis]: 'rgb(255, 255, 255)', + [ChainId.Optimistic]: 'rgb(255, 255, 255)', }, 'rgb(214, 217, 220)', ) From d4806b3279936c72f7e3621ca71d0649ca0ed1f4 Mon Sep 17 00:00:00 2001 From: codingsh Date: Mon, 16 May 2022 10:38:11 +0000 Subject: [PATCH 12/31] feat(astar): add dex yumiswap --- cspell.json | 5 +- .../src/plugins/Trader/apis/trader/index.ts | 2 +- .../src/plugins/Trader/constants/index.ts | 1 + .../src/plugins/Trader/constants/yumiswap.ts | 13 + packages/mask/src/plugins/Trader/pipes.ts | 1 + .../Trader/trader/useAllTradeComputed.ts | 13 + .../Trader/trader/useGetTradeContext.ts | 15 + .../plugins/Trader/trader/useTradeCallback.ts | 3 + .../mask/src/plugins/Trader/types/trader.ts | 2 + packages/public-api/src/web.ts | 1 + packages/web3-constants/compile-constants.ts | 2 +- packages/web3-constants/evm/token.json | 358 +++++++++++++----- packages/web3-constants/evm/trader.json | 321 ++++++++++++---- .../evm/constants/getContractOwnerDomain.ts | 1 + packages/web3-shared/evm/constants/tokens.ts | 2 + 15 files changed, 568 insertions(+), 172 deletions(-) create mode 100644 packages/mask/src/plugins/Trader/constants/yumiswap.ts diff --git a/cspell.json b/cspell.json index 6878144890c2..8fb140269456 100644 --- a/cspell.json +++ b/cspell.json @@ -310,7 +310,10 @@ "vitalik", "walletlink", "wnative", - "xsushi" + "xsushi", + "xyumi", + "yumiswap", + "yumi" ], "ignoreRegExpList": ["/@servie/"], "overrides": [ diff --git a/packages/mask/src/plugins/Trader/apis/trader/index.ts b/packages/mask/src/plugins/Trader/apis/trader/index.ts index 5300da51c8bf..00316f102372 100644 --- a/packages/mask/src/plugins/Trader/apis/trader/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trader/index.ts @@ -53,7 +53,7 @@ export async function getAvailableTraderProviders(chainId: ChainId) { case NetworkType.Aurora: return [TradeProvider.DODO, TradeProvider.WANNASWAP, TradeProvider.TRISOLARIS] case NetworkType.Astar: - return [TradeProvider.ARTHSWAP, TradeProvider.VERSA, TradeProvider.ASTAREXCHANGE] + return [TradeProvider.ARTHSWAP, TradeProvider.VERSA, TradeProvider.ASTAREXCHANGE, TradeProvider.YUMISWAP] case NetworkType.Harmony: return [ TradeProvider.SUSHISWAP, diff --git a/packages/mask/src/plugins/Trader/constants/index.ts b/packages/mask/src/plugins/Trader/constants/index.ts index 2c60bb46d0bf..6380274679aa 100644 --- a/packages/mask/src/plugins/Trader/constants/index.ts +++ b/packages/mask/src/plugins/Trader/constants/index.ts @@ -20,4 +20,5 @@ export * from './arthswap' export * from './versa' export * from './astarexchange' export * from './defikingdoms' +export * from './yumiswap' export type { ERC20TokenCustomizedBase, ERC20AgainstToken } from './types' diff --git a/packages/mask/src/plugins/Trader/constants/yumiswap.ts b/packages/mask/src/plugins/Trader/constants/yumiswap.ts new file mode 100644 index 000000000000..c7161ca1b75d --- /dev/null +++ b/packages/mask/src/plugins/Trader/constants/yumiswap.ts @@ -0,0 +1,13 @@ +import { ChainId, USDC, USDT, WNATIVE, YUMI, DAI, xYUMI, WNATIVE_ONLY } from '@masknet/web3-shared-evm' +import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' + +/** + * Some tokens can only be swapped via certain pairs, + * so we override the list of bases that are considered for these tokens. + */ +export const YUMISWAP_CUSTOM_BASES: ERC20TokenCustomizedBase = {} + +export const YUMISWAP_BASE_AGAINST_TOKENS: ERC20AgainstToken = { + ...WNATIVE_ONLY, + [ChainId.Astar]: [WNATIVE, USDC, USDT, YUMI, DAI, xYUMI].map((x) => x[ChainId.Astar]), +} diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index 4ded38efeb10..c8ca6f3f4f78 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -47,6 +47,7 @@ export const resolveTradeProviderName = createLookupTableResolver { throw new Error(`Unknown provider type: ${tradeProvider}`) diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index adff05123fbb..3976ebf195dd 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -248,6 +248,13 @@ export function useAllTradeComputed( traderEstimateGas: astarexchangeEstimateGas, } = useUniswapV2Like(tradeProviders, TradeProvider.ASTAREXCHANGE, inputAmount_, inputToken, outputToken) + // Yumi Swap + const { + trader_: yumiswap_, + trader: yumiswap, + traderEstimateGas: yumiswapEstimateGas, + } = useUniswapV2Like(tradeProviders, TradeProvider.YUMISWAP, inputAmount_, inputToken, outputToken) + const allTradeResult = [ { provider: TradeProvider.UNISWAP_V2, ...uniswapV2_, value: uniswapV2, gas: uniswapV2EstimateGas }, { provider: TradeProvider.SUSHISWAP, ...sushiSwap_, value: sushiSwap, gas: sushiSwapEstimateGas }, @@ -275,6 +282,12 @@ export function useAllTradeComputed( value: astarexchange, gas: astarexchangeEstimateGas, }, + { + provider: TradeProvider.YUMISWAP, + ...yumiswap_, + value: yumiswap, + gas: yumiswapEstimateGas, + }, ] return nativeToken_.value diff --git a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts index 9d8599a21096..a02b4c45606b 100644 --- a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts @@ -35,6 +35,8 @@ import { ASTAREXCHANGE_CUSTOM_BASES, DEFIKINGDOMS_BASE_AGAINST_TOKENS, DEFIKINGDOMS_CUSTOM_BASES, + YUMISWAP_BASE_AGAINST_TOKENS, + YUMISWAP_CUSTOM_BASES, } from '../constants' import { unreachable } from '@dimensiondev/kit' import { TargetChainIdContext } from './useTargetChainIdContext' @@ -226,6 +228,19 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: ASTAREXCHANGE_CUSTOM_BASES, } + case TradeProvider.YUMISWAP: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.YUMISWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.YUMISWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.YUMISWAP_ROUTER_ADDRESS, + SPENDER_CONTRACT_ADDRESS: DEX_TRADE.YUMISWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.YUMISWAP_FACTORY_ADDRESS, + AGAINST_TOKENS: YUMISWAP_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: YUMISWAP_CUSTOM_BASES, + } case TradeProvider.VENOMSWAP: return { TYPE: tradeProvider, diff --git a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts index f3eda18ee2c5..593f05bb7037 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts @@ -111,6 +111,9 @@ export function useTradeCallback( case TradeProvider.VERSA: return uniswapV2Like case TradeProvider.ASTAREXCHANGE: + return uniswapV2Like + case TradeProvider.YUMISWAP: + return uniswapV2Like case TradeProvider.DEFIKINGDOMS: return uniswapV2Like case TradeProvider.ZRX: diff --git a/packages/mask/src/plugins/Trader/types/trader.ts b/packages/mask/src/plugins/Trader/types/trader.ts index 64b4c0c4fda9..ff290fe6cd6f 100644 --- a/packages/mask/src/plugins/Trader/types/trader.ts +++ b/packages/mask/src/plugins/Trader/types/trader.ts @@ -81,6 +81,8 @@ export enum ZrxTradePool { VenomSwap = 'VenomSwap', OpenSwap = 'OpenSwap', DefiKingdoms = 'DefiKingdoms', + YumiSwap = 'YumiSwap', + AstarExchange = 'AstarExchange', } export interface TradeComputed { diff --git a/packages/public-api/src/web.ts b/packages/public-api/src/web.ts index c381c839da6c..ce918a8ac521 100644 --- a/packages/public-api/src/web.ts +++ b/packages/public-api/src/web.ts @@ -200,6 +200,7 @@ export enum TradeProvider { ARTHSWAP = 19, VERSA = 20, ASTAREXCHANGE = 21, + YUMISWAP = 22, } /** Supported language settings */ diff --git a/packages/web3-constants/compile-constants.ts b/packages/web3-constants/compile-constants.ts index 657abe8f5e47..4cd894fda2cc 100644 --- a/packages/web3-constants/compile-constants.ts +++ b/packages/web3-constants/compile-constants.ts @@ -60,9 +60,9 @@ compileConstants(path.join(__dirname, 'evm'), [ 'Aurora', 'Aurora_Testnet', 'Conflux', - 'Astar', 'Harmony', 'Harmony_Test', + 'Astar', ]) compileConstants(path.join(__dirname, 'solana'), ['Mainnet', 'Testnet', 'Devnet']) diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index 1a17feb192be..d726a27856ce 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -44,7 +44,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "USDC_ADDRESS": { "Mainnet": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", @@ -115,7 +116,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x3C2B8Be99c50593081EAA2A724F0B8285F5aba8f", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "HUSD_ADDRESS": { "Mainnet": "0xdf574c24545e5ffecb9a659c229253d4111d87e1", @@ -138,7 +140,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "BUSD_ADDRESS": { "Mainnet": "0x4fabb145d64652a948d72533023f6e7a623c7c53", @@ -185,7 +188,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "EASY_ADDRESS": { "Mainnet": "", @@ -208,7 +212,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MKR_ADDRESS": { "Mainnet": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", @@ -231,7 +236,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MASK_ADDRESS": { "Mainnet": "0x69af81e73A73B40adF4f3d4223Cd9b1ECE623074", @@ -254,7 +260,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MSKA_ADDRESS": { "Mainnet": "", @@ -277,7 +284,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MSKB_ADDRESS": { "Mainnet": "", @@ -300,7 +308,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MSKC_ADDRESS": { "Mainnet": "", @@ -323,7 +332,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MSKD_ADDRESS": { "Mainnet": "", @@ -346,7 +356,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MSKE_ADDRESS": { "Mainnet": "", @@ -369,7 +380,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "DAI_ADDRESS": { "Mainnet": "0x6B175474E89094C44Da98b954EedeAC495271d0F", @@ -392,7 +404,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0xEf977d2f931C1978Db5F6747666fa1eACB0d0339", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "0x6De33698e9e9b787e09d3Bd7771ef63557E148bb" }, "AMPL_ADDRESS": { "Mainnet": "0xD46bA6D942050d489DBd938a2C909A5d5039A161", @@ -415,7 +428,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "OKB_ADDRESS": { "Mainnet": "0x75231F58b43240C9718Dd58B4967c5114342a86c", @@ -438,7 +452,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UST_ADDRESS": { "Mainnet": "0xa47c8bf37f92aBed4A126BDA807A7b7498661acD", @@ -461,7 +476,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x224e64ec1BDce3870a6a6c777eDd450454068FEC", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "eUSDC_ADDRESS": { "Mainnet": "", @@ -484,7 +500,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "eUSDT_ADDRESS": { "Mainnet": "", @@ -507,7 +524,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "fUSDT_ADDRESS": { "Mainnet": "", @@ -530,7 +548,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "eDAI_ADDRESS": { "Mainnet": "", @@ -553,7 +572,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UNITOKEN_ADDRESS": { "Mainnet": "", @@ -576,7 +596,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "TT01_ADDRESS": { "Mainnet": "", @@ -599,7 +620,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "TT02_ADDRESS": { "Mainnet": "", @@ -622,7 +644,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "QUICK_ADDRESS": { "Mainnet": "", @@ -645,7 +668,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "WANNA_ADDRESS": { "Mainnet": "", @@ -668,7 +692,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "WBTC_ADDRESS": { "Mainnet": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", @@ -691,7 +716,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x3095c7557bCb296ccc6e363DE01b760bA031F2d9", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "0xad543f18cFf85c77E140E3E5E3c3392f6Ba9d5CA" }, "IGG_ADDRESS": { "Mainnet": "", @@ -714,7 +740,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "OM_ADDRESS": { "Mainnet": "", @@ -737,7 +764,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "SUSHI_ADDRESS": { "Mainnet": "0x6B3595068778DD592e39A122f4f5a5cF09C90fE2", @@ -760,7 +788,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0xBEC775Cb42AbFa4288dE81F387a9b1A3c4Bc552A", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "YAM_ADDRESS": { "Mainnet": "0x0e2298E3B3390e3b945a5456fBf59eCc3f55DA16", @@ -783,7 +812,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "RUNE_ADDRESS": { "Mainnet": "0x3155BA85D5F96b2d030a4966AF206230e46849cb", @@ -806,7 +836,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "YFI_ADDRESS": { "Mainnet": "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", @@ -829,7 +860,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "sUSD_ADDRESS": { "Mainnet": "0x57ab1ec28d129707052df4df418d58a2d46d5f51", @@ -852,7 +884,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "BTCB_ADDRESS": { "Mainnet": "", @@ -875,7 +908,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "CAKE_ADDRESS": { "Mainnet": "", @@ -898,7 +932,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "maUSDC_ADDRESS": { "Mainnet": "", @@ -921,7 +956,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "stETH_ADDRESS": { "Mainnet": "0xDFe66B14D37C77F4E9b180cEb433d1b164f0281D", @@ -944,7 +980,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "NFTX_ADDRESS": { "Mainnet": "0x87d73E916D7057945c9BcD8cdd94e42A6F47f776", @@ -967,7 +1004,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "cUSD_ADDRESS": { "Mainnet": "", @@ -990,7 +1028,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "cEUR_ADDRESS": { "Mainnet": "", @@ -1013,7 +1052,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "xTRI_ADDRESS": { "Mainnet": "", @@ -1036,7 +1076,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "JOE_ADDRESS": { "Mainnet": "", @@ -1059,7 +1100,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "PNG_ADDRESS": { "Mainnet": "", @@ -1082,7 +1124,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "VIPER_ADDRESS": { "Mainnet": "", @@ -1105,7 +1148,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0xEa589E93Ff18b1a1F1e9BaC7EF3E86Ab62addc79", - "Harmony_Test": "0x69A655c56087D927eb05247FB56495a0f19B9f70" + "Harmony_Test": "0x69A655c56087D927eb05247FB56495a0f19B9f70", + "Astar": "" }, "JEWEL_ADDRESS": { "Mainnet": "", @@ -1128,7 +1172,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x72Cb10C6bfA5624dD07Ef608027E366bd690048F", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "CRYSTAL_ADDRESS": { "Mainnet": "", @@ -1151,7 +1196,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x72Cb10C6bfA5624dD07Ef608027E366bd690048F", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "OPENX_ADDRESS": { "Mainnet": "", @@ -1174,7 +1220,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x01A4b054110d57069c1658AFBC46730529A3E326", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "ETHER_ADDRESS": { "Mainnet": "", @@ -1197,7 +1244,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "NATIVE_TOKEN_ADDRESS": { "Mainnet": "0x0000000000000000000000000000000000000000", @@ -1220,7 +1268,8 @@ "Aurora_Testnet": "", "Conflux": "0x0000000000000000000000000000000000000000", "Harmony": "0x0000000000000000000000000000000000000000", - "Harmony_Test": "0x0000000000000000000000000000000000000000" + "Harmony_Test": "0x0000000000000000000000000000000000000000", + "Astar": "" }, "WETH_ADDRESS": { "Mainnet": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", @@ -1243,7 +1292,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "0x81ECac0D6Be0550A00FF064a4f9dd2400585FE9c" }, "aWETH_ADDRESS": { "Mainnet": "0x030bA81f1c18d280636F32af80b9AAd02Cf0854e", @@ -1266,7 +1316,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "ZRX_ADDRESS": { "Mainnet": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", @@ -1289,7 +1340,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aZRX_ADDRESS": { "Mainnet": "0xDf7FF54aAcAcbFf42dfe29DD6144A69b629f8C9e", @@ -1312,7 +1364,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UNI_ADDRESS": { "Mainnet": "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", @@ -1335,7 +1388,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aUNI_ADDRESS": { "Mainnet": "0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1", @@ -1358,7 +1412,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "LIDO_ADDRESS": { "Mainnet": "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", @@ -1381,7 +1436,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "AAVE_ADDRESS": { "Mainnet": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", @@ -1404,7 +1460,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0xcF323Aad9E522B93F11c352CaA519Ad0E14eB40F", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aAAVE_ADDRESS": { "Mainnet": "0xFFC97d72E13E01096502Cb8Eb52dEe56f74DAD7B", @@ -1427,7 +1484,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0xf329e36C7bF6E5E86ce2150875a84Ce77f477375", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "BAT_ADDRESS": { "Mainnet": "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", @@ -1450,7 +1508,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aBAT_ADDRESS": { "Mainnet": "0x05Ec93c0365baAeAbF7AefFb0972ea7ECdD39CF1", @@ -1473,7 +1532,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "ENJ_ADDRESS": { "Mainnet": "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", @@ -1496,7 +1556,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aENJ_ADDRESS": { "Mainnet": "0xaC6Df26a590F08dcC95D5a4705ae8abbc88509Ef", @@ -1519,7 +1580,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "KNC_ADDRESS": { "Mainnet": "0xdd974D5C2e2928deA5F71b9825b8b646686BD200", @@ -1542,7 +1604,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aKNC_ADDRESS": { "Mainnet": "0x39C6b3e42d6A679d7D776778Fe880BC9487C2EDA", @@ -1565,7 +1628,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "LINK_ADDRESS": { "Mainnet": "0x514910771AF9Ca656af840dff83E8264EcF986CA", @@ -1588,7 +1652,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x218532a12a389a4a92fC0C5Fb22901D1c19198aA", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aLINK_ADDRESS": { "Mainnet": "0xa06bC25B5805d5F8d82847D191Cb4Af5A3e873E0", @@ -1611,7 +1676,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MANA_ADDRESS": { "Mainnet": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", @@ -1634,7 +1700,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aMANA_ADDRESS": { "Mainnet": "0xa685a61171bb30d4072B338c80Cb7b2c865c873E", @@ -1657,7 +1724,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "REN_ADDRESS": { "Mainnet": "0x408e41876cCCDC0F92210600ef50372656052a38", @@ -1680,7 +1748,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aREN_ADDRESS": { "Mainnet": "0xCC12AbE4ff81c9378D670De1b57F8e0Dd228D77a", @@ -1703,7 +1772,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "SNX_ADDRESS": { "Mainnet": "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", @@ -1726,7 +1796,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aSNX_ADDRESS": { "Mainnet": "0x35f6B052C598d933D69A4EEC4D04c73A191fE6c2", @@ -1749,7 +1820,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "TUSD_ADDRESS": { "Mainnet": "0x0000000000085d4780B73119b644AE5ecd22b376", @@ -1772,7 +1844,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aTUSD_ADDRESS": { "Mainnet": "0x101cc05f4A51C0319f570d5E146a8C625198e636", @@ -1795,7 +1868,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "CRV_ADDRESS": { "Mainnet": "0xD533a949740bb3306d119CC777fa900bA034cd52", @@ -1818,7 +1892,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aCRV_ADDRESS": { "Mainnet": "0x8dAE6Cb04688C62d939ed9B68d32Bc62e49970b1", @@ -1841,7 +1916,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "GUSD_ADDRESS": { "Mainnet": "0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd", @@ -1864,7 +1940,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aGUSD_ADDRESS": { "Mainnet": "0xD37EE7e4f452C6638c96536e68090De8cBcdb583", @@ -1887,7 +1964,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "BAL_ADDRESS": { "Mainnet": "0xba100000625a3754423978a60c9317c58a424e3D", @@ -1910,7 +1988,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aBAL_ADDRESS": { "Mainnet": "0x272F97b7a56a387aE942350bBC7Df5700f8a4576", @@ -1933,7 +2012,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "xSUSHI_ADDRESS": { "Mainnet": "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272", @@ -1956,7 +2036,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aXSUSHI_ADDRESS": { "Mainnet": "0xF256CC7847E919FAc9B808cC216cAc87CCF2f47a", @@ -1979,7 +2060,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "renFIL_ADDRESS": { "Mainnet": "0xD5147bc8e386d91Cc5DBE72099DAC6C9b99276F5", @@ -2002,7 +2084,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aRENFIL_ADDRESS": { "Mainnet": "0x514cd6756CCBe28772d4Cb81bC3156BA9d1744aa", @@ -2025,7 +2108,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "RAI_ADDRESS": { "Mainnet": "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919", @@ -2048,7 +2132,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aRAI_ADDRESS": { "Mainnet": "0xc9BC48c72154ef3e5425641a3c747242112a46AF", @@ -2071,7 +2156,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "USDP_ADDRESS": { "Mainnet": "0x8E870D67F660D95d5be530380D0eC0bd388289E1", @@ -2094,7 +2180,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aUSDP_ADDRESS": { "Mainnet": "0x2e8F4bdbE3d47d7d7DE490437AeA9915D930F1A3", @@ -2117,7 +2204,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "DPI_ADDRESS": { "Mainnet": "0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b", @@ -2140,7 +2228,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aDPI_ADDRESS": { "Mainnet": "0x6F634c6135D2EBD550000ac92F494F9CB8183dAe", @@ -2163,7 +2252,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "FRAX_ADDRESS": { "Mainnet": "0x853d955aCEf822Db058eb8505911ED77F175b99e", @@ -2186,7 +2276,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0xFa7191D292d5633f702B0bd7E3E3BcCC0e633200", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aFRAX_ADDRESS": { "Mainnet": "0xd4937682df3C8aEF4FE912A96A74121C0829E664", @@ -2209,7 +2300,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "FEI_ADDRESS": { "Mainnet": "0x956F47F50A910163D8BF957Cf5846D573E7f87CA", @@ -2232,7 +2324,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aFEI_ADDRESS": { "Mainnet": "0x683923dB55Fead99A79Fa01A27EeC3cB19679cC3", @@ -2255,7 +2348,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aWBTC_ADDRESS": { "Mainnet": "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656", @@ -2278,7 +2372,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x078f358208685046a11C85e8ad32895DED33A249", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aYFI_ADDRESS": { "Mainnet": "0x5165d24277cD063F5ac44Efd447B27025e888f37", @@ -2301,7 +2396,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aBUSD_ADDRESS": { "Mainnet": "0xA361718326c15715591c299427c62086F69923D9", @@ -2324,7 +2420,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aDAI_ADDRESS": { "Mainnet": "0x028171bCA77440897B824Ca71D1c56caC55b68A3", @@ -2347,7 +2444,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aMKR_ADDRESS": { "Mainnet": "0xc713e5E149D5D0715DcD1c156a020976e7E56B88", @@ -2370,7 +2468,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aSUSD_ADDRESS": { "Mainnet": "0x6C5024Cd4F8A59110119C56f8933403A539555EB", @@ -2393,7 +2492,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aUSDC_ADDRESS": { "Mainnet": "0xBcca60bB61934080951369a648Fb03DF4F96263C", @@ -2416,7 +2516,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "aAMPL_ADDRESS": { "Mainnet": "0x1E6bb68Acec8fefBD87D192bE09bb274170a0548", @@ -2439,7 +2540,8 @@ "Aurora_Testnet": "", "Conflux": "0x0000000000000000000000000000000000000000", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "SDN_ADDRESS": { "Mainnet": "", @@ -2461,6 +2563,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "" }, "VERSA_ADDRESS": { @@ -2483,6 +2587,56 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "0xB9dEDB74bd7b298aBf76b9dFbE5b62F0aB05a57b" + }, + "YUMI_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Harmony": "", + "Harmony_Test": "", + "Astar": "0x665F8B21878bDECa8bD94507120730a40dCd4F61" + }, + "xYUMI_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Harmony": "", + "Harmony_Test": "", + "Astar": "0xCc7a1Bd54375fa5bc408aC319569eCc81c8d4208" } } diff --git a/packages/web3-constants/evm/trader.json b/packages/web3-constants/evm/trader.json index 6e585f763188..86801e132d1f 100644 --- a/packages/web3-constants/evm/trader.json +++ b/packages/web3-constants/evm/trader.json @@ -20,7 +20,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UNISWAP_V2_FACTORY_ADDRESS": { "Mainnet": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", @@ -43,7 +44,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UNISWAP_V2_THEGRAPH": { "Mainnet": "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2", @@ -66,7 +68,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UNISWAP_V2_INIT_CODE_HASH": { "Mainnet": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", @@ -89,7 +92,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UNISWAP_SWAP_ROUTER_ADDRESS": { "Mainnet": "0xe592427a0aece92de3edee1f18e0157c05861564", @@ -112,7 +116,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UNISWAP_V3_FACTORY_ADDRESS": { "Mainnet": "0x1F98431c8aD98523631AE4a59f267346ea31F984", @@ -135,7 +140,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UNISWAP_V3_QUOTER_ADDRESS": { "Mainnet": "0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6", @@ -158,7 +164,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UNISWAP_V3_THEGRAPH": { "Mainnet": "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3", @@ -181,7 +188,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UNISWAP_V3_INIT_CODE_HASH": { "Mainnet": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", @@ -204,7 +212,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "SUSHISWAP_ROUTER_ADDRESS": { "Mainnet": "0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F", @@ -227,7 +236,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506", - "Harmony_Test": "0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506" + "Harmony_Test": "0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506", + "Astar": "" }, "SUSHISWAP_FACTORY_ADDRESS": { "Mainnet": "0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac", @@ -250,7 +260,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0xc35DADB65012eC5796536bD9864eD8773aBc74C4", - "Harmony_Test": "0xc35DADB65012eC5796536bD9864eD8773aBc74C4" + "Harmony_Test": "0xc35DADB65012eC5796536bD9864eD8773aBc74C4", + "Astar": "" }, "SUSHISWAP_THEGRAPH": { "Mainnet": "https://api.thegraph.com/subgraphs/name/zippoxer/sushiswap-subgraph-fork", @@ -273,7 +284,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "SUSHISWAP_INIT_CODE_HASH": { "Mainnet": "0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303", @@ -296,7 +308,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303", - "Harmony_Test": "0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303" + "Harmony_Test": "0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303", + "Astar": "" }, "SASHIMISWAP_ROUTER_ADDRESS": { "Mainnet": "0xe4fe6a45f354e845f954cddee6084603cedb9410", @@ -319,7 +332,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "SASHIMISWAP_FACTORY_ADDRESS": { "Mainnet": "0xF028F723ED1D0fE01cC59973C49298AA95c57472", @@ -342,7 +356,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "SASHIMISWAP_THEGRAPH": { "Mainnet": "https://api.thegraph.com/subgraphs/name/sashimiproject/sashimi", @@ -365,7 +380,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "SASHIMISWAP_INIT_CODE_HASH": { "Mainnet": "0xb465bbe4edb8c9b0da8ff0b2b36ce0065de9fcd5a33f32c6856ea821779c8b72", @@ -388,7 +404,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "QUICKSWAP_ROUTER_ADDRESS": { "Mainnet": "", @@ -411,7 +428,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "QUICKSWAP_FACTORY_ADDRESS": { "Mainnet": "", @@ -434,7 +452,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "QUICKSWAP_THEGRAPH": { "Mainnet": "", @@ -457,7 +476,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "QUICKSWAP_INIT_CODE_HASH": { "Mainnet": "", @@ -480,7 +500,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "PANCAKESWAP_ROUTER_ADDRESS": { "Mainnet": "", @@ -503,7 +524,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "PANCAKESWAP_FACTORY_ADDRESS": { "Mainnet": "", @@ -526,7 +548,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "PANCAKESWAP_THEGRAPH": { "Mainnet": "", @@ -549,7 +572,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "PANCAKESWAP_INIT_CODE_HASH": { "Mainnet": "", @@ -572,7 +596,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "BALANCER_ETH_ADDRESS": { "Mainnet": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", @@ -595,7 +620,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "BALANCER_EXCHANGE_PROXY_ADDRESS": { "Mainnet": "0x3E66B66Fd1d0b02fDa6C811Da9E0547970DB2f21", @@ -618,7 +644,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "BALANCER_POOLS_URL": { "Mainnet": "https://ipfs.fleek.co/ipns/balancer-bucket.storage.fleek.co/balancer-exchange/pools", @@ -641,7 +668,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "DODO_ETH_ADDRESS": { "Mainnet": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", @@ -664,7 +692,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "DODO_EXCHANGE_PROXY_ADDRESS": { "Mainnet": "0xCB859eA579b28e02B87A1FDE08d087ab9dbE5149", @@ -687,7 +716,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "BANCOR_ETH_ADDRESS": { "Mainnet": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", @@ -710,7 +740,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "BANCOR_EXCHANGE_PROXY_ADDRESS": { "Mainnet": "0x2F9EC37d6CcFFf1caB21733BdaDEdE11c823cCB0", @@ -733,7 +764,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "TRADERJOE_ROUTER_ADDRESS": { "Mainnet": "", @@ -756,7 +788,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "TRADERJOE_FACTORY_ADDRESS": { "Mainnet": "", @@ -779,7 +812,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "TRADERJOE_THEGRAPH": { "Mainnet": "https://api.thegraph.com/subgraphs/name/traderjoe-xyz/exchange", @@ -802,7 +836,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "TRADERJOE_INIT_CODE_HASH": { "Mainnet": "", @@ -825,7 +860,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "OPENOCEAN_ETH_ADDRESS": { "Mainnet": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", @@ -848,7 +884,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "OPENOCEAN_EXCHANGE_PROXY_ADDRESS": { "Mainnet": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64", @@ -871,7 +908,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "PANGOLIN_ROUTER_ADDRESS": { "Mainnet": "", @@ -894,7 +932,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "PANGOLIN_FACTORY_ADDRESS": { "Mainnet": "", @@ -917,7 +956,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "PANGOLIN_THEGRAPH": { "Mainnet": "", @@ -940,7 +980,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "PANGOLIN_INIT_CODE_HASH": { "Mainnet": "", @@ -963,7 +1004,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "WANNASWAP_ROUTER_V2_ADDRESS": { "Mainnet": "", @@ -986,7 +1028,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "WANNASWAP_ROUTER_ADDRESS": { "Mainnet": "", @@ -1009,7 +1052,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "WANNASWAP_FACTORY_ADDRESS": { "Mainnet": "", @@ -1032,7 +1076,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "WANNASWAP_THEGRAPH": { "Mainnet": "", @@ -1055,7 +1100,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "WANNASWAP_INIT_CODE_HASH": { "Mainnet": "", @@ -1078,7 +1124,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "TRISOLARIS_ROUTER_ADDRESS": { "Mainnet": "", @@ -1101,7 +1148,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "TRISOLARIS_FACTORY_ADDRESS": { "Mainnet": "", @@ -1124,7 +1172,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "TRISOLARIS_THEGRAPH": { "Mainnet": "", @@ -1147,7 +1196,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "TRISOLARIS_INIT_CODE_HASH": { "Mainnet": "", @@ -1170,7 +1220,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MDEX_ROUTER_ADDRESS": { "Mainnet": "0x74119c3bca85bEA0538A62319a79b4a372590B47", @@ -1193,7 +1244,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MDEX_FACTORY_ADDRESS": { "Mainnet": "0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8", @@ -1216,7 +1268,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MDEX_THEGRAPH": { "Mainnet": "", @@ -1239,7 +1292,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MDEX_INIT_CODE_HASH": { "Mainnet": "0x8ecc069c645df696f2ca5116ab459c5c2889f299e73c1b208aaa3cdd7d110b16", @@ -1262,7 +1316,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "VENOMSWAP_ROUTER_ADDRESS": { "Mainnet": "", @@ -1285,7 +1340,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0xf012702a5f0e54015362cbca26a26fc90aa832a3", - "Harmony_Test": "0x8e9A3cE409B13ef459fE4448aE97a79d6Ecd8b4b" + "Harmony_Test": "0x8e9A3cE409B13ef459fE4448aE97a79d6Ecd8b4b", + "Astar": "" }, "VENOMSWAP_FACTORY_ADDRESS": { "Mainnet": "", @@ -1308,7 +1364,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x7D02c116b98d0965ba7B642ace0183ad8b8D2196", - "Harmony_Test": "0x066bafafC84607a956967F6f050bD14A8347952F" + "Harmony_Test": "0x066bafafC84607a956967F6f050bD14A8347952F", + "Astar": "" }, "VENOMSWAP_THEGRAPH": { "Mainnet": "", @@ -1331,7 +1388,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "VENOMSWAP_INIT_CODE_HASH": { "Mainnet": "", @@ -1354,7 +1412,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x162f79e638367cd45a118c778971dfd8d96c625d2798d3b71994b035cfe9b6dc", - "Harmony_Test": "0x162f79e638367cd45a118c778971dfd8d96c625d2798d3b71994b035cfe9b6dc" + "Harmony_Test": "0x162f79e638367cd45a118c778971dfd8d96c625d2798d3b71994b035cfe9b6dc", + "Astar": "" }, "OPENSWAP_ROUTER_ADDRESS": { "Mainnet": "", @@ -1377,7 +1436,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x2F99992024DCC51324BA4956bB1c510F36FA54F5", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "OPENSWAP_FACTORY_ADDRESS": { "Mainnet": "", @@ -1400,7 +1460,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x5d2F9817303b940C9bB4F47C8C566c5C034d9848", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "OPENSWAP_THEGRAPH": { "Mainnet": "", @@ -1423,7 +1484,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "OPENSWAP_INIT_CODE_HASH": { "Mainnet": "", @@ -1446,7 +1508,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x613b6eaa34b43dcb7eb8881dd4b5af85805be104d5f2f385304ffa8bda5e219c", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "DEFIKINGDOMS_ROUTER_ADDRESS": { "Mainnet": "", @@ -1469,7 +1532,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x24ad62502d1C652Cc7684081169D04896aC20f30", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "DEFIKINGDOMS_FACTORY_ADDRESS": { "Mainnet": "", @@ -1492,7 +1556,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0x9014B937069918bd319f80e8B3BB4A2cf6FAA5F7", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "DEFIKINGDOMS_THEGRAPH": { "Mainnet": "", @@ -1515,7 +1580,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "DEFIKINGDOMS_INIT_CODE_HASH": { "Mainnet": "", @@ -1538,7 +1604,8 @@ "Aurora_Testnet": "", "Conflux": "", "Harmony": "0xf1c21a825f13eff153022ddea53156462dd79972b6f88adf06f79ca8b042c3c1", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "ARTHSWAP_ROUTER_ADDRESS": { "Mainnet": "", @@ -1560,6 +1627,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "0xE915D2393a08a00c5A463053edD31bAe2199b9e7" }, "ARTHSWAP_FACTORY_ADDRESS": { @@ -1582,6 +1651,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "0xA9473608514457b4bF083f9045fA63ae5810A03E" }, "ARTHSWAP_THEGRAPH": { @@ -1604,6 +1675,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "" }, "ARTHSWAP_INIT_CODE_HASH": { @@ -1626,6 +1699,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "0x613b36de6401276e4d938ad0db4063490e66bb3ab2e4aec17cab78a15ea7a0b6" }, "VERSA_ROUTER_ADDRESS": { @@ -1648,6 +1723,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "0xDAC282cA5534DC5936165197263E5f08b2C4577c" }, "VERSA_FACTORY_ADDRESS": { @@ -1670,6 +1747,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "0x4346A7C8C39Bf91b8a80933c2fdb10d815c401dB" }, "VERSA_THEGRAPH": { @@ -1692,6 +1771,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "" }, "VERSA_INIT_CODE_HASH": { @@ -1714,6 +1795,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "0xd85454abf78812c626635684bd82ec9bbcf160e8f7b0cfb33b5fd6f4db851b88" }, "ASTAREXCHANGE_ROUTER_ADDRESS": { @@ -1736,6 +1819,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "0xD38F0bC4a0728d2a1fCAaFa364F7c8422Ba1CD14" }, "ASTAREXCHANGE_FACTORY_ADDRESS": { @@ -1758,6 +1843,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "0x95f506E72777efCB3C54878bB4160b00Cd11cd84" }, "ASTAREXCHANGE_THEGRAPH": { @@ -1780,6 +1867,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "" }, "ASTAREXCHANGE_INIT_CODE_HASH": { @@ -1802,6 +1891,104 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", + "Harmony": "", + "Harmony_Test": "", "Astar": "0xc2cba59c13ce63f268e47d20538deaff688bc65268a5214b851a42ba61d73118" + }, + "YUMISWAP_ROUTER_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Harmony": "", + "Harmony_Test": "", + "Astar": "0xa4183Dca1d46580970d19CB25f4735065018e4E9" + }, + "YUMISWAP_FACTORY_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Harmony": "", + "Harmony_Test": "", + "Astar": "0xD3CFB8A232Ad5D0A7ABc817ae3BD1F3E7AE4b5E0" + }, + "YUMISWAP_THEGRAPH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Harmony": "", + "Harmony_Test": "", + "Astar": "" + }, + "YUMISWAP_INIT_CODE_HASH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "", + "Conflux": "", + "Harmony": "", + "Harmony_Test": "", + "Astar": "0xa40fa53e635b27774c3263c392063fc460318850b3a47e9d53f199b16e18bb23" } } diff --git a/packages/web3-shared/evm/constants/getContractOwnerDomain.ts b/packages/web3-shared/evm/constants/getContractOwnerDomain.ts index ae6757dc5d64..2e2e5d0ba521 100644 --- a/packages/web3-shared/evm/constants/getContractOwnerDomain.ts +++ b/packages/web3-shared/evm/constants/getContractOwnerDomain.ts @@ -47,6 +47,7 @@ const domainAddressMap: Record = { 'WANNASWAP_ROUTER_ADDRESS', 'WANNASWAP_FACTORY_ADDRESS', ]), + 'yumiswap.com': collect(Trader, ['YUMISWAP_ROUTER_ADDRESS', 'YUMISWAP_FACTORY_ADDRESS']), 'www.trisolaris.io': collect(Trader, ['TRISOLARIS_ROUTER_ADDRESS', 'TRISOLARIS_FACTORY_ADDRESS']), 'mdex.com': collect(Trader, ['MDEX_ROUTER_ADDRESS', 'MDEX_FACTORY_ADDRESS']), 'aave.com': collect(Aave, ['AAVE_LENDING_POOL_ADDRESSES_PROVIDER_CONTRACT_ADDRESS']), diff --git a/packages/web3-shared/evm/constants/tokens.ts b/packages/web3-shared/evm/constants/tokens.ts index b7f6e0be9070..dfb86d757765 100644 --- a/packages/web3-shared/evm/constants/tokens.ts +++ b/packages/web3-shared/evm/constants/tokens.ts @@ -49,6 +49,8 @@ export const VERSA = createERC20Tokens('VERSA_ADDRESS', 'Versa Finance', 'VERSA' export const VIPER = createERC20Tokens('VIPER_ADDRESS', 'Viper', 'VIPER', 18) export const OPENX = createERC20Tokens('OPENX_ADDRESS', 'OpenSwap Token', 'OpenX', 18) export const JEWEL = createERC20Tokens('JEWEL_ADDRESS', 'Jewels', 'JEWEL', 18) +export const YUMI = createERC20Tokens('YUMI_ADDRESS', 'YumiSwap Token', 'YUMI', 18) +export const xYUMI = createERC20Tokens('xYUMI_ADDRESS', 'Yumi Staking Token', 'xYUMI', 18) export const WNATIVE = createERC20Tokens( 'WNATIVE_ADDRESS', From 3455a75ad92352b2715e131e412209af412fa647 Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 25 May 2022 22:22:58 +0100 Subject: [PATCH 13/31] Update packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/Prior1559GasSetting.tsx Co-authored-by: guanbinrui <52657989+guanbinrui@users.noreply.github.com> --- .../Wallet/SNSAdaptor/GasSettingDialog/Prior1559GasSetting.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/Prior1559GasSetting.tsx b/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/Prior1559GasSetting.tsx index 9c769ee03c39..9391f0d61300 100644 --- a/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/Prior1559GasSetting.tsx +++ b/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/Prior1559GasSetting.tsx @@ -29,7 +29,7 @@ const minGasPriceOfChain: ChainIdOptionalRecord = { [ChainId.BSC]: pow10(9).multipliedBy(5), // 5 Gwei [ChainId.Conflux]: pow10(9).multipliedBy(5), // 5 Gwei [ChainId.Matic]: pow10(9).multipliedBy(30), // 30 Gwei - [ChainId.Astar]: scale10(9).multipliedBy(5), // 5 Gwei + [ChainId.Astar]: scale10(5, 9), // 5 Gwei } export const Prior1559GasSetting: FC = memo( From bc6346bff29ce7faccfbe1f1f9b3437b65f57c93 Mon Sep 17 00:00:00 2001 From: codingsh Date: Sun, 19 Jun 2022 14:57:39 +0100 Subject: [PATCH 14/31] feat(astar): enable red package --- packages/mask/src/plugins/RedPacket/base.ts | 1 + packages/web3-providers/src/zerion/format.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/mask/src/plugins/RedPacket/base.ts b/packages/mask/src/plugins/RedPacket/base.ts index 3c2fc14a4bb2..97b91f706328 100644 --- a/packages/mask/src/plugins/RedPacket/base.ts +++ b/packages/mask/src/plugins/RedPacket/base.ts @@ -32,6 +32,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Aurora, ChainId.Harmony, ChainId.Conflux, + ChainId.Astar, ], }, [NetworkPluginID.PLUGIN_FLOW]: { supportedChainIds: [] }, diff --git a/packages/web3-providers/src/zerion/format.ts b/packages/web3-providers/src/zerion/format.ts index ca77b158043e..1964983a7d85 100644 --- a/packages/web3-providers/src/zerion/format.ts +++ b/packages/web3-providers/src/zerion/format.ts @@ -64,7 +64,8 @@ export function formatAssets( return data.map(({ asset, quantity }) => { const balance = leftShift(quantity, asset.decimals).toNumber() const value = (asset as ZerionAsset).price?.value ?? (asset as ZerionCovalentAsset).value ?? 0 - const isNativeToken = (symbol: string) => ['ETH', 'BNB', 'MATIC', 'ARETH', 'AETH', 'ONE'].includes(symbol) + const isNativeToken = (symbol: string) => + ['ETH', 'BNB', 'MATIC', 'ARETH', 'AETH', 'ONE', 'ASTAR'].includes(symbol) const address = isNativeToken(asset.symbol) ? getTokenConstants().NATIVE_TOKEN_ADDRESS ?? '' : asset.asset_code return { From edb16ef2de5f394f32d7599d2a5b2caa6e5dbbe3 Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 28 Jun 2022 20:33:27 +0100 Subject: [PATCH 15/31] feat(astar): add EIP1559 --- packages/web3-shared/evm/constants/chains.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-shared/evm/constants/chains.json b/packages/web3-shared/evm/constants/chains.json index 70edad6ae69b..7a3742f339ac 100644 --- a/packages/web3-shared/evm/constants/chains.json +++ b/packages/web3-shared/evm/constants/chains.json @@ -3024,7 +3024,7 @@ "network": "mainnet", "rpc": ["https://evm.astar.network"], "faucets": [], - "features": [], + "features": ["EIP1559"], "nativeCurrency": { "chainId": 592, "name": "Astar", From 8f9b31176bc2002d57dc395c45433ea22c490171 Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 28 Jun 2022 22:06:16 +0100 Subject: [PATCH 16/31] feat(astar): add astar networ api gas --- packages/plugins/EVM/src/state/Hub/hub.ts | 2 ++ packages/web3-providers/src/astar/index.ts | 35 ++++++++++++++++++++++ packages/web3-providers/src/astar/types.ts | 30 +++++++++++++++++++ packages/web3-providers/src/index.ts | 2 ++ 4 files changed, 69 insertions(+) create mode 100644 packages/web3-providers/src/astar/index.ts create mode 100644 packages/web3-providers/src/astar/types.ts diff --git a/packages/plugins/EVM/src/state/Hub/hub.ts b/packages/plugins/EVM/src/state/Hub/hub.ts index 652a5652cc53..a82cccffbe5c 100644 --- a/packages/plugins/EVM/src/state/Hub/hub.ts +++ b/packages/plugins/EVM/src/state/Hub/hub.ts @@ -5,6 +5,7 @@ import { DeBank, EthereumWeb3, MetaSwap, + Astar, OpenSea, Rarible, TokenList, @@ -88,6 +89,7 @@ class Hub implements EVM_Hub { }) try { const isEIP1559 = chainResolver.isSupport(options.chainId, 'EIP1559') + if (isEIP1559 && ChainId.Astar) return await Astar.getGasOptions() if (isEIP1559) return await MetaSwap.getGasOptions(options.chainId) return await DeBank.getGasOptions(options.chainId) } catch (error) { diff --git a/packages/web3-providers/src/astar/index.ts b/packages/web3-providers/src/astar/index.ts new file mode 100644 index 000000000000..f6f2cefebee5 --- /dev/null +++ b/packages/web3-providers/src/astar/index.ts @@ -0,0 +1,35 @@ +import urlcat from 'urlcat' +import { GasOptionType } from '@masknet/web3-shared-base' +import type { ChainId, GasOption } from '@masknet/web3-shared-evm' +import type { GasOptionAPI } from '../types' +import type { EstimateSuggestResponse } from './types' + +const ASTAR_API = 'https://gas.astar.network/' + +export class AstarAPI implements GasOptionAPI.Provider { + async getGasOptions(): Promise> { + const response = await fetch(urlcat(ASTAR_API, '/api/gasnow?network=astar')) + const result = (await response.json()) as EstimateSuggestResponse + + return { + [GasOptionType.FAST]: { + estimatedBaseFee: result.eip1559.baseFeePerGas ?? '0', + estimatedSeconds: result.timestamp ?? 0, + suggestedMaxFeePerGas: result.tip.fast ?? '0', + suggestedMaxPriorityFeePerGas: result.eip1559.priorityFeePerGas.fast ?? '0', + }, + [GasOptionType.NORMAL]: { + estimatedBaseFee: result.eip1559.baseFeePerGas ?? '0', + estimatedSeconds: result.timestamp ?? 0, + suggestedMaxFeePerGas: result.tip.average ?? '0', + suggestedMaxPriorityFeePerGas: result.eip1559.priorityFeePerGas.average ?? '0', + }, + [GasOptionType.SLOW]: { + estimatedBaseFee: result.estimatedBaseFee ?? '0', + estimatedSeconds: result.timestamp ?? 0, + suggestedMaxFeePerGas: result.tip.slow ?? '0', + suggestedMaxPriorityFeePerGas: result.eip1559.priorityFeePerGas.slow ?? '0', + }, + } + } +} diff --git a/packages/web3-providers/src/astar/types.ts b/packages/web3-providers/src/astar/types.ts new file mode 100644 index 000000000000..0d2b97443537 --- /dev/null +++ b/packages/web3-providers/src/astar/types.ts @@ -0,0 +1,30 @@ +export interface EstimateSuggestOption { + maxWaitTimeEstimate: number + minWaitTimeEstimate: number + suggestedMaxFeePerGas: string + suggestedMaxPriorityFeePerGas: string +} + +export interface EstimateSuggestResponse { + tip: Tip + slow?: string + average?: string + fast?: string + estimatedBaseFee: string + low?: EstimateSuggestOption + medium?: EstimateSuggestOption + high?: EstimateSuggestOption + eip1559: Eip1559 + timestamp: number +} + +export interface Eip1559 { + priorityFeePerGas: Tip + baseFeePerGas: string +} + +export interface Tip { + average: string + slow: string + fast: string +} diff --git a/packages/web3-providers/src/index.ts b/packages/web3-providers/src/index.ts index 6973dc7ed719..5dc5bb9aa22c 100644 --- a/packages/web3-providers/src/index.ts +++ b/packages/web3-providers/src/index.ts @@ -13,6 +13,7 @@ import { InstagramAPI } from './instagram' import { DeBankAPI } from './debank' import { ZerionAPI } from './zerion' import { MetaSwapAPI } from './metaswap' +import { AstarAPI } from './astar' import { GoPlusLabsAPI } from './gopluslabs' import { NextIDProofAPI, NextIDStorageAPI } from './NextID' import { Alchemy_EVM_API, Alchemy_FLOW_API } from './alchemy' @@ -40,6 +41,7 @@ export const TokenList = new TokenListAPI() export const DeBank = new DeBankAPI() export const Zerion = new ZerionAPI() export const MetaSwap = new MetaSwapAPI() +export const Astar = new AstarAPI() export const NextIDStorage = new NextIDStorageAPI() export const EthereumWeb3 = new EthereumWeb3API() export const NextIDProof = new NextIDProofAPI() From 7ac67cadc3093237a890f81efdd937833278c6fc Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 29 Jun 2022 14:47:14 +0100 Subject: [PATCH 17/31] feat(astar): add balance checker --- .../src/plugins/RedPacket/SNSAdaptor/RedPacketCreateNew.tsx | 4 +--- packages/web3-constants/evm/coingecko.json | 2 +- packages/web3-constants/evm/ethereum.json | 4 ++-- packages/web3-shared/evm/constants/chains.json | 4 +--- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/packages/mask/src/plugins/RedPacket/SNSAdaptor/RedPacketCreateNew.tsx b/packages/mask/src/plugins/RedPacket/SNSAdaptor/RedPacketCreateNew.tsx index 3527e7888aad..b2bfa7610b7d 100644 --- a/packages/mask/src/plugins/RedPacket/SNSAdaptor/RedPacketCreateNew.tsx +++ b/packages/mask/src/plugins/RedPacket/SNSAdaptor/RedPacketCreateNew.tsx @@ -76,9 +76,7 @@ export function RedPacketCreateNew(props: RedPacketFormProps & { state: readonly ), children: , sx: { p: 0 }, - disabled: ![ChainId.Mainnet, ChainId.Matic, ChainId.BSC, ChainId.Conflux, ChainId.Astar].includes( - chainId, - ), + disabled: ![ChainId.Mainnet, ChainId.Matic, ChainId.BSC, ChainId.Conflux].includes(chainId), }, ], state, diff --git a/packages/web3-constants/evm/coingecko.json b/packages/web3-constants/evm/coingecko.json index e1d0f70c43cf..68bda5835fba 100644 --- a/packages/web3-constants/evm/coingecko.json +++ b/packages/web3-constants/evm/coingecko.json @@ -43,7 +43,7 @@ "Aurora": "ethereum", "Aurora_Testnet": "", "Conflux": "conflux-token", - "Astar": "astar-token", + "Astar": "astar", "Harmony": "harmony", "Harmony_Test": "" } diff --git a/packages/web3-constants/evm/ethereum.json b/packages/web3-constants/evm/ethereum.json index 0c4264bf71d6..1336dd3478d7 100644 --- a/packages/web3-constants/evm/ethereum.json +++ b/packages/web3-constants/evm/ethereum.json @@ -19,7 +19,7 @@ "Aurora": "0xC119574D5Fb333F5AC018658D4d8b5035E16bf39", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", + "Astar": "0x70553bBeC6F7d2C5e6E1Bc02f821F6863546D11e", "Harmony": "0xc119574d5fb333f5ac018658d4d8b5035e16bf39", "Harmony_Test": "" }, @@ -43,7 +43,7 @@ "Aurora": "0x6cc1b1058F9153358278C35E0b2D382f1585854B", "Aurora_Testnet": "", "Conflux": "0x19f179d7e0d7d9f9d5386afff64271d98a91615b", - "Astar": "0x5FA712069F62c62eA73a7F8e2A4bdec11c2BfeF7", + "Astar": "0x1410304B91a280ad083196B0B50e9d8df749d860", "Harmony": "0x6cc1b1058f9153358278c35e0b2d382f1585854b", "Harmony_Test": "" }, diff --git a/packages/web3-shared/evm/constants/chains.json b/packages/web3-shared/evm/constants/chains.json index 7a3742f339ac..b1bf93549d23 100644 --- a/packages/web3-shared/evm/constants/chains.json +++ b/packages/web3-shared/evm/constants/chains.json @@ -841,7 +841,6 @@ { "chainId": 66, "name": "OKExChain Mainnet", - "chain": "OKEx", "network": "mainnet", "shortName": "okt", "features": [], @@ -3020,8 +3019,8 @@ { "chainId": 592, "name": "Astar", - "chain": "Astar", "network": "mainnet", + "shortName": "Astar", "rpc": ["https://evm.astar.network"], "faucets": [], "features": ["EIP1559"], @@ -3033,7 +3032,6 @@ "logoURI": "https://static.debank.com/image/chain/logo_url/astar/398c7e0014bdada3d818367a7273fabe.png" }, "infoURL": "https://blockscout.com/astar/", - "shortName": "Astar", "explorers": [ { "name": "blockscout", From a7b94e293ef1e8c80f87134093a168c6fe6290a4 Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 29 Jun 2022 20:39:19 +0100 Subject: [PATCH 18/31] chore(astar): fixed chain type and token name --- packages/web3-providers/src/zerion/format.ts | 2 +- packages/web3-shared/evm/constants/chains.json | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/web3-providers/src/zerion/format.ts b/packages/web3-providers/src/zerion/format.ts index 1964983a7d85..175026fc9ec7 100644 --- a/packages/web3-providers/src/zerion/format.ts +++ b/packages/web3-providers/src/zerion/format.ts @@ -65,7 +65,7 @@ export function formatAssets( const balance = leftShift(quantity, asset.decimals).toNumber() const value = (asset as ZerionAsset).price?.value ?? (asset as ZerionCovalentAsset).value ?? 0 const isNativeToken = (symbol: string) => - ['ETH', 'BNB', 'MATIC', 'ARETH', 'AETH', 'ONE', 'ASTAR'].includes(symbol) + ['ETH', 'BNB', 'MATIC', 'ARETH', 'AETH', 'ONE', 'ASTR'].includes(symbol) const address = isNativeToken(asset.symbol) ? getTokenConstants().NATIVE_TOKEN_ADDRESS ?? '' : asset.asset_code return { diff --git a/packages/web3-shared/evm/constants/chains.json b/packages/web3-shared/evm/constants/chains.json index b1bf93549d23..0ab0dd72891e 100644 --- a/packages/web3-shared/evm/constants/chains.json +++ b/packages/web3-shared/evm/constants/chains.json @@ -3018,6 +3018,7 @@ }, { "chainId": 592, + "type": "Astar", "name": "Astar", "network": "mainnet", "shortName": "Astar", @@ -3026,8 +3027,8 @@ "features": ["EIP1559"], "nativeCurrency": { "chainId": 592, - "name": "Astar", - "symbol": "Astar", + "name": "ASTR", + "symbol": "ASTR", "decimals": 18, "logoURI": "https://static.debank.com/image/chain/logo_url/astar/398c7e0014bdada3d818367a7273fabe.png" }, From 61bc5afce18bf6ac39d4ec0e47ed0006060165c0 Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 29 Jun 2022 21:29:19 +0100 Subject: [PATCH 19/31] chore(astar): lookdrop fixed --- packages/web3-constants/evm/token-asset-base-url.json | 5 ++++- packages/web3-constants/evm/token-list.json | 2 +- packages/web3-constants/evm/token.json | 2 +- packages/web3-shared/evm/constants/chains.json | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/web3-constants/evm/token-asset-base-url.json b/packages/web3-constants/evm/token-asset-base-url.json index ab6564c74852..2b3314471b0c 100644 --- a/packages/web3-constants/evm/token-asset-base-url.json +++ b/packages/web3-constants/evm/token-asset-base-url.json @@ -69,6 +69,9 @@ "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/harmony" ], "Harmony_Test": [], - "Astar": [] + "Astar": [ + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/astar", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/astar" + ] } } diff --git a/packages/web3-constants/evm/token-list.json b/packages/web3-constants/evm/token-list.json index 8fafb279d8fb..ceab58373636 100644 --- a/packages/web3-constants/evm/token-list.json +++ b/packages/web3-constants/evm/token-list.json @@ -45,6 +45,6 @@ "Conflux": [], "Harmony": [], "Harmony_Test": [], - "Astar": [] + "Astar": ["https://tokens.r2d2.to/latest/592/non-fungible-tokens.json"] } } diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index d726a27856ce..faa4c4dda8dc 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -1269,7 +1269,7 @@ "Conflux": "0x0000000000000000000000000000000000000000", "Harmony": "0x0000000000000000000000000000000000000000", "Harmony_Test": "0x0000000000000000000000000000000000000000", - "Astar": "" + "Astar": "0x0000000000000000000000000000000000000000" }, "WETH_ADDRESS": { "Mainnet": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", diff --git a/packages/web3-shared/evm/constants/chains.json b/packages/web3-shared/evm/constants/chains.json index 0ab0dd72891e..faeac00abd3c 100644 --- a/packages/web3-shared/evm/constants/chains.json +++ b/packages/web3-shared/evm/constants/chains.json @@ -3027,7 +3027,7 @@ "features": ["EIP1559"], "nativeCurrency": { "chainId": 592, - "name": "ASTR", + "name": "ASTAR", "symbol": "ASTR", "decimals": 18, "logoURI": "https://static.debank.com/image/chain/logo_url/astar/398c7e0014bdada3d818367a7273fabe.png" From dc42d38b1ef603be380a1d603b86dba8bb979349 Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 29 Jun 2022 22:44:34 +0100 Subject: [PATCH 20/31] chore(astar): fixed gas --- packages/plugins/EVM/src/state/Hub/hub.ts | 6 +-- packages/web3-constants/evm/aave.json | 12 +++--- packages/web3-constants/evm/airdrop.json | 4 +- packages/web3-constants/evm/coingecko.json | 8 ++-- .../web3-constants/evm/coinmarketcap.json | 4 +- packages/web3-constants/evm/cryptoartai.json | 12 +++--- packages/web3-constants/evm/debank.json | 4 +- packages/web3-constants/evm/dhedge.json | 8 ++-- packages/web3-constants/evm/ethereum.json | 16 ++++---- packages/web3-constants/evm/explorer.json | 8 ++-- packages/web3-constants/evm/gitcoin.json | 16 ++++---- .../web3-constants/evm/good-ghosting.json | 8 ++-- packages/web3-constants/evm/ito.json | 28 +++++++------- packages/web3-constants/evm/lido.json | 8 ++-- packages/web3-constants/evm/mask-box.json | 8 ++-- .../web3-constants/evm/nft-red-packet.json | 8 ++-- packages/web3-constants/evm/openocean.json | 4 +- packages/web3-constants/evm/opensea-api.json | 12 +++--- packages/web3-constants/evm/pooltogether.json | 8 ++-- packages/web3-constants/evm/red-packet.json | 24 ++++++------ packages/web3-constants/evm/rpc.json | 2 +- .../evm/space-station-galaxy.json | 8 ++-- .../evm/token-asset-base-url.json | 5 +-- packages/web3-constants/evm/trending.json | 12 +++--- packages/web3-constants/evm/zerion.json | 8 ++-- packages/web3-providers/src/astar/index.ts | 37 ++++++++++++------- packages/web3-providers/src/astar/types.ts | 3 -- packages/web3-providers/src/index.ts | 2 +- .../web3-shared/evm/constants/chains.json | 25 +++++++++++++ 29 files changed, 168 insertions(+), 140 deletions(-) diff --git a/packages/plugins/EVM/src/state/Hub/hub.ts b/packages/plugins/EVM/src/state/Hub/hub.ts index a82cccffbe5c..cf8fa3ea0fdc 100644 --- a/packages/plugins/EVM/src/state/Hub/hub.ts +++ b/packages/plugins/EVM/src/state/Hub/hub.ts @@ -5,7 +5,7 @@ import { DeBank, EthereumWeb3, MetaSwap, - Astar, + AstarGas, OpenSea, Rarible, TokenList, @@ -89,8 +89,8 @@ class Hub implements EVM_Hub { }) try { const isEIP1559 = chainResolver.isSupport(options.chainId, 'EIP1559') - if (isEIP1559 && ChainId.Astar) return await Astar.getGasOptions() - if (isEIP1559) return await MetaSwap.getGasOptions(options.chainId) + if (isEIP1559 && chainId !== 592) return await MetaSwap.getGasOptions(options.chainId) + if (chainId === 592) return await AstarGas.getGasOptions(options.chainId) return await DeBank.getGasOptions(options.chainId) } catch (error) { return EthereumWeb3.getGasOptions(options.chainId) diff --git a/packages/web3-constants/evm/aave.json b/packages/web3-constants/evm/aave.json index eddbcab9907f..f49cbd779698 100644 --- a/packages/web3-constants/evm/aave.json +++ b/packages/web3-constants/evm/aave.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "AAVE_LENDING_POOL_ADDRESSES_PROVIDER_CONTRACT_ADDRESS": { "Mainnet": "0xb53c1a33016b2dc2ff3653530bff1848a515c8c5", @@ -43,9 +43,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "AAVE_PROTOCOL_DATA_PROVIDER_CONTRACT_ADDRESS": { "Mainnet": "0x057835Ad21a177dbdd3090bB1CAE03EaCF78Fc6d", @@ -67,8 +67,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/airdrop.json b/packages/web3-constants/evm/airdrop.json index b34d9a08d2f4..132c0c574c82 100644 --- a/packages/web3-constants/evm/airdrop.json +++ b/packages/web3-constants/evm/airdrop.json @@ -19,8 +19,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/coingecko.json b/packages/web3-constants/evm/coingecko.json index 68bda5835fba..3698668fd876 100644 --- a/packages/web3-constants/evm/coingecko.json +++ b/packages/web3-constants/evm/coingecko.json @@ -19,9 +19,9 @@ "Aurora": "aurora", "Aurora_Testnet": "", "Conflux": "", - "Astar": "astar", "Harmony": "harmony", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "astar" }, "COIN_ID": { "Mainnet": "ethereum", @@ -43,8 +43,8 @@ "Aurora": "ethereum", "Aurora_Testnet": "", "Conflux": "conflux-token", - "Astar": "astar", "Harmony": "harmony", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "astar" } } diff --git a/packages/web3-constants/evm/coinmarketcap.json b/packages/web3-constants/evm/coinmarketcap.json index c7e1591ab0a3..453e4e74c306 100644 --- a/packages/web3-constants/evm/coinmarketcap.json +++ b/packages/web3-constants/evm/coinmarketcap.json @@ -19,8 +19,8 @@ "Aurora": "14803", "Aurora_Testnet": "", "Conflux": "7334", - "Astar": "12885", "Harmony": "3945", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "12885" } } diff --git a/packages/web3-constants/evm/cryptoartai.json b/packages/web3-constants/evm/cryptoartai.json index 90780a86ecc1..05af80ec4af0 100644 --- a/packages/web3-constants/evm/cryptoartai.json +++ b/packages/web3-constants/evm/cryptoartai.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "ARTIST_ACCEPTING_BIDS_V2": { "Mainnet": "0x78C889749f29D2965a76Ede3BBb232A9729Ccf0b", @@ -43,9 +43,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "CANFT_MARKET": { "Mainnet": "0x72d081953957723e540780a0C6bA31725469238E", @@ -67,8 +67,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/debank.json b/packages/web3-constants/evm/debank.json index 88228274bca2..6b1e02becd7d 100644 --- a/packages/web3-constants/evm/debank.json +++ b/packages/web3-constants/evm/debank.json @@ -19,8 +19,8 @@ "Aurora": "aurora", "Aurora_Testnet": "", "Conflux": "", - "Astar": "astar", "Harmony": "hmy", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "astar" } } diff --git a/packages/web3-constants/evm/dhedge.json b/packages/web3-constants/evm/dhedge.json index b6f9cddb8dbf..8f4c1f2b2936 100644 --- a/packages/web3-constants/evm/dhedge.json +++ b/packages/web3-constants/evm/dhedge.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "API_URL": { "Mainnet": "https://api-v2.dhedge.org/graphql", @@ -43,8 +43,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/ethereum.json b/packages/web3-constants/evm/ethereum.json index 1336dd3478d7..028b069f3e9d 100644 --- a/packages/web3-constants/evm/ethereum.json +++ b/packages/web3-constants/evm/ethereum.json @@ -19,9 +19,9 @@ "Aurora": "0xC119574D5Fb333F5AC018658D4d8b5035E16bf39", "Aurora_Testnet": "", "Conflux": "", - "Astar": "0x70553bBeC6F7d2C5e6E1Bc02f821F6863546D11e", "Harmony": "0xc119574d5fb333f5ac018658d4d8b5035e16bf39", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "0x70553bBeC6F7d2C5e6E1Bc02f821F6863546D11e" }, "MULTICALL_ADDRESS": { "Mainnet": "0x1F98415757620B543A52E61c46B32eB19261F984", @@ -43,9 +43,9 @@ "Aurora": "0x6cc1b1058F9153358278C35E0b2D382f1585854B", "Aurora_Testnet": "", "Conflux": "0x19f179d7e0d7d9f9d5386afff64271d98a91615b", - "Astar": "0x1410304B91a280ad083196B0B50e9d8df749d860", "Harmony": "0x6cc1b1058f9153358278c35e0b2d382f1585854b", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "0x1410304B91a280ad083196B0B50e9d8df749d860" }, "ENS_REGISTRAR_ADDRESS": { "Mainnet": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e", @@ -67,9 +67,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "ENS_REVERSE_RECORDS_ADDRESS": { "Mainnet": "0x3671aE578E63FdF66ad4F3E12CC0c0d71Ac7510C", @@ -91,8 +91,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/explorer.json b/packages/web3-constants/evm/explorer.json index 3e92304c9905..6f1b93e49ddd 100644 --- a/packages/web3-constants/evm/explorer.json +++ b/packages/web3-constants/evm/explorer.json @@ -19,9 +19,9 @@ "Aurora": [], "Aurora_Testnet": [], "Conflux": [], - "Astar": [], "Harmony": [], - "Harmony_Test": [] + "Harmony_Test": [], + "Astar": [] }, "EXPLORER_API": { "Mainnet": "https://api.etherscan.io/api", @@ -43,8 +43,8 @@ "Aurora": "https://explorer.mainnet.aurora.dev/api", "Aurora_Testnet": "https://explorer.testnet.aurora.dev/api", "Conflux": "https://evmapi.confluxscan.net/api", - "Astar": "https://blockscout.com/astar/api", "Harmony": "https://explorer.harmony.one", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "https://blockscout.com/astar/api" } } diff --git a/packages/web3-constants/evm/gitcoin.json b/packages/web3-constants/evm/gitcoin.json index db847c67e129..0cf1efdc5a68 100644 --- a/packages/web3-constants/evm/gitcoin.json +++ b/packages/web3-constants/evm/gitcoin.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "BULK_CHECKOUT_ADDRESS": { "Mainnet": "0x7d655c57f71464B6f83811C55D84009Cd9f5221C", @@ -43,9 +43,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "GITCOIN_ETH_ADDRESS": { "Mainnet": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", @@ -67,9 +67,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "GITCOIN_TIP_PERCENTAGE": { "Mainnet": 5, @@ -91,8 +91,8 @@ "Aurora": 0, "Aurora_Testnet": 0, "Conflux": 0, - "Astar": 0, "Harmony": 0, - "Harmony_Test": 0 + "Harmony_Test": 0, + "Astar": 0 } } diff --git a/packages/web3-constants/evm/good-ghosting.json b/packages/web3-constants/evm/good-ghosting.json index 3a153382620a..c3056a773bd8 100644 --- a/packages/web3-constants/evm/good-ghosting.json +++ b/packages/web3-constants/evm/good-ghosting.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "GOOD_GHOSTING_INCENTIVES_CONTRACT_ADDRESS": { "Mainnet": "", @@ -43,8 +43,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/ito.json b/packages/web3-constants/evm/ito.json index 8951b55367a5..54a7d3133901 100644 --- a/packages/web3-constants/evm/ito.json +++ b/packages/web3-constants/evm/ito.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MASK_ITO_CONTRACT_ADDRESS": { "Mainnet": "0x86812da3A623ab9606976078588b80C315E55FA3", @@ -43,9 +43,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "ITO2_CONTRACT_ADDRESS": { "Mainnet": "0xc2CFbF22d6Dc87D0eE18d38d73733524c109Ff46", @@ -67,9 +67,9 @@ "Aurora": "0x2cf91AD8C175305EBe6970Bd8f81231585EFbd77", "Aurora_Testnet": "0xdcA6F476EebCDE8FE8b072e3fC80dBC28dC209b3", "Conflux": "0x066804d9123bf2609ed4a4a40b1177a9c5a9ed51", - "Astar": "0x1D720657e6B11F468BACE2d513b10C8CbfF247Cd", "Harmony": "0x5b966f3a32db9c180843bcb40267a66b73e4f022", - "Harmony_Test": "0x578a7fee5f0d8cec7d00578bf37374c5b95c4b98" + "Harmony_Test": "0x578a7fee5f0d8cec7d00578bf37374c5b95c4b98", + "Astar": "0x1D720657e6B11F468BACE2d513b10C8CbfF247Cd" }, "ITO2_CONTRACT_CREATION_BLOCK_HEIGHT": { "Mainnet": 12766513, @@ -91,9 +91,9 @@ "Aurora": 57350598, "Aurora_Testnet": 77919102, "Conflux": 37722805, - "Astar": 915536, "Harmony": 24133305, - "Harmony_Test": 22744597 + "Harmony_Test": 22744597, + "Astar": 915536 }, "DEFAULT_QUALIFICATION_ADDRESS": { "Mainnet": "0x81b6ae377e360dcad63611846a2516f4ba8c88ac", @@ -115,9 +115,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "DEFAULT_QUALIFICATION2_ADDRESS": { "Mainnet": "0x4dC5f343Fe57E4fbDA1B454d125D396A3181272c", @@ -139,9 +139,9 @@ "Aurora": "0x578a7Fee5f0D8CEc7d00578Bf37374C5b95C4b98", "Aurora_Testnet": "", "Conflux": "0x05ee315e407c21a594f807d61d6cc11306d1f149", - "Astar": "0xdd2Cf3fF67769d49613587CcE8A452D3b58AfC33", "Harmony": "0x02Ea0720254F7fa4eca7d09A1b9C783F1020EbEF", - "Harmony_Test": "0x812463356F58fc8194645A1838ee6C52D8ca2D26" + "Harmony_Test": "0x812463356F58fc8194645A1838ee6C52D8ca2D26", + "Astar": "0xdd2Cf3fF67769d49613587CcE8A452D3b58AfC33" }, "SUBGRAPH_URL": { "Mainnet": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-mainnet", @@ -163,8 +163,8 @@ "Aurora": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-aurora", "Aurora_Testnet": "", "Conflux": "", - "Astar": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-astar", "Harmony": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-harmony", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-astar" } } diff --git a/packages/web3-constants/evm/lido.json b/packages/web3-constants/evm/lido.json index f8606536cbe1..c5ec2e61cbd3 100644 --- a/packages/web3-constants/evm/lido.json +++ b/packages/web3-constants/evm/lido.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "LIDO_REFERRAL_ADDRESS": { "Mainnet": "0x934b510d4c9103e6a87aef13b816fb080286d649", @@ -43,8 +43,8 @@ "Aurora": "0x934b510d4c9103e6a87aef13b816fb080286d649", "Aurora_Testnet": "0x934b510d4c9103e6a87aef13b816fb080286d649", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/mask-box.json b/packages/web3-constants/evm/mask-box.json index 18cd73134896..dd324a8e29c8 100644 --- a/packages/web3-constants/evm/mask-box.json +++ b/packages/web3-constants/evm/mask-box.json @@ -19,9 +19,9 @@ "Aurora": "0xf5056B96ab242C566002852d0b98ce0BcDf1af51", "Aurora_Testnet": "0xB4D669bc117735FdA44e90e52795132187705B21", "Conflux": "", - "Astar": "0x041Bdc5b713aFc3AA06b9511E1e55552138b139A", "Harmony": "0xDc0905F2Dac875E29A36f22F1Ea046e063875D3e", - "Harmony_Test": "0x4Fda6d9Bb68Af18E5d686555b18cCeA7C82E0A3F" + "Harmony_Test": "0x4Fda6d9Bb68Af18E5d686555b18cCeA7C82E0A3F", + "Astar": "0x041Bdc5b713aFc3AA06b9511E1e55552138b139A" }, "MASK_BOX_CONTRACT_FROM_BLOCK": { "Mainnet": 13687866, @@ -43,8 +43,8 @@ "Aurora": 57259004, "Aurora_Testnet": 77919118, "Conflux": 0, - "Astar": 911315, "Harmony": 24172689, - "Harmony_Test": 22787067 + "Harmony_Test": 22787067, + "Astar": 911315 } } diff --git a/packages/web3-constants/evm/nft-red-packet.json b/packages/web3-constants/evm/nft-red-packet.json index 1d8c6ab551e8..a0e6a16e59f7 100644 --- a/packages/web3-constants/evm/nft-red-packet.json +++ b/packages/web3-constants/evm/nft-red-packet.json @@ -19,9 +19,9 @@ "Aurora": "0x05ee315E407C21a594f807D61d6CC11306D1F149", "Aurora_Testnet": "0x97369fEE7db34E0BfE47861f2ec44b4378d13eB4", "Conflux": "0x5b966f3a32db9c180843bcb40267a66b73e4f022", - "Astar": "0xc3e62b2CC70439C32a381Bfc056aCEd1d7162cef", "Harmony": "0x83d6b366f21e413f214eb077d5378478e71a5ed2", - "Harmony_Test": "0x981be454a930479d92c91a0092d204b64845a5d6" + "Harmony_Test": "0x981be454a930479d92c91a0092d204b64845a5d6", + "Astar": "0xc3e62b2CC70439C32a381Bfc056aCEd1d7162cef" }, "SUBGRAPH_URL": { "Mainnet": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-nft-red-packet-mainnet", @@ -43,8 +43,8 @@ "Aurora": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-nft-red-packet-aurora", "Aurora_Testnet": "", "Conflux": "", - "Astar": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-nft-red-packet-astar", "Harmony": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-nft-red-packet-harmony", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-nft-red-packet-astar" } } diff --git a/packages/web3-constants/evm/openocean.json b/packages/web3-constants/evm/openocean.json index 8338526a18d9..c721f690d2ea 100644 --- a/packages/web3-constants/evm/openocean.json +++ b/packages/web3-constants/evm/openocean.json @@ -19,8 +19,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/opensea-api.json b/packages/web3-constants/evm/opensea-api.json index dbc1cca34b01..b6223e3f3167 100644 --- a/packages/web3-constants/evm/opensea-api.json +++ b/packages/web3-constants/evm/opensea-api.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "GET_SINGLE_ASSET_URL": { "Mainnet": "https://api.opensea.io/api/v1/asset", @@ -43,9 +43,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "GET_ASSETS_URL": { "Mainnet": "https://api.opensea.io/api/v1/assets", @@ -67,8 +67,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/pooltogether.json b/packages/web3-constants/evm/pooltogether.json index b35ca9bff4c5..a0cb029c1c38 100644 --- a/packages/web3-constants/evm/pooltogether.json +++ b/packages/web3-constants/evm/pooltogether.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "MASK_POOL_ADDRESS": { "Mainnet": "", @@ -43,8 +43,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/red-packet.json b/packages/web3-constants/evm/red-packet.json index ed488ac51f7b..a96a79b8baef 100644 --- a/packages/web3-constants/evm/red-packet.json +++ b/packages/web3-constants/evm/red-packet.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "HAPPY_RED_PACKET_ADDRESS_V2": { "Mainnet": "0x8D8912E1237F9FF3EF661F32743CFB276E052F98", @@ -43,9 +43,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "HAPPY_RED_PACKET_ADDRESS_V3": { "Mainnet": "", @@ -67,9 +67,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "HAPPY_RED_PACKET_ADDRESS_V4": { "Mainnet": "0xaBBe1101FD8fa5847c452A6D70C8655532B03C33", @@ -91,9 +91,9 @@ "Aurora": "0x19f179D7e0D7d9F9d5386afFF64271D98A91615B", "Aurora_Testnet": "0xdB93cCd481012bB5D1E2c8d0aF7C5f2940c00fdC", "Conflux": "0x96c7d011cdfd467f551605f0f5fce279f86f4186", - "Astar": "0x2cF46Db820e279c5fBF778367D49d9C931D54524", "Harmony": "0xab7b1be4233a04e5c43a810e75657eced8e5463b", - "Harmony_Test": "0x96c7d011cdfd467f551605f0f5fce279f86f4186" + "Harmony_Test": "0x96c7d011cdfd467f551605f0f5fce279f86f4186", + "Astar": "0x2cF46Db820e279c5fBF778367D49d9C931D54524" }, "HAPPY_RED_PACKET_ADDRESS_V4_BLOCK_HEIGHT": { "Mainnet": 12939427, @@ -115,9 +115,9 @@ "Aurora": 57552338, "Aurora_Testnet": 77918765, "Conflux": 37670572, - "Astar": 910985, "Harmony": 24134162, - "Harmony_Test": 22701101 + "Harmony_Test": 22701101, + "Astar": 910985 }, "SUBGRAPH_URL": { "Mainnet": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-mainnet", @@ -139,8 +139,8 @@ "Aurora": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-aurora", "Aurora_Testnet": "", "Conflux": "", - "Astar": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-astar", "Harmony": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-harmony", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-astar" } } diff --git a/packages/web3-constants/evm/rpc.json b/packages/web3-constants/evm/rpc.json index a3387a953c04..bd9e4f3aedf6 100644 --- a/packages/web3-constants/evm/rpc.json +++ b/packages/web3-constants/evm/rpc.json @@ -93,6 +93,6 @@ "Conflux": [0, 0, 0, 0, 0], "Harmony": [0, 0, 0, 0, 0], "Harmony_Test": [0, 0, 0, 0, 0], - "Astar": [0, 0, 0, 0, 0] + "Astar": [0, 1, 2, 3, 4] } } diff --git a/packages/web3-constants/evm/space-station-galaxy.json b/packages/web3-constants/evm/space-station-galaxy.json index 77a522b7eeaf..6a91aee77250 100644 --- a/packages/web3-constants/evm/space-station-galaxy.json +++ b/packages/web3-constants/evm/space-station-galaxy.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "SUBGRAPH_URL": { "Mainnet": "", @@ -43,8 +43,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/token-asset-base-url.json b/packages/web3-constants/evm/token-asset-base-url.json index 2b3314471b0c..ab6564c74852 100644 --- a/packages/web3-constants/evm/token-asset-base-url.json +++ b/packages/web3-constants/evm/token-asset-base-url.json @@ -69,9 +69,6 @@ "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/harmony" ], "Harmony_Test": [], - "Astar": [ - "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/astar", - "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/astar" - ] + "Astar": [] } } diff --git a/packages/web3-constants/evm/trending.json b/packages/web3-constants/evm/trending.json index 10176752bb44..8f02523369da 100644 --- a/packages/web3-constants/evm/trending.json +++ b/packages/web3-constants/evm/trending.json @@ -19,9 +19,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "UNISWAP_V2_HEALTH_URL": { "Mainnet": "https://api.thegraph.com/index-node/graphql", @@ -43,9 +43,9 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" }, "ETHEREUM_BLOCKS_SUBGRAPH_URL": { "Mainnet": "https://api.thegraph.com/subgraphs/name/blocklytics/ethereum-blocks", @@ -67,8 +67,8 @@ "Aurora": "", "Aurora_Testnet": "", "Conflux": "", - "Astar": "", "Harmony": "", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "" } } diff --git a/packages/web3-constants/evm/zerion.json b/packages/web3-constants/evm/zerion.json index ce9949feecb8..8105283e9b69 100644 --- a/packages/web3-constants/evm/zerion.json +++ b/packages/web3-constants/evm/zerion.json @@ -19,9 +19,9 @@ "Aurora": "aurora-assets", "Aurora_Testnet": "", "Conflux": "", - "Astar": "astar-assets", "Harmony": "harmony-assets", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "astar-assets" }, "TRANSACTIONS_SCOPE_NAME": { "Mainnet": "transactions", @@ -43,8 +43,8 @@ "Aurora": "aurora-transactions", "Aurora_Testnet": "", "Conflux": "", - "Astar": "astar-transactions", "Harmony": "harmony-transactions", - "Harmony_Test": "" + "Harmony_Test": "", + "Astar": "astar-transactions" } } diff --git a/packages/web3-providers/src/astar/index.ts b/packages/web3-providers/src/astar/index.ts index f6f2cefebee5..5554ffb6c29d 100644 --- a/packages/web3-providers/src/astar/index.ts +++ b/packages/web3-providers/src/astar/index.ts @@ -1,35 +1,44 @@ -import urlcat from 'urlcat' import { GasOptionType } from '@masknet/web3-shared-base' import type { ChainId, GasOption } from '@masknet/web3-shared-evm' import type { GasOptionAPI } from '../types' import type { EstimateSuggestResponse } from './types' +import Web3 from 'web3' -const ASTAR_API = 'https://gas.astar.network/' +const ASTAR_API = 'https://gas.astar.network/api/gasnow?network=astar' export class AstarAPI implements GasOptionAPI.Provider { - async getGasOptions(): Promise> { - const response = await fetch(urlcat(ASTAR_API, '/api/gasnow?network=astar')) - const result = (await response.json()) as EstimateSuggestResponse + async getGasOptions(chainId: ChainId): Promise> { + const response = await fetch(ASTAR_API) + const gas = await response.json() + const result = (await gas.data) as EstimateSuggestResponse + + const { tip } = result + const { priorityFeePerGas } = result.eip1559 return { [GasOptionType.FAST]: { - estimatedBaseFee: result.eip1559.baseFeePerGas ?? '0', + estimatedBaseFee: fromWei(result.eip1559.baseFeePerGas) ?? '0', estimatedSeconds: result.timestamp ?? 0, - suggestedMaxFeePerGas: result.tip.fast ?? '0', - suggestedMaxPriorityFeePerGas: result.eip1559.priorityFeePerGas.fast ?? '0', + suggestedMaxFeePerGas: fromWei(tip.fast) ?? '0', + suggestedMaxPriorityFeePerGas: fromWei(priorityFeePerGas.fast) ?? '0', }, [GasOptionType.NORMAL]: { - estimatedBaseFee: result.eip1559.baseFeePerGas ?? '0', + estimatedBaseFee: fromWei(result.eip1559.baseFeePerGas) ?? '0', estimatedSeconds: result.timestamp ?? 0, - suggestedMaxFeePerGas: result.tip.average ?? '0', - suggestedMaxPriorityFeePerGas: result.eip1559.priorityFeePerGas.average ?? '0', + suggestedMaxFeePerGas: fromWei(tip.average) ?? '0', + suggestedMaxPriorityFeePerGas: fromWei(priorityFeePerGas.average) ?? '0', }, [GasOptionType.SLOW]: { - estimatedBaseFee: result.estimatedBaseFee ?? '0', + estimatedBaseFee: fromWei(result.estimatedBaseFee) ?? '0', estimatedSeconds: result.timestamp ?? 0, - suggestedMaxFeePerGas: result.tip.slow ?? '0', - suggestedMaxPriorityFeePerGas: result.eip1559.priorityFeePerGas.slow ?? '0', + suggestedMaxFeePerGas: fromWei(tip.slow) ?? '0', + suggestedMaxPriorityFeePerGas: fromWei(priorityFeePerGas.slow) ?? '0', }, } } } + +export function fromWei(value: string): string { + const convert = Web3.utils.fromWei(value, 'Gwei') + return convert +} diff --git a/packages/web3-providers/src/astar/types.ts b/packages/web3-providers/src/astar/types.ts index 0d2b97443537..f0acd75b62ff 100644 --- a/packages/web3-providers/src/astar/types.ts +++ b/packages/web3-providers/src/astar/types.ts @@ -11,9 +11,6 @@ export interface EstimateSuggestResponse { average?: string fast?: string estimatedBaseFee: string - low?: EstimateSuggestOption - medium?: EstimateSuggestOption - high?: EstimateSuggestOption eip1559: Eip1559 timestamp: number } diff --git a/packages/web3-providers/src/index.ts b/packages/web3-providers/src/index.ts index 5dc5bb9aa22c..9887a02ffc7f 100644 --- a/packages/web3-providers/src/index.ts +++ b/packages/web3-providers/src/index.ts @@ -41,7 +41,7 @@ export const TokenList = new TokenListAPI() export const DeBank = new DeBankAPI() export const Zerion = new ZerionAPI() export const MetaSwap = new MetaSwapAPI() -export const Astar = new AstarAPI() +export const AstarGas = new AstarAPI() export const NextIDStorage = new NextIDStorageAPI() export const EthereumWeb3 = new EthereumWeb3API() export const NextIDProof = new NextIDProofAPI() diff --git a/packages/web3-shared/evm/constants/chains.json b/packages/web3-shared/evm/constants/chains.json index faeac00abd3c..889483d0ade0 100644 --- a/packages/web3-shared/evm/constants/chains.json +++ b/packages/web3-shared/evm/constants/chains.json @@ -3040,5 +3040,30 @@ "standard": "EIP3091" } ] + }, + { + "chainId": 81, + "type": "Shibuya", + "name": "Shibuya", + "network": "testnet", + "shortName": "Shibuya", + "rpc": ["https://evm.shibuya.network"], + "faucets": [], + "features": ["EIP1559"], + "nativeCurrency": { + "chainId": 81, + "name": "sby", + "symbol": "sby", + "decimals": 18, + "logoURI": "https://static.debank.com/image/chain/logo_url/astar/398c7e0014bdada3d818367a7273fabe.png" + }, + "infoURL": "https://blockscout.com/shibuya/", + "explorers": [ + { + "name": "blockscout", + "url": "https://blockscout.com/shibuya/", + "standard": "EIP3091" + } + ] } ] From 9ac330b1c87fe9691e630714f4cf9a925f30f6c2 Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 5 Jul 2022 21:36:41 +0000 Subject: [PATCH 21/31] chore(astar): change address multicall and balanceChecker --- packages/web3-constants/evm/ethereum.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web3-constants/evm/ethereum.json b/packages/web3-constants/evm/ethereum.json index 028b069f3e9d..504512860ad5 100644 --- a/packages/web3-constants/evm/ethereum.json +++ b/packages/web3-constants/evm/ethereum.json @@ -21,7 +21,7 @@ "Conflux": "", "Harmony": "0xc119574d5fb333f5ac018658d4d8b5035e16bf39", "Harmony_Test": "", - "Astar": "0x70553bBeC6F7d2C5e6E1Bc02f821F6863546D11e" + "Astar": "0xf5056B96ab242C566002852d0b98ce0BcDf1af51" }, "MULTICALL_ADDRESS": { "Mainnet": "0x1F98415757620B543A52E61c46B32eB19261F984", @@ -45,7 +45,7 @@ "Conflux": "0x19f179d7e0d7d9f9d5386afff64271d98a91615b", "Harmony": "0x6cc1b1058f9153358278c35e0b2d382f1585854b", "Harmony_Test": "", - "Astar": "0x1410304B91a280ad083196B0B50e9d8df749d860" + "Astar": "0x861aa52B81A16E146E1f8D39B6C8BdC072d8348d" }, "ENS_REGISTRAR_ADDRESS": { "Mainnet": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e", From d3c1eeaeec91b74a9e703fec1757a41da26d2a87 Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 5 Jul 2022 23:16:51 +0100 Subject: [PATCH 22/31] chore(astar): fixed balance --- packages/web3-providers/src/astar/index.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/web3-providers/src/astar/index.ts b/packages/web3-providers/src/astar/index.ts index 5554ffb6c29d..432cdef4949d 100644 --- a/packages/web3-providers/src/astar/index.ts +++ b/packages/web3-providers/src/astar/index.ts @@ -19,19 +19,19 @@ export class AstarAPI implements GasOptionAPI.Provider { [GasOptionType.FAST]: { estimatedBaseFee: fromWei(result.eip1559.baseFeePerGas) ?? '0', estimatedSeconds: result.timestamp ?? 0, - suggestedMaxFeePerGas: fromWei(tip.fast) ?? '0', + suggestedMaxFeePerGas: tip.fast ?? '0', suggestedMaxPriorityFeePerGas: fromWei(priorityFeePerGas.fast) ?? '0', }, [GasOptionType.NORMAL]: { - estimatedBaseFee: fromWei(result.eip1559.baseFeePerGas) ?? '0', + estimatedBaseFee: result.eip1559.baseFeePerGas ?? '0', estimatedSeconds: result.timestamp ?? 0, - suggestedMaxFeePerGas: fromWei(tip.average) ?? '0', - suggestedMaxPriorityFeePerGas: fromWei(priorityFeePerGas.average) ?? '0', + suggestedMaxFeePerGas: tip.average ?? '0', + suggestedMaxPriorityFeePerGas: priorityFeePerGas.average ?? '0', }, [GasOptionType.SLOW]: { estimatedBaseFee: fromWei(result.estimatedBaseFee) ?? '0', estimatedSeconds: result.timestamp ?? 0, - suggestedMaxFeePerGas: fromWei(tip.slow) ?? '0', + suggestedMaxFeePerGas: tip.slow ?? '0', suggestedMaxPriorityFeePerGas: fromWei(priorityFeePerGas.slow) ?? '0', }, } From 8b747446438df486d6ca6dfe6c45c3746e1ef3d6 Mon Sep 17 00:00:00 2001 From: guanbinrui <52657989+guanbinrui@users.noreply.github.com> Date: Mon, 18 Jul 2022 10:01:27 +0800 Subject: [PATCH 23/31] fix: rpc weights --- packages/web3-constants/evm/rpc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-constants/evm/rpc.json b/packages/web3-constants/evm/rpc.json index bd9e4f3aedf6..a3387a953c04 100644 --- a/packages/web3-constants/evm/rpc.json +++ b/packages/web3-constants/evm/rpc.json @@ -93,6 +93,6 @@ "Conflux": [0, 0, 0, 0, 0], "Harmony": [0, 0, 0, 0, 0], "Harmony_Test": [0, 0, 0, 0, 0], - "Astar": [0, 1, 2, 3, 4] + "Astar": [0, 0, 0, 0, 0] } } From 26113e99c7c537d49f058a45922f4fe3edbd1f54 Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 19 Jul 2022 19:55:25 +0000 Subject: [PATCH 24/31] chore(astar): review fixed --- packages/web3-constants/evm/ito.json | 2 +- packages/web3-providers/src/astar/index.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/web3-constants/evm/ito.json b/packages/web3-constants/evm/ito.json index 54a7d3133901..4d11a0f40a97 100644 --- a/packages/web3-constants/evm/ito.json +++ b/packages/web3-constants/evm/ito.json @@ -165,6 +165,6 @@ "Conflux": "", "Harmony": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-harmony", "Harmony_Test": "", - "Astar": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-astar" + "Astar": "" } } diff --git a/packages/web3-providers/src/astar/index.ts b/packages/web3-providers/src/astar/index.ts index 432cdef4949d..ab576aca2f00 100644 --- a/packages/web3-providers/src/astar/index.ts +++ b/packages/web3-providers/src/astar/index.ts @@ -17,10 +17,10 @@ export class AstarAPI implements GasOptionAPI.Provider { return { [GasOptionType.FAST]: { - estimatedBaseFee: fromWei(result.eip1559.baseFeePerGas) ?? '0', + estimatedBaseFee: formatWeiToGwei(result.eip1559.baseFeePerGas) ?? '0', estimatedSeconds: result.timestamp ?? 0, suggestedMaxFeePerGas: tip.fast ?? '0', - suggestedMaxPriorityFeePerGas: fromWei(priorityFeePerGas.fast) ?? '0', + suggestedMaxPriorityFeePerGas: formatWeiToGwei(priorityFeePerGas.fast) ?? '0', }, [GasOptionType.NORMAL]: { estimatedBaseFee: result.eip1559.baseFeePerGas ?? '0', @@ -29,16 +29,16 @@ export class AstarAPI implements GasOptionAPI.Provider { suggestedMaxPriorityFeePerGas: priorityFeePerGas.average ?? '0', }, [GasOptionType.SLOW]: { - estimatedBaseFee: fromWei(result.estimatedBaseFee) ?? '0', + estimatedBaseFee: formatWeiToGwei(result.estimatedBaseFee) ?? '0', estimatedSeconds: result.timestamp ?? 0, suggestedMaxFeePerGas: tip.slow ?? '0', - suggestedMaxPriorityFeePerGas: fromWei(priorityFeePerGas.slow) ?? '0', + suggestedMaxPriorityFeePerGas: formatWeiToGwei(priorityFeePerGas.slow) ?? '0', }, } } } -export function fromWei(value: string): string { +export function formatWeiToGwei(value: string): string { const convert = Web3.utils.fromWei(value, 'Gwei') return convert } From 589d3bb98cdba7af30b05c0c15e32baa4fa26e13 Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 19 Jul 2022 19:59:35 +0000 Subject: [PATCH 25/31] chore(astar): add astar on rabby file --- packages/web3-providers/src/rabby/helpers.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/web3-providers/src/rabby/helpers.tsx b/packages/web3-providers/src/rabby/helpers.tsx index 22146649a6a3..e3145b4569bf 100644 --- a/packages/web3-providers/src/rabby/helpers.tsx +++ b/packages/web3-providers/src/rabby/helpers.tsx @@ -83,6 +83,7 @@ export const resolveNetworkOnRabby = createLookupTableResolver Date: Wed, 27 Jul 2022 12:29:11 +0000 Subject: [PATCH 26/31] Merge remote-tracking branch 'upstream/develop' into feat/astar-network --- .gitpod.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .gitpod.yml diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 000000000000..f04c5d4533b8 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,7 @@ +# This configuration file was automatically generated by Gitpod. +# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file) +# and commit this file to your remote git repository to share the goodness with others. + +tasks: + - init: pnpm install && pnpm run build + command: pnpm run start From 87a3cf6ba60cadd740702389f597baffa80a87cb Mon Sep 17 00:00:00 2001 From: nuanyang233 Date: Tue, 2 Aug 2022 11:32:10 +0800 Subject: [PATCH 27/31] fix: bugfix --- .../background/services/helper/r2d2Fetch.ts | 5 ++++ .../src/plugins/Trader/apis/trader/index.ts | 2 -- .../mask/src/plugins/Wallet/services/send.ts | 18 +++++++++++- .../EVM/src/state/Connection/connection.ts | 2 +- packages/web3-constants/evm/ethereum.json | 2 +- packages/web3-providers/src/astar/index.ts | 28 ++++++++----------- .../web3-shared/evm/constants/descriptors.ts | 1 + 7 files changed, 36 insertions(+), 22 deletions(-) diff --git a/packages/mask/background/services/helper/r2d2Fetch.ts b/packages/mask/background/services/helper/r2d2Fetch.ts index 756ea7060119..0a0bc656f7c7 100644 --- a/packages/mask/background/services/helper/r2d2Fetch.ts +++ b/packages/mask/background/services/helper/r2d2Fetch.ts @@ -84,6 +84,11 @@ export async function r2d2Fetch(input: RequestInfo, init?: RequestInit): Promise return proxiedFetch(url.replace(u.origin, `https://${r2deWorkerType}.${R2D2_ROOT_URL}`), info) } + // hack astar rpc fetch + if (url.includes('astar.api.onfinality.io')) { + return originalFetch(input, { ...init, headers: { ...init?.headers, 'Content-type': 'application/JSON' } }) + } + // fallback return originalFetch(input, init) } diff --git a/packages/mask/src/plugins/Trader/apis/trader/index.ts b/packages/mask/src/plugins/Trader/apis/trader/index.ts index 9dc8dc07e87c..54dc7dc7e109 100644 --- a/packages/mask/src/plugins/Trader/apis/trader/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trader/index.ts @@ -42,8 +42,6 @@ export async function getAvailableTraderProviders(chainId: ChainId) { return [TradeProvider.SUSHISWAP, TradeProvider.OPENOCEAN] case NetworkType.Avalanche: return [TradeProvider.SUSHISWAP, TradeProvider.OPENOCEAN, TradeProvider.TRADERJOE, TradeProvider.PANGOLIN] - case NetworkType.xDai: - return [TradeProvider.SUSHISWAP, TradeProvider.OPENOCEAN] case NetworkType.Celo: return [TradeProvider.SUSHISWAP] case NetworkType.Fantom: diff --git a/packages/mask/src/plugins/Wallet/services/send.ts b/packages/mask/src/plugins/Wallet/services/send.ts index a9d432cd0d0f..ee98580b1906 100644 --- a/packages/mask/src/plugins/Wallet/services/send.ts +++ b/packages/mask/src/plugins/Wallet/services/send.ts @@ -1,7 +1,7 @@ import Web3 from 'web3' import type { HttpProvider } from 'web3-core' import type { JsonRpcPayload, JsonRpcResponse } from 'web3-core-helpers' -import { isNil } from 'lodash-unified' +import { isNil, omit } from 'lodash-unified' import { defer } from '@dimensiondev/kit' import { ChainId, @@ -202,6 +202,22 @@ export async function sendPayload(payload: JsonRpcPayload, options?: Options) { if (options?.popupsWindow) openPopupWindow() return } + + if (options?.chainId === 592) { + await send( + { + ...payload, + params: payload.params?.map((x) => { + if (x?.chainId) return omit(x, 'chainId') + return x + }), + }, + callback, + options, + ) + + return + } send(payload, callback, options) }) } diff --git a/packages/plugins/EVM/src/state/Connection/connection.ts b/packages/plugins/EVM/src/state/Connection/connection.ts index e902a6548cad..77364372663f 100644 --- a/packages/plugins/EVM/src/state/Connection/connection.ts +++ b/packages/plugins/EVM/src/state/Connection/connection.ts @@ -591,7 +591,7 @@ class Connection implements EVM_Connection { const balances = await contract?.methods.balances([options.account], listOfNonNativeAddress).call({ // cannot check the sender's balance in the same contract from: undefined, - chainId: numberToHex(options.account), + chainId: numberToHex(options.chainId), }) listOfNonNativeAddress.forEach((x, i) => { diff --git a/packages/web3-constants/evm/ethereum.json b/packages/web3-constants/evm/ethereum.json index 504512860ad5..b822c2c6dd54 100644 --- a/packages/web3-constants/evm/ethereum.json +++ b/packages/web3-constants/evm/ethereum.json @@ -45,7 +45,7 @@ "Conflux": "0x19f179d7e0d7d9f9d5386afff64271d98a91615b", "Harmony": "0x6cc1b1058f9153358278c35e0b2d382f1585854b", "Harmony_Test": "", - "Astar": "0x861aa52B81A16E146E1f8D39B6C8BdC072d8348d" + "Astar": "0x1410304B91a280ad083196B0B50e9d8df749d860" }, "ENS_REGISTRAR_ADDRESS": { "Mainnet": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e", diff --git a/packages/web3-providers/src/astar/index.ts b/packages/web3-providers/src/astar/index.ts index ab576aca2f00..e0541107b64c 100644 --- a/packages/web3-providers/src/astar/index.ts +++ b/packages/web3-providers/src/astar/index.ts @@ -2,7 +2,7 @@ import { GasOptionType } from '@masknet/web3-shared-base' import type { ChainId, GasOption } from '@masknet/web3-shared-evm' import type { GasOptionAPI } from '../types' import type { EstimateSuggestResponse } from './types' -import Web3 from 'web3' +import { formatWeiToGwei } from '@masknet/web3-shared-evm' const ASTAR_API = 'https://gas.astar.network/api/gasnow?network=astar' @@ -10,35 +10,29 @@ export class AstarAPI implements GasOptionAPI.Provider { async getGasOptions(chainId: ChainId): Promise> { const response = await fetch(ASTAR_API) const gas = await response.json() - const result = (await gas.data) as EstimateSuggestResponse - const { tip } = result + const result = gas.data as EstimateSuggestResponse const { priorityFeePerGas } = result.eip1559 return { [GasOptionType.FAST]: { - estimatedBaseFee: formatWeiToGwei(result.eip1559.baseFeePerGas) ?? '0', + estimatedBaseFee: formatWeiToGwei(result.eip1559.baseFeePerGas).toString() ?? '0', estimatedSeconds: result.timestamp ?? 0, - suggestedMaxFeePerGas: tip.fast ?? '0', - suggestedMaxPriorityFeePerGas: formatWeiToGwei(priorityFeePerGas.fast) ?? '0', + suggestedMaxFeePerGas: formatWeiToGwei(result.fast ?? 0).toString(), + suggestedMaxPriorityFeePerGas: formatWeiToGwei(priorityFeePerGas.fast).toString() ?? '0', }, [GasOptionType.NORMAL]: { - estimatedBaseFee: result.eip1559.baseFeePerGas ?? '0', + estimatedBaseFee: formatWeiToGwei(result.eip1559.baseFeePerGas).toString() ?? '0', estimatedSeconds: result.timestamp ?? 0, - suggestedMaxFeePerGas: tip.average ?? '0', - suggestedMaxPriorityFeePerGas: priorityFeePerGas.average ?? '0', + suggestedMaxFeePerGas: formatWeiToGwei(result.average ?? 0).toString(), + suggestedMaxPriorityFeePerGas: formatWeiToGwei(priorityFeePerGas.average).toString() ?? '0', }, [GasOptionType.SLOW]: { - estimatedBaseFee: formatWeiToGwei(result.estimatedBaseFee) ?? '0', + estimatedBaseFee: formatWeiToGwei(result.eip1559.baseFeePerGas).toString() ?? '0', estimatedSeconds: result.timestamp ?? 0, - suggestedMaxFeePerGas: tip.slow ?? '0', - suggestedMaxPriorityFeePerGas: formatWeiToGwei(priorityFeePerGas.slow) ?? '0', + suggestedMaxFeePerGas: formatWeiToGwei(result.slow ?? 0).toString(), + suggestedMaxPriorityFeePerGas: formatWeiToGwei(priorityFeePerGas.slow).toString() ?? '0', }, } } } - -export function formatWeiToGwei(value: string): string { - const convert = Web3.utils.fromWei(value, 'Gwei') - return convert -} diff --git a/packages/web3-shared/evm/constants/descriptors.ts b/packages/web3-shared/evm/constants/descriptors.ts index 52c2b9158a73..4480a035d353 100644 --- a/packages/web3-shared/evm/constants/descriptors.ts +++ b/packages/web3-shared/evm/constants/descriptors.ts @@ -255,6 +255,7 @@ export const NETWORK_DESCRIPTORS: Array> name: 'Astar', icon: new URL('../assets/astar.png', import.meta.url), iconColor: 'rgb(36, 150, 238)', + averageBlockDelay: 15, isMainnet: true, }, ] From 2eb04515759577db7453e870f2eff7cd6bed6cba Mon Sep 17 00:00:00 2001 From: nuanyang233 Date: Tue, 2 Aug 2022 11:36:44 +0800 Subject: [PATCH 28/31] chore: lint error --- cspell.json | 1 + packages/web3-providers/src/zerion/format.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/cspell.json b/cspell.json index 0d2af3706175..9b022d296c0d 100644 --- a/cspell.json +++ b/cspell.json @@ -324,6 +324,7 @@ "numberish", "nyfi", "okex", + "onfinality", "openocean", "pausable", "pkts", diff --git a/packages/web3-providers/src/zerion/format.ts b/packages/web3-providers/src/zerion/format.ts index 87c80421c14a..cfa6dc59e2ae 100644 --- a/packages/web3-providers/src/zerion/format.ts +++ b/packages/web3-providers/src/zerion/format.ts @@ -64,7 +64,8 @@ export function formatAssets( return data.map(({ asset, quantity }) => { const balance = leftShift(quantity, asset.decimals).toNumber() const value = (asset as ZerionAsset).price?.value ?? (asset as ZerionCovalentAsset).value ?? 0 - const isNativeToken = (symbol: string) => ['ETH', 'BNB', 'MATIC', 'ARETH', 'AETH', 'ONE', 'ASTR'].includes(symbol) + const isNativeToken = (symbol: string) => + ['ETH', 'BNB', 'MATIC', 'ARETH', 'AETH', 'ONE', 'ASTR'].includes(symbol) const address = isNativeToken(asset.symbol) ? getTokenConstant(chainId, 'NATIVE_TOKEN_ADDRESS', '') : asset.asset_code From 2f3939debd88175551c365c8274062032d86aecb Mon Sep 17 00:00:00 2001 From: nuanyang233 Date: Tue, 2 Aug 2022 15:01:10 +0800 Subject: [PATCH 29/31] fix: bugfix --- packages/mask/src/plugins/Approval/SNSAdaptor/pipes.ts | 1 + .../utils/components/WalletStatusBar/WalletDescription.tsx | 1 + .../shared/src/UI/components/FungibleTokenList/index.tsx | 1 + packages/web3-constants/evm/token-asset-base-url.json | 5 ++++- 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/mask/src/plugins/Approval/SNSAdaptor/pipes.ts b/packages/mask/src/plugins/Approval/SNSAdaptor/pipes.ts index 4945c64fcee4..54d013b7fc20 100644 --- a/packages/mask/src/plugins/Approval/SNSAdaptor/pipes.ts +++ b/packages/mask/src/plugins/Approval/SNSAdaptor/pipes.ts @@ -18,6 +18,7 @@ export const resolveNetworkOnRabby = createLookupTableResolver ({ linkIcon: { color: theme.palette.maskColor.second, cursor: 'pointer', + height: 14, }, })) diff --git a/packages/shared/src/UI/components/FungibleTokenList/index.tsx b/packages/shared/src/UI/components/FungibleTokenList/index.tsx index e8c72cd3eae7..301ce1d2c647 100644 --- a/packages/shared/src/UI/components/FungibleTokenList/index.tsx +++ b/packages/shared/src/UI/components/FungibleTokenList/index.tsx @@ -74,6 +74,7 @@ export function FungibleTokenList(props: FungibleToke pluginID, { chainId }, ) + console.log(fungibleTokens) const trustedFungibleTokens = useTrustedFungibleTokens(pluginID, undefined, chainId) const blockedFungibleTokens = useBlockedFungibleTokens(pluginID) const nativeToken = useMemo(() => Others?.chainResolver.nativeCurrency(chainId), [chainId]) diff --git a/packages/web3-constants/evm/token-asset-base-url.json b/packages/web3-constants/evm/token-asset-base-url.json index ab6564c74852..2b3314471b0c 100644 --- a/packages/web3-constants/evm/token-asset-base-url.json +++ b/packages/web3-constants/evm/token-asset-base-url.json @@ -69,6 +69,9 @@ "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/harmony" ], "Harmony_Test": [], - "Astar": [] + "Astar": [ + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/astar", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/astar" + ] } } From a1c7ff1fbbc2525dab488b4e6cc14005c18bf507 Mon Sep 17 00:00:00 2001 From: nuanyang233 Date: Wed, 3 Aug 2022 10:39:22 +0800 Subject: [PATCH 30/31] fix: bugfix --- .../Trader/trader/native/useTradeCallback.ts | 10 +++++++--- .../plugins/Trader/trader/useTradeCallback.ts | 1 + .../GasSettingDialog/GasSetting1559.tsx | 16 ++++++++-------- .../UI/components/FungibleTokenList/index.tsx | 1 - packages/web3-providers/src/astar/index.ts | 6 +++--- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/mask/src/plugins/Trader/trader/native/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/native/useTradeCallback.ts index 42c4e80693c5..a8fa9eb2f6cc 100644 --- a/packages/mask/src/plugins/Trader/trader/native/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/native/useTradeCallback.ts @@ -1,11 +1,15 @@ import { useAsyncFn } from 'react-use' import { useNativeTokenWrapperCallback } from '@masknet/plugin-infra/web3-evm' -import { SchemaType, GasOptionConfig } from '@masknet/web3-shared-evm' +import { SchemaType, GasOptionConfig, ChainId } from '@masknet/web3-shared-evm' import { TradeComputed, TradeStrategy } from '../../types' import type { NativeTokenWrapper } from './useTradeComputed' -export function useTradeCallback(trade: TradeComputed | null, gasConfig?: GasOptionConfig) { - const [wrapCallback, unwrapCallback] = useNativeTokenWrapperCallback() +export function useTradeCallback( + trade: TradeComputed | null, + gasConfig?: GasOptionConfig, + targetChainId?: ChainId, +) { + const [wrapCallback, unwrapCallback] = useNativeTokenWrapperCallback(targetChainId) return useAsyncFn(async () => { if (!trade?.trade_?.isNativeTokenWrapper) return diff --git a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts index fb83454dc31d..38983f56ddd6 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts @@ -81,6 +81,7 @@ export function useTradeCallback( const nativeTokenWrapper = useNativeTokenWrapperCallback( tradeComputed as TradeComputed, gasConfig, + targetChainId, ) if (isNativeTokenWrapper_) return nativeTokenWrapper diff --git a/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/GasSetting1559.tsx b/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/GasSetting1559.tsx index 9cc5b994de43..abd0e3a24452 100644 --- a/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/GasSetting1559.tsx +++ b/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/GasSetting1559.tsx @@ -3,7 +3,7 @@ import { zodResolver } from '@hookform/resolvers/zod' import { FC, memo, useCallback, useEffect, useMemo, useState } from 'react' import { useUpdateEffect } from 'react-use' import { Controller, useForm } from 'react-hook-form' -import { formatGweiToEther, formatGweiToWei, useTokenConstants } from '@masknet/web3-shared-evm' +import { formatGweiToEther, formatGweiToWei, formatWeiToEther, useTokenConstants } from '@masknet/web3-shared-evm' import { Typography } from '@mui/material' import { LoadingButton } from '@mui/lab' import BigNumber from 'bignumber.js' @@ -23,7 +23,7 @@ import { NetworkPluginID, toFixed, } from '@masknet/web3-shared-base' -import { useChainId, useFungibleTokenBalance, useGasOptions } from '@masknet/plugin-infra/web3' +import { useChainId, useFungibleTokenPrice, useGasOptions } from '@masknet/plugin-infra/web3' const HIGH_FEE_WARNING_MULTIPLIER = 1.5 @@ -35,7 +35,7 @@ export const GasSetting1559: FC = memo( const { NATIVE_TOKEN_ADDRESS } = useTokenConstants(chainId) const [selectedGasOption, setGasOptionType] = useState(gasOptionType) - const { value: nativeTokenPrice = 0 } = useFungibleTokenBalance( + const { value: nativeTokenPrice = 0 } = useFungibleTokenPrice( NetworkPluginID.PLUGIN_EVM, NATIVE_TOKEN_ADDRESS, { @@ -209,7 +209,7 @@ export const GasSetting1559: FC = memo( usd: formatGweiToEther(content?.suggestedMaxFeePerGas ?? 0) .times(nativeTokenPrice) .times(21000) - .toPrecision(3), + .toFixed(2), })} @@ -245,10 +245,10 @@ export const GasSetting1559: FC = memo( {t('popups_wallet_gas_fee_settings_usd', { - usd: formatGweiToEther(Number(maxPriorityFeePerGas) ?? 0) + usd: formatWeiToEther(Number(maxPriorityFeePerGas) ?? 0) .times(nativeTokenPrice) .times(inputGasLimit || 1) - .toPrecision(3), + .toFixed(2), })} @@ -280,10 +280,10 @@ export const GasSetting1559: FC = memo( {t('popups_wallet_gas_fee_settings_usd', { - usd: formatGweiToEther(Number(maxFeePerGas) ?? 0) + usd: formatWeiToEther(Number(maxFeePerGas) ?? 0) .times(nativeTokenPrice) .times(inputGasLimit || 1) - .toPrecision(3), + .toFixed(2), })} diff --git a/packages/shared/src/UI/components/FungibleTokenList/index.tsx b/packages/shared/src/UI/components/FungibleTokenList/index.tsx index 301ce1d2c647..e8c72cd3eae7 100644 --- a/packages/shared/src/UI/components/FungibleTokenList/index.tsx +++ b/packages/shared/src/UI/components/FungibleTokenList/index.tsx @@ -74,7 +74,6 @@ export function FungibleTokenList(props: FungibleToke pluginID, { chainId }, ) - console.log(fungibleTokens) const trustedFungibleTokens = useTrustedFungibleTokens(pluginID, undefined, chainId) const blockedFungibleTokens = useBlockedFungibleTokens(pluginID) const nativeToken = useMemo(() => Others?.chainResolver.nativeCurrency(chainId), [chainId]) diff --git a/packages/web3-providers/src/astar/index.ts b/packages/web3-providers/src/astar/index.ts index e0541107b64c..8b5f1b01ea63 100644 --- a/packages/web3-providers/src/astar/index.ts +++ b/packages/web3-providers/src/astar/index.ts @@ -17,19 +17,19 @@ export class AstarAPI implements GasOptionAPI.Provider { return { [GasOptionType.FAST]: { estimatedBaseFee: formatWeiToGwei(result.eip1559.baseFeePerGas).toString() ?? '0', - estimatedSeconds: result.timestamp ?? 0, + estimatedSeconds: 15, suggestedMaxFeePerGas: formatWeiToGwei(result.fast ?? 0).toString(), suggestedMaxPriorityFeePerGas: formatWeiToGwei(priorityFeePerGas.fast).toString() ?? '0', }, [GasOptionType.NORMAL]: { estimatedBaseFee: formatWeiToGwei(result.eip1559.baseFeePerGas).toString() ?? '0', - estimatedSeconds: result.timestamp ?? 0, + estimatedSeconds: 30, suggestedMaxFeePerGas: formatWeiToGwei(result.average ?? 0).toString(), suggestedMaxPriorityFeePerGas: formatWeiToGwei(priorityFeePerGas.average).toString() ?? '0', }, [GasOptionType.SLOW]: { estimatedBaseFee: formatWeiToGwei(result.eip1559.baseFeePerGas).toString() ?? '0', - estimatedSeconds: result.timestamp ?? 0, + estimatedSeconds: 60, suggestedMaxFeePerGas: formatWeiToGwei(result.slow ?? 0).toString(), suggestedMaxPriorityFeePerGas: formatWeiToGwei(priorityFeePerGas.slow).toString() ?? '0', }, From 82b110458fc70e9898cc69f6048b5e1eadc68f73 Mon Sep 17 00:00:00 2001 From: nuanyang233 Date: Wed, 3 Aug 2022 18:30:36 +0800 Subject: [PATCH 31/31] chore: reply reivew --- packages/mask/src/plugins/Wallet/services/send.ts | 2 +- packages/plugins/EVM/src/state/Hub/hub.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/mask/src/plugins/Wallet/services/send.ts b/packages/mask/src/plugins/Wallet/services/send.ts index ee98580b1906..de4ca4c8c997 100644 --- a/packages/mask/src/plugins/Wallet/services/send.ts +++ b/packages/mask/src/plugins/Wallet/services/send.ts @@ -203,7 +203,7 @@ export async function sendPayload(payload: JsonRpcPayload, options?: Options) { return } - if (options?.chainId === 592) { + if (options?.chainId === ChainId.Astar) { await send( { ...payload, diff --git a/packages/plugins/EVM/src/state/Hub/hub.ts b/packages/plugins/EVM/src/state/Hub/hub.ts index a4bdfe4c5b6e..26cad080c52f 100644 --- a/packages/plugins/EVM/src/state/Hub/hub.ts +++ b/packages/plugins/EVM/src/state/Hub/hub.ts @@ -92,8 +92,8 @@ class Hub implements EVM_Hub { }) try { const isEIP1559 = chainResolver.isSupport(options.chainId, 'EIP1559') - if (isEIP1559 && chainId !== 592) return await MetaSwap.getGasOptions(options.chainId) - if (chainId === 592) return await AstarGas.getGasOptions(options.chainId) + if (isEIP1559 && chainId !== ChainId.Astar) return await MetaSwap.getGasOptions(options.chainId) + if (chainId === ChainId.Astar) return await AstarGas.getGasOptions(options.chainId) return await DeBank.getGasOptions(options.chainId) } catch (error) { return EthereumWeb3.getGasOptions(options.chainId)