diff --git a/packages/boba/gateway/src/actions/tokenAction.js b/packages/boba/gateway/src/actions/tokenAction.js index d50f6b0322..e3627aec26 100644 --- a/packages/boba/gateway/src/actions/tokenAction.js +++ b/packages/boba/gateway/src/actions/tokenAction.js @@ -158,11 +158,26 @@ export async function addToken ( tokenContractAddressL1 ) { ) } - const [ _symbolL1, _decimals, _name ] = await Promise.all([ - tokenContract.symbol(), - tokenContract.decimals(), - tokenContract.name() - ]).catch(e => [ null, null, null ]) + let _symbolL1 + let _decimals + let _name + + if (ethers.utils.isAddress(_tokenContractAddressL1)) { + const tokenInfo = networkService.tokenInfo.L1[ethers.utils.getAddress(_tokenContractAddressL1)] + if (tokenInfo) { + _symbolL1 = tokenInfo.symbol + _decimals = tokenInfo.decimals + _name = tokenInfo.name + } + } + + if (!_symbolL1 || !_decimals || !_name) { + [ _symbolL1, _decimals, _name ] = await Promise.all([ + tokenContract.symbol(), + tokenContract.decimals(), + tokenContract.name() + ]).catch(e => [ null, null, null ]) + } const decimals = _decimals ? Number(_decimals.toString()) : 'NOT ON ETHEREUM' const symbolL1 = _symbolL1 || 'NOT ON ETHEREUM' diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index 7b8ad21cef..a4c768a8ea 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -103,6 +103,8 @@ import addresses_Mainnet from "@boba/register/addresses/addressesMainnet_0x8376a import layerZeroTestnet from "@boba/register/addresses/layerZeroTestnet" import layerZeroMainnet from "@boba/register/addresses/layerZeroMainnet" +import tokenInfo from "@boba/register/addresses/tokenInfo" + import { bobaBridges } from 'util/bobaBridges' import { APP_AIRDROP, APP_CHAIN, SPEED_CHECK } from 'util/constant' import { getPoolDetail } from 'util/poolDetails' @@ -225,6 +227,9 @@ class NetworkService { // support alt l1 tokens this.supportedAltL1Chains = supportedAltL1Chains + + // token info + this.tokenInfo = {} } bindProviderListeners() { @@ -731,6 +736,9 @@ class NetworkService { nw[networkGateway]['L2']['rpcUrl'] ) + const chainId = (await this.L1Provider.getNetwork()).chainId + this.tokenInfo = tokenInfo[chainId] + if (networkGateway === 'rinkeby') { addresses = addresses_Rinkeby } else if (networkGateway === 'mainnet') { @@ -2861,9 +2869,16 @@ class NetworkService { //getting eth balance //console.log("Getting balance for:", tokenAddress) tokenBalance = await this.L1_TEST_Contract.attach(tokenAddress).connect(this.L1Provider).balanceOf(allAddresses.L1LPAddress) - tokenSymbol = await this.L1_TEST_Contract.attach(tokenAddress).connect(this.L1Provider).symbol() - tokenName = await this.L1_TEST_Contract.attach(tokenAddress).connect(this.L1Provider).name() - decimals = await this.L1_TEST_Contract.attach(tokenAddress).connect(this.L1Provider).decimals() + const tokenInfoFiltered = this.tokenInfo.L1[utils.getAddress(tokenAddress)] + if (tokenInfo) { + tokenSymbol = tokenInfoFiltered.symbol + tokenName = tokenInfoFiltered.name + decimals = tokenInfoFiltered.decimals + } else { + tokenSymbol = await this.L1_TEST_Contract.attach(tokenAddress).connect(this.L1Provider).symbol() + tokenName = await this.L1_TEST_Contract.attach(tokenAddress).connect(this.L1Provider).name() + decimals = await this.L1_TEST_Contract.attach(tokenAddress).connect(this.L1Provider).decimals() + } } const poolTokenInfo = await L1LPContract.poolInfo(tokenAddress) @@ -2956,9 +2971,16 @@ class NetworkService { decimals = 18 } else { tokenBalance = await this.L2_TEST_Contract.attach(tokenAddress).connect(this.L2Provider).balanceOf(allAddresses.L2LPAddress) - tokenSymbol = await this.L2_TEST_Contract.attach(tokenAddress).connect(this.L2Provider).symbol() - tokenName = await this.L2_TEST_Contract.attach(tokenAddress).connect(this.L2Provider).name() - decimals = await this.L1_TEST_Contract.attach(tokenAddressL1).connect(this.L1Provider).decimals() + const tokenInfoFiltered = this.tokenInfo.L2[utils.getAddress(tokenAddress)] + if (tokenInfo) { + tokenSymbol = tokenInfoFiltered.symbol + tokenName = tokenInfoFiltered.name + decimals = tokenInfoFiltered.decimals + } else { + tokenSymbol = await this.L2_TEST_Contract.attach(tokenAddress).connect(this.L2Provider).symbol() + tokenName = await this.L2_TEST_Contract.attach(tokenAddress).connect(this.L2Provider).name() + decimals = await this.L1_TEST_Contract.attach(tokenAddressL1).connect(this.L1Provider).decimals() + } } const poolTokenInfo = await L2LPContract.poolInfo(tokenAddress) let userTokenInfo = {} diff --git a/packages/boba/register/addresses/tokenInfo.json b/packages/boba/register/addresses/tokenInfo.json new file mode 100644 index 0000000000..89b87bfb1e --- /dev/null +++ b/packages/boba/register/addresses/tokenInfo.json @@ -0,0 +1,489 @@ +{ + "1": { + "L1": { + "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07": { + "name": "OMGToken", + "symbol": "OMG", + "decimals": 18 + }, + "0xdAC17F958D2ee523a2206206994597C13D831ec7": { + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6 + }, + "0x6B175474E89094C44Da98b954EedeAC495271d0F": { + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18 + }, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6 + }, + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599": { + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8 + }, + "0x221657776846890989a759BA2973e427DfF5C9bB": { + "name": "Reputation", + "symbol": "REPv2", + "decimals": 18 + }, + "0x0D8775F648430679A709E98d2b0Cb6250d2887EF": { + "name": "Basic Attention Token", + "symbol": "BAT", + "decimals": 18 + }, + "0xE41d2489571d322189246DaFA5ebDe1F4699F498": { + "name": "0x Protocol Token", + "symbol": "ZRX", + "decimals": 18 + }, + "0x6B3595068778DD592e39A122f4f5a5cF09C90fE2": { + "name": "SushiToken", + "symbol": "SUSHI", + "decimals": 18 + }, + "0x514910771AF9Ca656af840dff83E8264EcF986CA": { + "name": "ChainLink Token", + "symbol": "LINK", + "decimals": 18 + }, + "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984": { + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18 + }, + "0x43Dfc4159D86F3A37A5A4B3D4580b888ad7d4DDd": { + "name": "DODO bird", + "symbol": "DODO", + "decimals": 18 + }, + "0x853d955aCEf822Db058eb8505911ED77F175b99e": { + "name": "Frax", + "symbol": "FRAX", + "decimals": 18 + }, + "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0": { + "name": "Frax Share", + "symbol": "FXS", + "decimals": 18 + }, + "0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc": { + "name": "Boba Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0xa47c8bf37f92aBed4A126BDA807A7b7498661acD": { + "name": "Wrapped UST Token", + "symbol": "UST", + "decimals": 18 + }, + "0x4Fabb145d64652a948d72533023f6E7A623C7C53": { + "name": "Binance USD", + "symbol": "BUSD", + "decimals": 18 + }, + "0xB8c77482e45F1F44dE1745F52C74426C631bDD52": { + "name": "BNB", + "symbol": "BNB", + "decimals": 18 + }, + "0x4E15361FD6b4BB609Fa63C81A2be19d873717870": { + "name": "Fantom Token", + "symbol": "FTM", + "decimals": 18 + }, + "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0": { + "name": "Matic Token", + "symbol": "MATIC", + "decimals": 18 + }, + "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828": { + "name": "UMA Voting Token v1", + "symbol": "UMA", + "decimals": 18 + }, + "0xef5Fa9f3Dede72Ec306dfFf1A7eA0bB0A2F7046F": { + "name": "Domination Finance Token", + "symbol": "DOM", + "decimals": 18 + }, + "0xF56b164efd3CFc02BA739b719B6526A6FA1cA32a": { + "name": "Curio Governance Token", + "symbol": "CGT", + "decimals": 18 + } + }, + "L2": { + "0xe1E2ec9a85C607092668789581251115bCBD20de": { + "name": "OMGToken", + "symbol": "OMG", + "decimals": 18 + }, + "0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d": { + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6 + }, + "0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35": { + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18 + }, + "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc": { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6 + }, + "0xdc0486f8bf31DF57a952bcd3c1d3e166e3d9eC8b": { + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8 + }, + "0x8b5B1E971862015bc058234FC11ce6C4a4c536dD": { + "name": "Reputation", + "symbol": "REPv2", + "decimals": 18 + }, + "0xc0C16dF1ee7dcEFb88C55003C49F57AA416A3578": { + "name": "Basic Attention Token", + "symbol": "BAT", + "decimals": 18 + }, + "0xf135f13Db3B114107dCB0B32B6c9e10fFF5a6987": { + "name": "0x Protocol Token", + "symbol": "ZRX", + "decimals": 18 + }, + "0x5fFccc55C0d2fd6D3AC32C26C020B3267e933F1b": { + "name": "SushiToken", + "symbol": "SUSHI", + "decimals": 18 + }, + "0xD5D5030831eE83e22a2C9a5cF99931A50c676433": { + "name": "ChainLink Token", + "symbol": "LINK", + "decimals": 18 + }, + "0xDBDE1347fED5dC03C74059010D571a16417d307e": { + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18 + }, + "0x572c5B5BF34f75FB62c39b9BFE9A75bb0bb47984": { + "name": "DODO bird", + "symbol": "DODO", + "decimals": 18 + }, + "0xAb2AF3A98D229b7dAeD7305Bb88aD0BA2c42f9cA": { + "name": "Frax", + "symbol": "FRAX", + "decimals": 18 + }, + "0xdc1664458d2f0B6090bEa60A8793A4E66c2F1c00": { + "name": "Frax Share", + "symbol": "FXS", + "decimals": 18 + }, + "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7": { + "name": "Boba Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0xE5Ef1407928eBCe28a6f1a0759251b7187fEa726": { + "name": "Wrapped UST Token", + "symbol": "UST", + "decimals": 18 + }, + "0x352F2Fdf653A194B42e3311f869237c66309b69E": { + "name": "Binance USD", + "symbol": "BUSD", + "decimals": 18 + }, + "0x68ac1623ACf9eB9F88b65B5F229fE3e2c0d5789e": { + "name": "BNB", + "symbol": "BNB", + "decimals": 18 + }, + "0x841979bbC06Be7BFE28d9FadDac1A73e1Fb495C1": { + "name": "Fantom Token", + "symbol": "FTM", + "decimals": 18 + }, + "0x26b664736217407E0FA252b4578DB23B1E3819F3": { + "name": "Matic Token", + "symbol": "MATIC", + "decimals": 18 + }, + "0x5747a93C87943A9567c6db00b38F1E78bF14b7C0": { + "name": "xBOBA Token", + "symbol": "xBOBA", + "decimals": 18 + }, + "0x780f33Ad21314d9A1Ffb6867Fe53d48a76Ec0D16": { + "name": "UMA Voting Token v1", + "symbol": "UMA", + "decimals": 18 + }, + "0xF56FbEc7823260D7510D63B63533153b58A01921": { + "name": "Domination Finance Token", + "symbol": "DOM", + "decimals": 18 + }, + "0xF56b164efd3CFc02BA739b719B6526A6FA1cA32a": { + "name": "Curio Governance Token", + "symbol": "CGT", + "decimals": 18 + }, + "0x8493C4d9Cd1a79be0523791E3331c78Abb3f9672": { + "name": "Boba WAGMI v0 Option", + "symbol": "WAGMIv0", + "decimals": 18 + }, + "0xCe055Ea4f29fFB8bf35E852522B96aB67Cbe8197": { + "name": "Boba WAGMI v1 Option", + "symbol": "WAGMIv1", + "decimals": 18 + }, + "0x76B5908ecd0ae3DB23011ae96b7C1f803D63136c": { + "name": "Boba WAGMI v2 Option", + "symbol": "WAGMIv2", + "decimals": 18 + }, + "0x49a3e4a1284829160f95eE785a1A5FfE2DD5Eb1D": { + "name": "Boba WAGMI v2 Oolong Option", + "symbol": "WAGMIv2-Oolong", + "decimals": 18 + }, + "0xC6158B1989f89977bcc3150fC1F2eB2260F6cabE": { + "name": "Boba WAGMI v3 Option", + "symbol": "WAGMIv3", + "decimals": 18 + }, + "0x70bf3c5B5d80C4Fece8Bde0fCe7ef38B688463d4": { + "name": "Boba WAGMI v3 Oolong Option", + "symbol": "WAGMIv3-Oolong", + "decimals": 18 + }, + "0x5008F837883EA9a07271a1b5eB0658404F5a9610": { + "name": "OolongSwap Token", + "symbol": "OLO", + "decimals": 18 + } + } + }, + "4": { + "L1": { + "0x2B203de02AD6109521e09985b3aF9B8c62541Cd6": { + "name": "OMGToken", + "symbol": "OMG", + "decimals": 18 + }, + "0xD9BA894E0097f8cC2BBc9D24D308b98e36dc6D02": { + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6 + }, + "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa": { + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18 + }, + "0x4DBCdF9B62e891a7cec5A2568C3F4FAF9E8Abe2b": { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6 + }, + "0x577D296678535e4903D59A4C929B718e1D575e0A": { + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8 + }, + "0x6e894660985207feb7cf89Faf048998c71E8EE89": { + "name": "Reputation", + "symbol": "REPv2", + "decimals": 18 + }, + "0xbF7A7169562078c96f0eC1A8aFD6aE50f12e5A99": { + "name": "Basic Attention Token", + "symbol": "BAT", + "decimals": 18 + }, + "0xddea378A6dDC8AfeC82C36E9b0078826bf9e68B6": { + "name": "0x Protocol Token", + "symbol": "ZRX", + "decimals": 18 + }, + "0xA434947525699FfbbF74260947c2906831FafD98": { + "name": "SushiToken", + "symbol": "SUSHI", + "decimals": 18 + }, + "0x01BE23585060835E02B77ef475b0Cc51aA1e0709": { + "name": "ChainLink Token", + "symbol": "LINK", + "decimals": 18 + }, + "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984": { + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18 + }, + "0xa23A5D188C8E2f4b3E029815a793972C58D89890": { + "name": "Frax", + "symbol": "FRAX", + "decimals": 18 + }, + "0xb1efaEC30db0da6CD2ADbDE71D82A73DcA6aF182": { + "name": "Frax Share", + "symbol": "FXS", + "decimals": 18 + }, + "0x6A6676813d3D4317442CF84667425C13553F4a76": { + "name": "Boba Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x012e4C202b1153183F7B0e7A90348C4cCE15d2c9": { + "name": "Wrapped UST Token", + "symbol": "UST", + "decimals": 18 + }, + "0x697Eda570FE014832456b4B3d2Dff8591eA3f4fc": { + "name": "Binance USD", + "symbol": "BUSD", + "decimals": 18 + }, + "0xeB72FaBBEF4D4F59bCA384123977eD9529c9bd2e": { + "name": "BNB", + "symbol": "BNB", + "decimals": 18 + }, + "0x72fe8933fcA2C14a8E2b3BF050e3d81E90Efeb60": { + "name": "Fantom Token", + "symbol": "FTM", + "decimals": 18 + }, + "0x3aC6AFFeD629A16ffccD1C865ad6E10Dc0A1076A": { + "name": "Matic Token", + "symbol": "MATIC", + "decimals": 18 + }, + "0x3917C064E4Fcc25409C8415c75bf52709DB47358": { + "name": "Domination Finance Token", + "symbol": "DOM", + "decimals": 18 + } + }, + "L2": { + "0xC5086AA4BB6F18B3D966381E18Bcc317CeD9507c": { + "name": "OMGToken", + "symbol": "OMG", + "decimals": 18 + }, + "0x9d0364c866A73e34649869525CD7576080259A42": { + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6 + }, + "0x0630f97C8938051a44b0A64e9D4d484295393Fe4": { + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18 + }, + "0xB24898De59C8E259F9742bCF2C16Fd613DCeA8F7": { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6 + }, + "0x3074A3d2570e06F74F06913965adDcd1161D7fDC": { + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8 + }, + "0x7896be8b69069bd39d71b3Fc987C6c0AFF7c3b95": { + "name": "Reputation", + "symbol": "REPv2", + "decimals": 18 + }, + "0x3C07C6627Aa879cD6988A5256E9A04D69DbD9530": { + "name": "Basic Attention Token", + "symbol": "BAT", + "decimals": 18 + }, + "0x23b274b0856C2F55C392d4F051BD252dF6C202D7": { + "name": "0x Protocol Token", + "symbol": "ZRX", + "decimals": 18 + }, + "0x799F1f4045AFd00DFaE47Ab01Fb94AdB2f120B2C": { + "name": "SushiToken", + "symbol": "SUSHI", + "decimals": 18 + }, + "0x1cC8d6d2f14ac432605558A30461ebF501EaE427": { + "name": "ChainLink Token", + "symbol": "LINK", + "decimals": 18 + }, + "0x803Ec6089Ab7CC320840EDBd4bB99399467E57E0": { + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18 + }, + "0x6FF9c8FF8F0B6a0763a3030540c21aFC721A9148": { + "name": "Frax", + "symbol": "FRAX", + "decimals": 18 + }, + "0x991AaC49780774D1e358ceA459070f9351022139": { + "name": "Frax Share", + "symbol": "FXS", + "decimals": 18 + }, + "0xF5B97a4860c1D81A1e915C40EcCB5E4a5E6b8309": { + "name": "Boba Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x429582bDe1B0E011C48d883354050938f194743F": { + "name": "Wrapped UST Token", + "symbol": "UST", + "decimals": 18 + }, + "0x01c9DC8B9c66D61a56Db7bF3F5303Cd9E9c85B1F": { + "name": "Binance USD", + "symbol": "BUSD", + "decimals": 18 + }, + "0x42356f071B65FD0FBA2b74566EB1D3634F008CDa": { + "name": "BNB", + "symbol": "BNB", + "decimals": 18 + }, + "0xc346Ab3D382521296dB7b52d71b062dDEC54e9Db": { + "name": "Fantom Token", + "symbol": "FTM", + "decimals": 18 + }, + "0xbcA151440F29c10BeBA5a410c52914e236Fc9845": { + "name": "Matic Token", + "symbol": "MATIC", + "decimals": 18 + }, + "0xebE42F5cEA2184F6b416bFFAB0744b11281AE95b": { + "name": "xBOBA Token", + "symbol": "xBOBA", + "decimals": 18 + }, + "0x38e14a34D6A28B1d47A83F4B53a99007243C4310": { + "name": "Domination Finance Token", + "symbol": "DOM", + "decimals": 18 + } + } + } +}