From 2080c27ef2c2e02439c715ce18cca3c8efef8034 Mon Sep 17 00:00:00 2001 From: Kevin Peters Date: Fri, 25 Feb 2022 15:07:59 +0000 Subject: [PATCH] bridge_ui: Use new TVL calculation in useTVL hook, 48h transaction count --- bridge_ui/src/App.js | 18 +- bridge_ui/src/components/HeaderText.tsx | 4 +- .../components/Stats/TransactionMetrics.tsx | 2 +- bridge_ui/src/hooks/useTVL.ts | 551 ++------------ bridge_ui/src/hooks/useTransactionCount.ts | 15 +- bridge_ui/src/utils/coinGecko.ts | 684 ++++++++++++++++++ bridge_ui/src/utils/consts.ts | 6 + 7 files changed, 782 insertions(+), 498 deletions(-) create mode 100644 bridge_ui/src/utils/coinGecko.ts diff --git a/bridge_ui/src/App.js b/bridge_ui/src/App.js index 9a8d9d7e..e5f33741 100644 --- a/bridge_ui/src/App.js +++ b/bridge_ui/src/App.js @@ -232,7 +232,23 @@ function App() {
{["/transfer", "/nft", "/redeem"].includes(pathname) ? ( - Portal Token Bridge + + + Portal is a bridge that offers unlimited transfers across + chains for tokens and NFTs wrapped by Wormhole. + + + Unlike many other bridges, you avoid double wrapping and + never have to retrace your steps. + + + } + > + Portal Token Bridge + {children} - {subtitle ? {subtitle} : null} + {subtitle ? {subtitle} : null}
); } diff --git a/bridge_ui/src/components/Stats/TransactionMetrics.tsx b/bridge_ui/src/components/Stats/TransactionMetrics.tsx index f9568ed4..f7f72cb1 100644 --- a/bridge_ui/src/components/Stats/TransactionMetrics.tsx +++ b/bridge_ui/src/components/Stats/TransactionMetrics.tsx @@ -105,7 +105,7 @@ const TransactionMetrics: React.FC = () => { noWrap className={classes.totalValue} > - {numeral(transactionCount.data?.total24h || 0).format("0,0")} + {numeral(transactionCount.data?.total48h || 0).format("0,0")}
diff --git a/bridge_ui/src/hooks/useTVL.ts b/bridge_ui/src/hooks/useTVL.ts index 91b50034..64a51fa4 100644 --- a/bridge_ui/src/hooks/useTVL.ts +++ b/bridge_ui/src/hooks/useTVL.ts @@ -1,46 +1,14 @@ -import { - ChainId, - CHAIN_ID_AVAX, - CHAIN_ID_BSC, - CHAIN_ID_ETH, - CHAIN_ID_POLYGON, - CHAIN_ID_SOLANA, - CHAIN_ID_TERRA, -} from "@certusone/wormhole-sdk"; -import { formatUnits } from "@ethersproject/units"; -import { TOKEN_PROGRAM_ID } from "@solana/spl-token"; -import { TokenInfo } from "@solana/spl-token-registry"; -import { - AccountInfo, - Connection, - ParsedAccountData, - PublicKey, -} from "@solana/web3.js"; +import { ChainId } from "@certusone/wormhole-sdk"; import axios from "axios"; -import { useEffect, useMemo, useState } from "react"; -import { DataWrapper } from "../store/helpers"; +import { useEffect, useState } from "react"; import { - AVAX_TOKEN_BRIDGE_ADDRESS, - BSC_TOKEN_BRIDGE_ADDRESS, - CHAINS_BY_ID, - COVALENT_GET_TOKENS_URL, - ETH_TOKEN_BRIDGE_ADDRESS, - logoOverrides, - POLYGON_TOKEN_BRIDGE_ADDRESS, - SOLANA_HOST, - SOL_CUSTODY_ADDRESS, - TERRA_SWAPRATE_URL, - TERRA_TOKEN_BRIDGE_ADDRESS, -} from "../utils/consts"; -import { priceStore, serumMarkets } from "../utils/SolanaPriceStore"; -import { - formatNativeDenom, - getNativeTerraIcon, - NATIVE_TERRA_DECIMALS, -} from "../utils/terra"; -import useMetadata, { GenericMetadata } from "./useMetadata"; -import useSolanaTokenMap from "./useSolanaTokenMap"; -import useTerraNativeBalances from "./useTerraNativeBalances"; + DataWrapper, + errorDataWrapper, + fetchDataWrapper, + receiveDataWrapper, +} from "../store/helpers"; +import { COIN_GECKO_IMAGE_URLS } from "../utils/coinGecko"; +import { TVL_URL } from "../utils/consts"; export type TVL = { logo?: string; @@ -55,470 +23,75 @@ export type TVL = { decimals?: number; }; -const BAD_PRICES_BY_CHAIN = { - [CHAIN_ID_BSC]: [ - "0x04132bf45511d03a58afd4f1d36a29d229ccc574", - "0xa79bd679ce21a2418be9e6f88b2186c9986bbe7d", - "0x931c3987040c90b6db09981c7c91ba155d3fa31f", - "0x8fb1a59ca2d57b51e5971a85277efe72c4492983", - ], - [CHAIN_ID_ETH]: [], - [CHAIN_ID_POLYGON]: ["0xd52d9ba6fcbadb1fe1e3aca52cbb72c4d9bbb4ec"], -}; +interface LockedAsset { + Symbol: string; + Name: string; + Address: string; + CoinGeckoId: string; + Amount: number; + Notional: number; + TokenPrice: number; +} -const calcEvmTVL = (covalentReport: any, chainId: ChainId): TVL[] => { - const output: TVL[] = []; - if (!covalentReport?.data?.items?.length) { - return []; - } +interface LockedAssets { + [tokenAddress: string]: LockedAsset; +} - covalentReport.data.items.forEach((item: any) => { - if (item.balance > 0 && item.contract_address) { - const hasUnreliablePrice = - BAD_PRICES_BY_CHAIN[chainId]?.includes(item.contract_address) || - item.quote_rate > 1000000; - output.push({ - logo: - logoOverrides.get(item.contract_address) || - item.logo_url || - undefined, - symbol: item.contract_ticker_symbol || undefined, - name: item.contract_name || undefined, - amount: formatUnits(item.balance, item.contract_decimals), - totalValue: hasUnreliablePrice ? 0 : item.quote, - quotePrice: hasUnreliablePrice ? 0 : item.quote_rate, - assetAddress: item.contract_address, - originChainId: chainId, - originChain: CHAINS_BY_ID[chainId].name, - decimals: item.contract_decimals, +interface ChainsAssets { + [chainId: string]: LockedAssets; +} + +interface NotionalTvl { + Last24HoursChange: ChainsAssets; + AllTime: ChainsAssets; +} + +const createTVLArray = (notionalTvl: NotionalTvl) => { + const tvl: TVL[] = []; + for (const [chainId, chainAssets] of Object.entries(notionalTvl.AllTime)) { + if (chainId === "*") continue; + for (const [tokenAddress, lockedAsset] of Object.entries(chainAssets)) { + if (tokenAddress === "*") continue; + tvl.push({ + logo: COIN_GECKO_IMAGE_URLS[lockedAsset.CoinGeckoId], + symbol: lockedAsset.Symbol, + name: lockedAsset.Name, + amount: lockedAsset.Amount.toString(), + totalValue: lockedAsset.Notional, + quotePrice: lockedAsset.TokenPrice, + assetAddress: tokenAddress, + originChainId: +chainId as ChainId, + originChain: chainId.toString(), }); } - }); - - return output; -}; -const calcSolanaTVL = ( - accounts: - | { pubkey: PublicKey; account: AccountInfo }[] - | undefined, - metaData: DataWrapper>, - solanaPrices: DataWrapper> -) => { - const output: TVL[] = []; - if ( - !accounts || - !accounts.length || - metaData.isFetching || - metaData.error || - !metaData.data || - solanaPrices.isFetching || - !solanaPrices.data - ) { - return output; } - - accounts.forEach((item) => { - const genericMetadata = metaData.data?.get( - item.account.data.parsed?.info?.mint?.toString() - ); - const mint = item.account.data.parsed?.info?.mint?.toString(); - const price = solanaPrices?.data?.get(mint); - output.push({ - logo: genericMetadata?.logo || undefined, - symbol: genericMetadata?.symbol || undefined, - name: genericMetadata?.tokenName || undefined, - amount: item.account.data.parsed?.info?.tokenAmount?.uiAmount || "0", //Should always be defined. - totalValue: price - ? parseFloat( - item.account.data.parsed?.info?.tokenAmount?.uiAmount || "0" - ) * price - : undefined, - quotePrice: price, - assetAddress: mint, - originChainId: CHAIN_ID_SOLANA, - originChain: "Solana", - decimals: item.account.data.parsed?.info?.tokenAmount?.decimals, - }); - }); - - return output; + return tvl; }; -const useTerraTVL = () => { - const { isLoading: isTerraNativeLoading, balances: terraNativeBalances } = - useTerraNativeBalances(TERRA_TOKEN_BRIDGE_ADDRESS); - const [terraSwaprates, setTerraSwaprates] = useState([]); - useEffect(() => { - let cancelled = false; - (async () => { - try { - const result = await axios.get(TERRA_SWAPRATE_URL); - if (!cancelled && result && result.data) { - setTerraSwaprates(result.data); - } - } catch (e) {} - })(); - return () => { - cancelled = true; - }; - }, []); - const terraTVL = useMemo(() => { - const arr: TVL[] = []; - if (terraNativeBalances) { - const denoms = Object.keys(terraNativeBalances); - denoms.forEach((denom) => { - const amount = formatUnits( - terraNativeBalances[denom], - NATIVE_TERRA_DECIMALS - ); - const symbol = formatNativeDenom(denom); - let matchingSwap = undefined; - let quotePrice = 0; - let totalValue = 0; - try { - matchingSwap = terraSwaprates.find((swap) => swap.denom === denom); - quotePrice = - denom === "uusd" - ? 1 - : matchingSwap - ? 1 / Number(matchingSwap.swaprate) - : 0; - totalValue = - denom === "uusd" - ? Number( - formatUnits(terraNativeBalances[denom], NATIVE_TERRA_DECIMALS) - ) - : matchingSwap - ? Number(amount) / Number(matchingSwap.swaprate) - : 0; - } catch (e) {} - arr.push({ - amount, - assetAddress: denom, - originChain: CHAINS_BY_ID[CHAIN_ID_TERRA].name, - originChainId: CHAIN_ID_TERRA, - quotePrice, - totalValue, - logo: getNativeTerraIcon(symbol), - symbol, - decimals: NATIVE_TERRA_DECIMALS, - }); - }); - } - return arr; - }, [terraNativeBalances, terraSwaprates]); - return useMemo( - () => ({ terraTVL, isLoading: isTerraNativeLoading }), - [isTerraNativeLoading, terraTVL] - ); -}; - -const useSolanaPrices = ( - mintAddresses: string[], - tokenMap: DataWrapper -) => { - const [isLoading, setIsLoading] = useState(false); - const [priceMap, setPriceMap] = useState | null>(null); - const [error] = useState(""); +const useTVL = () => { + const [tvl, setTvl] = useState>(fetchDataWrapper()); useEffect(() => { let cancelled = false; - - if (!mintAddresses || !mintAddresses.length || !tokenMap.data) { - return; - } - - const relevantMarkets: { - publicKey?: PublicKey; - name: string; - deprecated?: boolean; - mintAddress: string; - }[] = []; - mintAddresses.forEach((address) => { - const tokenInfo = tokenMap.data?.find((x) => x.address === address); - const relevantMarket = tokenInfo && serumMarkets[tokenInfo.symbol]; - if (relevantMarket) { - relevantMarkets.push({ ...relevantMarket, mintAddress: address }); - } - }); - - setIsLoading(true); - const priceMap: Map = new Map(); - const connection = new Connection(SOLANA_HOST); - const promises: Promise[] = []; - //Load all the revelevant markets into the priceMap - relevantMarkets.forEach((market) => { - const marketName: string = market.name; - promises.push( - priceStore - .getPrice(connection, marketName) - .then((result) => { - priceMap.set(market.mintAddress, result); - }) - .catch((e) => { - //Do nothing, we just won't load this price. - return Promise.resolve(); - }) - ); - }); - - Promise.all(promises).then(() => { - //By this point all the relevant markets are loaded. - if (!cancelled) { - setPriceMap(priceMap); - setIsLoading(false); - } - }); - - return () => { - cancelled = true; - return; - }; - }, [mintAddresses, tokenMap.data]); - - return useMemo(() => { - return { - isFetching: isLoading, - data: priceMap || null, - error: error, - receivedAt: null, - }; - }, [error, priceMap, isLoading]); -}; - -const useTVL = (): DataWrapper => { - const [ethCovalentData, setEthCovalentData] = useState(undefined); - const [ethCovalentIsLoading, setEthCovalentIsLoading] = useState(false); - const [ethCovalentError, setEthCovalentError] = useState(""); - - const [bscCovalentData, setBscCovalentData] = useState(undefined); - const [bscCovalentIsLoading, setBscCovalentIsLoading] = useState(false); - const [bscCovalentError, setBscCovalentError] = useState(""); - - const [polygonCovalentData, setPolygonCovalentData] = useState(undefined); - const [polygonCovalentIsLoading, setPolygonCovalentIsLoading] = - useState(false); - const [polygonCovalentError, setPolygonCovalentError] = useState(""); - - const [avaxCovalentData, setAvaxCovalentData] = useState(undefined); - const [avaxCovalentIsLoading, setAvaxCovalentIsLoading] = useState(false); - const [avaxCovalentError, setAvaxCovalentError] = useState(""); - - const [solanaCustodyTokens, setSolanaCustodyTokens] = useState< - { pubkey: PublicKey; account: AccountInfo }[] | undefined - >(undefined); - const [solanaCustodyTokensLoading, setSolanaCustodyTokensLoading] = - useState(false); - const [solanaCustodyTokensError, setSolanaCustodyTokensError] = useState(""); - const mintAddresses = useMemo(() => { - const addresses: string[] = []; - solanaCustodyTokens?.forEach((item) => { - const mintKey = item.account.data.parsed?.info?.mint?.toString(); - if (mintKey) { - addresses.push(mintKey); - } - }); - return addresses; - }, [solanaCustodyTokens]); - - const solanaMetadata = useMetadata(CHAIN_ID_SOLANA, mintAddresses); - const solanaTokenMap = useSolanaTokenMap(); - const solanaPrices = useSolanaPrices(mintAddresses, solanaTokenMap); - - const { isLoading: isTerraLoading, terraTVL } = useTerraTVL(); - - const solanaTVL = useMemo( - () => calcSolanaTVL(solanaCustodyTokens, solanaMetadata, solanaPrices), - [solanaCustodyTokens, solanaMetadata, solanaPrices] - ); - const ethTVL = useMemo( - () => calcEvmTVL(ethCovalentData, CHAIN_ID_ETH), - [ethCovalentData] - ); - const bscTVL = useMemo( - () => calcEvmTVL(bscCovalentData, CHAIN_ID_BSC), - [bscCovalentData] - ); - const polygonTVL = useMemo( - () => calcEvmTVL(polygonCovalentData, CHAIN_ID_POLYGON), - [polygonCovalentData] - ); - const avaxTVL = useMemo( - () => calcEvmTVL(avaxCovalentData, CHAIN_ID_AVAX), - [avaxCovalentData] - ); - - useEffect(() => { - let cancelled = false; - setEthCovalentIsLoading(true); axios - .get( - COVALENT_GET_TOKENS_URL(CHAIN_ID_ETH, ETH_TOKEN_BRIDGE_ADDRESS, false) - ) - .then( - (results) => { - if (!cancelled) { - setEthCovalentData(results.data); - setEthCovalentIsLoading(false); - } - }, - (error) => { - if (!cancelled) { - setEthCovalentError("Unable to retrieve Ethereum TVL."); - setEthCovalentIsLoading(false); - } + .get(TVL_URL) + .then((response) => { + if (!cancelled) { + setTvl(receiveDataWrapper(createTVLArray(response.data))); } - ); - }, []); - - useEffect(() => { - let cancelled = false; - setBscCovalentIsLoading(true); - axios - .get( - COVALENT_GET_TOKENS_URL(CHAIN_ID_BSC, BSC_TOKEN_BRIDGE_ADDRESS, false) - ) - .then( - (results) => { - if (!cancelled) { - setBscCovalentData(results.data); - setBscCovalentIsLoading(false); - } - }, - (error) => { - if (!cancelled) { - setBscCovalentError("Unable to retrieve BSC TVL."); - setBscCovalentIsLoading(false); - } - } - ); - }, []); - - useEffect(() => { - let cancelled = false; - setPolygonCovalentIsLoading(true); - axios - .get( - COVALENT_GET_TOKENS_URL( - CHAIN_ID_POLYGON, - POLYGON_TOKEN_BRIDGE_ADDRESS, - false - ) - ) - .then( - (results) => { - if (!cancelled) { - setPolygonCovalentData(results.data); - setPolygonCovalentIsLoading(false); - } - }, - (error) => { - if (!cancelled) { - setPolygonCovalentError("Unable to retrieve Polygon TVL."); - setPolygonCovalentIsLoading(false); - } - } - ); - }, []); - - useEffect(() => { - let cancelled = false; - setAvaxCovalentIsLoading(true); - axios - .get( - COVALENT_GET_TOKENS_URL(CHAIN_ID_AVAX, AVAX_TOKEN_BRIDGE_ADDRESS, false) - ) - .then( - (results) => { - if (!cancelled) { - setAvaxCovalentData(results.data); - setAvaxCovalentIsLoading(false); - } - }, - (error) => { - if (!cancelled) { - setAvaxCovalentError("Unable to retrieve Avax TVL."); - setAvaxCovalentIsLoading(false); - } - } - ); - }, []); - - useEffect(() => { - let cancelled = false; - const connection = new Connection(SOLANA_HOST, "confirmed"); - setSolanaCustodyTokensLoading(true); - connection - .getParsedTokenAccountsByOwner(new PublicKey(SOL_CUSTODY_ADDRESS), { - programId: TOKEN_PROGRAM_ID, }) - .then( - (results) => { - if (!cancelled) { - setSolanaCustodyTokens(results.value); - setSolanaCustodyTokensLoading(false); - } - }, - (error) => { - if (!cancelled) { - setSolanaCustodyTokensLoading(false); - setSolanaCustodyTokensError( - "Unable to retrieve Solana locked tokens." - ); - } + .catch((error) => { + console.log(error); + if (!cancelled) { + setTvl(errorDataWrapper(error)); } - ); + }); + return () => { + cancelled = true; + }; }, []); - return useMemo(() => { - const tvlArray = [ - ...ethTVL, - ...bscTVL, - ...polygonTVL, - ...avaxTVL, - ...solanaTVL, - ...terraTVL, - ]; - - return { - isFetching: - ethCovalentIsLoading || - bscCovalentIsLoading || - polygonCovalentIsLoading || - avaxCovalentIsLoading || - solanaCustodyTokensLoading || - isTerraLoading, - error: - ethCovalentError || - bscCovalentError || - polygonCovalentError || - avaxCovalentError || - solanaCustodyTokensError, - receivedAt: null, - data: tvlArray, - }; - }, [ - ethCovalentError, - ethCovalentIsLoading, - bscCovalentError, - bscCovalentIsLoading, - polygonCovalentError, - polygonCovalentIsLoading, - polygonTVL, - avaxCovalentError, - avaxCovalentIsLoading, - avaxTVL, - ethTVL, - bscTVL, - solanaTVL, - solanaCustodyTokensError, - solanaCustodyTokensLoading, - isTerraLoading, - terraTVL, - ]); + return tvl; }; export default useTVL; diff --git a/bridge_ui/src/hooks/useTransactionCount.ts b/bridge_ui/src/hooks/useTransactionCount.ts index c2c67c2e..5136baa2 100644 --- a/bridge_ui/src/hooks/useTransactionCount.ts +++ b/bridge_ui/src/hooks/useTransactionCount.ts @@ -9,24 +9,29 @@ import { export type TransactionCount = { totalAllTime: number; - total24h: number; + total48h: number; mostRecent: any; //This will be a signedVAA }; const mergeResults = (totals: any, recents: any): TransactionCount | null => { let totalAllTime = 0; - let total24h = 0; + let total48h = 0; + const lastDays = Object.values(totals?.DailyTotals || {}); + const lastTwoDays: any = lastDays.slice(lastDays.length - 2); VAA_EMITTER_ADDRESSES.forEach((address: string) => { let totalAll = (totals?.TotalCount && totals.TotalCount[address]) || 0; - let total24 = (totals?.LastDayCount && totals.LastDayCount[address]) || 0; + let total48 = + lastTwoDays.length === 2 + ? (lastTwoDays[0][address] || 0) + (lastTwoDays[1][address] || 0) + : 0; totalAllTime += totalAll; - total24h += total24; + total48h += total48; }); return { totalAllTime, - total24h, + total48h, mostRecent: null, }; }; diff --git a/bridge_ui/src/utils/coinGecko.ts b/bridge_ui/src/utils/coinGecko.ts new file mode 100644 index 00000000..753335c3 --- /dev/null +++ b/bridge_ui/src/utils/coinGecko.ts @@ -0,0 +1,684 @@ +export type CoinGeckoIdToImageUrl = { + [id: string]: string; +}; + +export const COIN_GECKO_IMAGE_URLS: CoinGeckoIdToImageUrl = { + "yearn-finance": + "https://assets.coingecko.com/coins/images/11849/small/yfi-192x192.png?1598325330", + partneroid: + "https://assets.coingecko.com/coins/images/21381/small/144531867-a8016f41-3b31-4d6f-97a1-372a58d48626.png?1639034184", + metaseer: + "https://assets.coingecko.com/coins/images/17443/small/metas.PNG?1627863142", + only1: + "https://assets.coingecko.com/coins/images/17501/small/like-token.png?1628036165", + floof: + "https://assets.coingecko.com/coins/images/19810/small/FLOOF_logo_200x200.png?1635917291", + "nole-npc": + "https://assets.coingecko.com/coins/images/19981/small/1EXEFTo6_400x400.jpg?1640251890", + "solareum-wallet": + "https://assets.coingecko.com/coins/images/20958/small/xsb-200.png?1638141904", + "synthetify-token": + "https://assets.coingecko.com/coins/images/14835/small/synthetify_token.png?1618611507", + mim: "https://assets.coingecko.com/coins/images/19927/small/13988.png?1636323160", + raydium: + "https://assets.coingecko.com/coins/images/13928/small/PSigc4ie_400x400.jpg?1612875614", + mixmarvel: + "https://assets.coingecko.com/coins/images/8222/small/8878caf93b1e3b6cfb3b414bda3b5250.png?1613945432", + ariadne: + "https://assets.coingecko.com/coins/images/19401/small/Frame_5_%287%29_%281%29.png?1635176608", + apyswap: + "https://assets.coingecko.com/coins/images/14163/small/apys.png?1635831990", + xhashtag: + "https://assets.coingecko.com/coins/images/20912/small/xtag.png?1637922382", + "socean-staked-sol": + "https://assets.coingecko.com/coins/images/18468/small/biOTzfxE_400x400.png?1633662119", + "bamboo-coin": + "https://assets.coingecko.com/coins/images/19620/small/FC0hnduacAAHYFC.png?1635496724", + "waggle-network": + "https://assets.coingecko.com/coins/images/18696/small/waggle.PNG?1633750177", + hapi: "https://assets.coingecko.com/coins/images/14298/small/R9i2HjAL_400x400.jpg?1615332438", + sail: "https://assets.coingecko.com/coins/images/16657/small/SAIL.png?1624608515", + "lido-staked-sol": + "https://assets.coingecko.com/coins/images/18369/small/logo_-_2021-09-15T100934.765.png?1631671781", + solrazr: + "https://assets.coingecko.com/coins/images/18390/small/Sol-Razr-Logo-TICKER.png?1631759669", + samoyedcoin: + "https://assets.coingecko.com/coins/images/15051/small/IXeEj5e.png?1619560738", + babytigergold: + "https://assets.coingecko.com/coins/images/22811/small/logo_babytiger.png?1642658264", + "rope-token": + "https://assets.coingecko.com/coins/images/14661/small/rope-v6.png?1619606776", + "usd-coin": + "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png?1547042389", + "grape-2": + "https://assets.coingecko.com/coins/images/18149/small/fRsuAlcV_400x400.png?1632437325", + "terra-luna": + "https://assets.coingecko.com/coins/images/8284/small/luna1557227471663.png?1567147072", + "tiger-coin": + "https://assets.coingecko.com/coins/images/22681/small/tigerlogo.png?1642407729", + bitcoin: + "https://assets.coingecko.com/coins/images/1/small/bitcoin.png?1547033579", + "woof-token": + "https://assets.coingecko.com/coins/images/18319/small/woof-logo-svg-true-solana-radient-blackinside.png?1637655115", + bilira: + "https://assets.coingecko.com/coins/images/10119/small/JBs9jiXO_400x400.jpg?1642668342", + sushi: + "https://assets.coingecko.com/coins/images/12271/small/512x512_Logo_no_chop.png?1606986688", + "star-atlas": + "https://assets.coingecko.com/coins/images/17659/small/Icon_Reverse.png?1628759092", + aurory: + "https://assets.coingecko.com/coins/images/19324/small/logo.png?1635076945", + "avalanche-2": + "https://assets.coingecko.com/coins/images/12559/small/coin-round-red.png?1604021818", + ethereum: + "https://assets.coingecko.com/coins/images/279/small/ethereum.png?1595348880", + "battle-of-guardians-share": + "https://assets.coingecko.com/coins/images/22285/small/K3hU77wS_400x400.jpg?1641365642", + bitsong: + "https://assets.coingecko.com/coins/images/5041/small/logo_-_2021-01-10T210801.390.png?1610284134", + "blocto-token": + "https://assets.coingecko.com/coins/images/18657/small/BLT_token.png?1633082645", + "wrapped-usdt": + "https://assets.coingecko.com/coins/images/19507/small/wusdt.png?1635315186", + renbtc: + "https://assets.coingecko.com/coins/images/11370/small/Bitcoin.jpg?1628072791", + "gari-network": + "https://assets.coingecko.com/coins/images/22615/small/gari.png?1642313087", + chainlink: + "https://assets.coingecko.com/coins/images/877/small/chainlink-new-logo.png?1547034700", + cashcow: + "https://assets.coingecko.com/coins/images/19388/small/cropped-cropped-CashCowToken_08.png?1635148053", + "3x-long-ethereum-token": + "https://assets.coingecko.com/coins/images/10163/small/683JEXMN_400x400_%281%29.png?1576504568", + defil: + "https://assets.coingecko.com/coins/images/17708/small/defillogo200200.png?1629080381", + tether: + "https://assets.coingecko.com/coins/images/325/small/Tether-logo.png?1598003707", + "ptokens-btc": + "https://assets.coingecko.com/coins/images/10805/small/J51iIea.png?1583891599", + cropperfinance: + "https://assets.coingecko.com/coins/images/17883/small/copperfinance.PNG?1629708744", + aldrin: + "https://assets.coingecko.com/coins/images/16849/small/Aldrin.png?1629959768", + "woo-network": + "https://assets.coingecko.com/coins/images/12921/small/w2UiemF__400x400.jpg?1603670367", + bonfida: + "https://assets.coingecko.com/coins/images/13395/small/fida-dark.png?1608112224", + victorum: + "https://assets.coingecko.com/coins/images/17391/small/Victorum-logo200X200.png?1627525058", + "bull-coin": + "https://assets.coingecko.com/coins/images/15975/small/bull_ms.94cd70ff.png?1622525834", + "twirl-governance-token": + "https://assets.coingecko.com/coins/images/16725/small/Yn1ebvX.png?1624850650", + monkeyball: + "https://assets.coingecko.com/coins/images/20841/small/monkeyball.png?1639023123", + sypool: + "https://assets.coingecko.com/coins/images/18518/small/sypool.PNG?1632268218", + "foxy-equilibrium": + "https://assets.coingecko.com/coins/images/17303/small/cmc200x200.png?1627268759", + "squirrel-finance": + "https://assets.coingecko.com/coins/images/12415/small/transparent_logo200.png?1599690422", + genopets: + "https://assets.coingecko.com/coins/images/20360/small/gene-token.png?1636945172", + goosefx: + "https://assets.coingecko.com/coins/images/19793/small/0Kjm9f4.png?1635906737", + "solape-token": + "https://assets.coingecko.com/coins/images/16930/small/128px-coin.png?1625753550", + "galaxy-war": + "https://assets.coingecko.com/coins/images/22166/small/e2x7gMJ4_400x400.jpg?1641166277", + "1safu": + "https://assets.coingecko.com/coins/images/22792/small/145941796-8f7716f4-66bc-4a38-9ad5-441525c3b5b2.png?1642581127", + "solpad-finance": + "https://assets.coingecko.com/coins/images/16368/small/solpad.PNG?1623820231", + dexlab: + "https://assets.coingecko.com/coins/images/17276/small/4_Secondary_GradientSymbol_DarkLogo.png?1643018984", + "solanasail-governance-token": + "https://assets.coingecko.com/coins/images/17658/small/logo_GSAIL.png?1628758657", + "parasol-finance": + "https://assets.coingecko.com/coins/images/21551/small/icon.png?1642584584", + meanfi: + "https://assets.coingecko.com/coins/images/21557/small/89934951.png?1639466364", + marinade: + "https://assets.coingecko.com/coins/images/18867/small/MNDE.png?1643187748", + "mango-markets": + "https://assets.coingecko.com/coins/images/14773/small/token-mango.png?1628171237", + blockasset: + "https://assets.coingecko.com/coins/images/21332/small/blockasset.PNG?1638947864", + "parrot-protocol": + "https://assets.coingecko.com/coins/images/18443/small/PRT.png?1634698095", + tudabirds: + "https://assets.coingecko.com/coins/images/22839/small/_TOvRxfx_400x400.jpg?1642745695", + serum: + "https://assets.coingecko.com/coins/images/11970/small/serum-logo.png?1597121577", + "sunny-aggregator": + "https://assets.coingecko.com/coins/images/18039/small/90dbe787-8e5f-473c-b923-fe138a7a30ea.png?1630314924", + saber: + "https://assets.coingecko.com/coins/images/17162/small/oYs_YFz8_400x400.jpg?1626678457", + "wrapped-solana": + "https://assets.coingecko.com/coins/images/21629/small/solana.jpg?1639626543", + "step-finance": + "https://assets.coingecko.com/coins/images/14988/small/step.png?1619274762", + zoints: + "https://assets.coingecko.com/coins/images/20376/small/logo_-_2021-11-15T121641.242.png?1636949811", + allbridge: + "https://assets.coingecko.com/coins/images/18690/small/abr.png?1640742053", + "solchicks-token": + "https://assets.coingecko.com/coins/images/20978/small/chicks.png?1638162821", + aave: "https://assets.coingecko.com/coins/images/12645/small/AAVE.png?1601374110", + kin: "https://assets.coingecko.com/coins/images/959/small/kin.png?1586917032", + msol: "https://assets.coingecko.com/coins/images/17752/small/mSOL.png?1644541955", + orca: "https://assets.coingecko.com/coins/images/17547/small/Orca_Logo.png?1628781615", + solanium: + "https://assets.coingecko.com/coins/images/15816/small/token-icon.png?1621981387", + "tiki-token": + "https://assets.coingecko.com/coins/images/16427/small/60cbd8fd912298ca60e1fd7e_logo_TIKI_200_square.png?1623995319", + "coin-discovery": + "https://assets.coingecko.com/coins/images/18839/small/IdvWAhot_400x400.jpg?1633572605", + "huobi-btc": + "https://assets.coingecko.com/coins/images/12407/small/Unknown-5.png?1599624896", + rai: "https://assets.coingecko.com/coins/images/14004/small/RAI-logo-coin.png?1613592334", + "coin-capsule": + "https://assets.coingecko.com/coins/images/15921/small/e55393fa-7b4d-40f5-9f36-9a8a6bdcb570.png?1622430581", + "wrapped-ecomi": + "https://assets.coingecko.com/coins/images/14675/small/ecomi.jpg?1617689100", + tomoe: + "https://assets.coingecko.com/coins/images/12646/small/tomoe_logo.png?1601377449", + math: "https://assets.coingecko.com/coins/images/11335/small/2020-05-19-token-200.png?1589940590", + "spell-token": + "https://assets.coingecko.com/coins/images/15861/small/abracadabra-3.png?1622544862", + "mirror-protocol": + "https://assets.coingecko.com/coins/images/13295/small/mirror_logo_transparent.png?1611554658", + "governance-ohm": + "https://assets.coingecko.com/coins/images/21129/small/token_wsOHM_logo.png?1638764900", + wasder: + "https://assets.coingecko.com/coins/images/15374/small/wasderlogo200x200.png?1620691729", + "basic-attention-token": + "https://assets.coingecko.com/coins/images/677/small/basic-attention-token.png?1547034427", + decentraland: + "https://assets.coingecko.com/coins/images/878/small/decentraland-mana.png?1550108745", + "1inch": + "https://assets.coingecko.com/coins/images/13469/small/1inch-token.png?1608803028", + gala: "https://assets.coingecko.com/coins/images/12493/small/GALA-COINGECKO.png?1600233435", + audius: + "https://assets.coingecko.com/coins/images/12913/small/AudiusCoinLogo_2x.png?1603425727", + ageur: + "https://assets.coingecko.com/coins/images/19479/small/agEUR.png?1635283566", + usdk: "https://assets.coingecko.com/coins/images/8824/small/usdk.png?1563418517", + bancor: + "https://assets.coingecko.com/coins/images/736/small/bancor-bnt.png?1628822309", + uniswap: + "https://assets.coingecko.com/coins/images/12504/small/uniswap-uni.png?1600306604", + ovr: "https://assets.coingecko.com/coins/images/13429/small/ovr_logo.png?1608518911", + augur: + "https://assets.coingecko.com/coins/images/309/small/REP.png?1596339859", + "wrapped-bitcoin": + "https://assets.coingecko.com/coins/images/7598/small/wrapped_bitcoin_wbtc.png?1548822744", + jpyc: "https://assets.coingecko.com/coins/images/17277/small/WoZ8rruL_400x400.png?1627016492", + "ufo-gaming": + "https://assets.coingecko.com/coins/images/16801/small/ufo.png?1644048038", + "dds-store": + "https://assets.coingecko.com/coins/images/13946/small/11qbAbzb_400x400.png?1613172588", + "hlth-token": + "https://assets.coingecko.com/coins/images/18637/small/hlth.png?1639728357", + aleph: + "https://assets.coingecko.com/coins/images/11676/small/Monochram-aleph.png?1608483725", + hex: "https://assets.coingecko.com/coins/images/10103/small/HEX-logo.png?1575942673", + "cream-2": + "https://assets.coingecko.com/coins/images/11976/small/Cream.png?1596593418", + throne: + "https://assets.coingecko.com/coins/images/16965/small/aXhD3i_g_400x400.jpg?1625804145", + "angle-protocol": + "https://assets.coingecko.com/coins/images/19060/small/ANGLE_Token_Logo.png?1635281291", + rune: "https://assets.coingecko.com/coins/images/15606/small/rune-200x200.png?1621315121", + "akita-inu": + "https://assets.coingecko.com/coins/images/14115/small/logo_%282%29.png?1644913173", + ramp: "https://assets.coingecko.com/coins/images/12837/small/RAMP-Logo-v2-1000pxsq.png?1617952606", + "frax-share": + "https://assets.coingecko.com/coins/images/13423/small/frax_share.png?1608478989", + chiliz: + "https://assets.coingecko.com/coins/images/8834/small/Chiliz.png?1561970540", + parsiq: + "https://assets.coingecko.com/coins/images/11973/small/DsNgK0O.png?1596590280", + "elite-swap": + "https://assets.coingecko.com/coins/images/13715/small/logo_-_2021-01-20T105016.992.png?1611111027", + kleekai: + "https://assets.coingecko.com/coins/images/15548/small/Klee-Kai-Logo.png?1628258448", + olympus: + "https://assets.coingecko.com/coins/images/14483/small/token_OHM_%281%29.png?1628311611", + "the-sandbox": + "https://assets.coingecko.com/coins/images/12129/small/sandbox_logo.jpg?1597397942", + opendao: + "https://assets.coingecko.com/coins/images/21956/small/fo42wXI6_400x400.jpg?1640373810", + chain: + "https://assets.coingecko.com/coins/images/19678/small/Chain_icon.png?1635741399", + civic: + "https://assets.coingecko.com/coins/images/788/small/Civic-logo-blue.png?1636393120", + "hot-cross": + "https://assets.coingecko.com/coins/images/15706/small/Hotcross.png?1632197570", + "pax-gold": + "https://assets.coingecko.com/coins/images/9519/small/paxg.PNG?1568542565", + "gemma-extending-tech": + "https://assets.coingecko.com/coins/images/12226/small/200.png?1643188059", + "the-4th-pillar": + "https://assets.coingecko.com/coins/images/3434/small/four-ticker-2021-256x256.png?1617702287", + ridotto: + "https://assets.coingecko.com/coins/images/18671/small/200x200_%2832%29.png?1632875527", + chronobank: + "https://assets.coingecko.com/coins/images/604/small/time-32x32.png?1627130666", + hxro: "https://assets.coingecko.com/coins/images/7805/small/Hxro_Profile_Transparent.png?1622443308", + fantom: + "https://assets.coingecko.com/coins/images/4001/small/Fantom.png?1558015016", + "binance-usd": + "https://assets.coingecko.com/coins/images/9576/small/BUSD.png?1568947766", + "ftx-token": + "https://assets.coingecko.com/coins/images/9026/small/F.png?1609051564", + vlaunch: + "https://assets.coingecko.com/coins/images/20838/small/vlaunch_22.png?1637738535", + contentos: + "https://assets.coingecko.com/coins/images/8379/small/4036.png?1561085375", + "lido-dao": + "https://assets.coingecko.com/coins/images/13573/small/Lido_DAO.png?1609873644", + "jokermanor-metaverse": + "https://assets.coingecko.com/coins/images/20556/small/14732.png?1637208904", + "pancake-games": + "https://assets.coingecko.com/coins/images/20217/small/6oc-L2UC_400x400.png?1636671365", + launchpool: + "https://assets.coingecko.com/coins/images/14041/small/dGUvV0HQ_400x400.jpg?1613976219", + pixelverse: + "https://assets.coingecko.com/coins/images/19934/small/pixelverse.PNG?1636325521", + "poolz-finance": + "https://assets.coingecko.com/coins/images/13679/small/poolz_logo.png?1610806091", + dai: "https://assets.coingecko.com/coins/images/9956/small/4943.png?1636636734", + million: + "https://assets.coingecko.com/coins/images/16825/small/logo200x200.png?1625834139", + gene: "https://assets.coingecko.com/coins/images/14145/small/logo.a60a0c80_%281%29.png?1614653629", + "render-token": + "https://assets.coingecko.com/coins/images/11636/small/rndr.png?1638840934", + "nord-finance": + "https://assets.coingecko.com/coins/images/13630/small/nord.jpg?1610465136", + "genaro-network": + "https://assets.coingecko.com/coins/images/1361/small/genaro-network.png?1547035387", + "bird-money": + "https://assets.coingecko.com/coins/images/13260/small/favicon-180x180.png?1611546646", + "anchor-beth-token": + "https://assets.coingecko.com/coins/images/21002/small/bETH.png?1638187691", + xsgd: "https://assets.coingecko.com/coins/images/12832/small/StraitsX_Singapore_Dollar_%28XSGD%29_Token_Logo.png?1633936813", + "orion-money": + "https://assets.coingecko.com/coins/images/18630/small/YtrqPIWc.png?1632710781", + xdefi: + "https://assets.coingecko.com/coins/images/19524/small/xdefi.png?1637917251", + "metaverse-index": + "https://assets.coingecko.com/coins/images/14684/small/MVI_logo.png?1617776444", + "dogelon-mars": + "https://assets.coingecko.com/coins/images/14962/small/6GxcPRo3_400x400.jpg?1619157413", + "xcad-network": + "https://assets.coingecko.com/coins/images/15857/small/xcad.PNG?1622164789", + sarcophagus: + "https://assets.coingecko.com/coins/images/15091/small/E2S2-CcUcAAyNxD.jpeg?1622519884", + xsigma: + "https://assets.coingecko.com/coins/images/14090/small/logo_128.png?1619775781", + hedget: + "https://assets.coingecko.com/coins/images/12453/small/Hedget.png?1599944809", + constitutiondao: + "https://assets.coingecko.com/coins/images/20612/small/GN_UVm3d_400x400.jpg?1637294355", + "matic-network": + "https://assets.coingecko.com/coins/images/4713/small/matic-token-icon.png?1624446912", + "wrapped-steth": + "https://assets.coingecko.com/coins/images/18834/small/wstETH.png?1633565443", + polkastarter: + "https://assets.coingecko.com/coins/images/12648/small/polkastarter.png?1609813702", + frax: "https://assets.coingecko.com/coins/images/13422/small/frax_logo.png?1608476506", + upbots: + "https://assets.coingecko.com/coins/images/12476/small/UBXT.png?1600132967", + "keep-network": + "https://assets.coingecko.com/coins/images/3373/small/IuNzUb5b_400x400.jpg?1589526336", + "reserve-rights-token": + "https://assets.coingecko.com/coins/images/8365/small/rsr.png?1637983320", + "swag-finance": + "https://assets.coingecko.com/coins/images/12805/small/photo_2020-10-14_23.17.02.jpeg?1602688642", + opium: + "https://assets.coingecko.com/coins/images/13758/small/opium-token-black_%281%29.png?1611767960", + akropolis: + "https://assets.coingecko.com/coins/images/3328/small/Akropolis.png?1547037929", + swipe: + "https://assets.coingecko.com/coins/images/9368/small/swipe.png?1566792311", + dydx: "https://assets.coingecko.com/coins/images/17500/small/hjnIm9bV.jpg?1628009360", + "shiba-inu": + "https://assets.coingecko.com/coins/images/11939/small/shiba.png?1622619446", + "magic-internet-money": + "https://assets.coingecko.com/coins/images/16786/small/mimlogopng.png?1624979612", + artem: + "https://assets.coingecko.com/coins/images/21998/small/ARTM_Logo_MAIN_%281%29.png?1644469331", + "binance-wrapped-btc": + "https://assets.coingecko.com/coins/images/14867/small/binance-btc_32.png?1618814666", + gaj: "https://assets.coingecko.com/coins/images/15257/small/logo200x200.png?1629887093", + quiztok: + "https://assets.coingecko.com/coins/images/8208/small/QTCON.png?1587543372", + "bxmi-token": + "https://assets.coingecko.com/coins/images/20859/small/1QE9Pge.png?1637803118", + "redfox-labs-2": + "https://assets.coingecko.com/coins/images/12956/small/rfox.png?1642926902", + "wrapped-ust": + "https://assets.coingecko.com/coins/images/15462/small/ust.png?1620910058", + lunachow: + "https://assets.coingecko.com/coins/images/18805/small/J-MwYfhD_400x400.jpg?1633475157", + terrausd: + "https://assets.coingecko.com/coins/images/12681/small/UST.png?1601612407", + "celsius-degree-token": + "https://assets.coingecko.com/coins/images/3263/small/CEL_logo.png?1609598753", + "my-neighbor-alice": + "https://assets.coingecko.com/coins/images/14375/small/alice_logo.jpg?1615782968", + "yield-optimization-platform": + "https://assets.coingecko.com/coins/images/13678/small/J7zykPx.jpg?1610802162", + "staked-ether": + "https://assets.coingecko.com/coins/images/13442/small/steth_logo.png?1608607546", + "lua-token": + "https://assets.coingecko.com/coins/images/12627/small/Screenshot_2020-09-28_at_6.24.59_PM.jpg?1601288721", + "amy-finance": + "https://assets.coingecko.com/coins/images/18719/small/9oSy6bTl_400x400.png?1633127387", + binancecoin: + "https://assets.coingecko.com/coins/images/825/small/bnb-icon2_2x.png?1644979850", + "axie-infinity": + "https://assets.coingecko.com/coins/images/13029/small/axie_infinity_logo.png?1604471082", + "ethernity-chain": + "https://assets.coingecko.com/coins/images/14238/small/ethernity_logo.png?1615189750", + "perpetual-protocol": + "https://assets.coingecko.com/coins/images/12381/small/60d18e06844a844ad75901a9_mark_only_03.png?1628674771", + "compound-governance-token": + "https://assets.coingecko.com/coins/images/10775/small/COMP.png?1592625425", + weth: "https://assets.coingecko.com/coins/images/2518/small/weth.png?1628852295", + "ethereum-name-service": + "https://assets.coingecko.com/coins/images/19785/small/acatxTm8_400x400.jpg?1635850140", + erc20: + "https://assets.coingecko.com/coins/images/1141/small/0c213e0a1ee44bd8a3c952ffc5bc5a45.png?1628771346", + "chain-games": + "https://assets.coingecko.com/coins/images/12257/small/chain-logo-centered-500x500.png?1599617244", + "interest-bearing-bitcoin": + "https://assets.coingecko.com/coins/images/15500/small/ibbtc.png?1621077589", + "free-novak": + "https://assets.coingecko.com/coins/images/23370/small/logo_%282%29.png?1643955421", + "the-graph": + "https://assets.coingecko.com/coins/images/13397/small/Graph_Token.png?1608145566", + "vega-protocol": + "https://assets.coingecko.com/coins/images/15870/small/vega.PNG?1622178218", + "smooth-love-potion": + "https://assets.coingecko.com/coins/images/10366/small/SLP.png?1578640057", + torg: "https://assets.coingecko.com/coins/images/17596/small/TORG_Logo_200x200.png?1628586056", + "terra-virtua-kolect": + "https://assets.coingecko.com/coins/images/13330/small/CoinGLogo.png?1607507042", + "wrapped-terra": + "https://assets.coingecko.com/coins/images/13628/small/wluna.png?1610448334", + "zam-io": + "https://assets.coingecko.com/coins/images/19522/small/zam.png?1635324134", + covalent: + "https://assets.coingecko.com/coins/images/14168/small/covalent-cqt.png?1624545218", + ampleforth: + "https://assets.coingecko.com/coins/images/4708/small/Ampleforth.png?1561684250", + "shield-finance": + "https://assets.coingecko.com/coins/images/15813/small/3FYKlPka_400x400.png?1621980007", + cindicator: + "https://assets.coingecko.com/coins/images/1006/small/cindicator.png?1547034913", + "curve-dao-token": + "https://assets.coingecko.com/coins/images/12124/small/Curve.png?1597369484", + "safe-coin": + "https://assets.coingecko.com/coins/images/4938/small/safe-coin-logo.png?1547040363", + adapad: + "https://assets.coingecko.com/coins/images/18273/small/EhSqPTtG_400x400.jpg?1631181091", + "crowny-token": + "https://assets.coingecko.com/coins/images/14958/small/crowny-icon-rounded_2x.png?1619147225", + "gera-coin": + "https://assets.coingecko.com/coins/images/13686/small/GeraCoin_Logo-icon-1000px.png?1610919942", + husd: "https://assets.coingecko.com/coins/images/9567/small/HUSD.jpg?1568889385", + "feisty-doge-nft": + "https://assets.coingecko.com/coins/images/17834/small/doge-fractionalized.png?1629390495", + curate: + "https://assets.coingecko.com/coins/images/13327/small/400x400_%281%29_%283%29_%282%29.png?1613998208", + banana: + "https://assets.coingecko.com/coins/images/17521/small/bananaa.png?1628091607", + "injective-protocol": + "https://assets.coingecko.com/coins/images/12882/small/Secondary_Symbol.png?1628233237", + pillar: + "https://assets.coingecko.com/coins/images/809/small/v2logo-1.png?1624906282", + bitspawn: + "https://assets.coingecko.com/coins/images/16513/small/token_logo.png?1631603192", + defire: + "https://assets.coingecko.com/coins/images/15722/small/defire.PNG?1621635373", + nftlaunch: + "https://assets.coingecko.com/coins/images/18140/small/nftl.PNG?1630652662", + pontoon: + "https://assets.coingecko.com/coins/images/19575/small/pontoon.PNG?1635467899", + chronologic: + "https://assets.coingecko.com/coins/images/951/small/Chronologic-network.png?1547034815", + everid: + "https://assets.coingecko.com/coins/images/5209/small/Everest.jpg?1628042930", + botxcoin: + "https://assets.coingecko.com/coins/images/6827/small/botx.jpg?1548317786", + "ice-token": + "https://assets.coingecko.com/coins/images/14586/small/ice.png?1617188825", + charli3: + "https://assets.coingecko.com/coins/images/15052/small/Charli3-Profile-Icon-1.png?1642643567", + "rally-2": + "https://assets.coingecko.com/coins/images/12843/small/image.png?1611212077", + enjincoin: + "https://assets.coingecko.com/coins/images/1102/small/enjin-coin-logo.png?1547035078", + "frontier-token": + "https://assets.coingecko.com/coins/images/12479/small/frontier_logo.png?1600145472", + essentia: + "https://assets.coingecko.com/coins/images/2483/small/Essentia-token.jpg?1547036604", + orbs: "https://assets.coingecko.com/coins/images/4630/small/Orbs.jpg?1547039896", + "nexus-governance-token": + "https://assets.coingecko.com/coins/images/19080/small/aK3V5I56_400x400.jpg?1634304970", + playnity: + "https://assets.coingecko.com/coins/images/21479/small/ply.png?1639651574", + starterra: + "https://assets.coingecko.com/coins/images/17715/small/starterra-logo.png?1629084125", + "mirrored-tesla": + "https://assets.coingecko.com/coins/images/13644/small/mirror_logo_transparent.png?1611565294", + "anchor-protocol": + "https://assets.coingecko.com/coins/images/14420/small/anchor_protocol_logo.jpg?1615965420", + "mirrored-amazon": + "https://assets.coingecko.com/coins/images/13646/small/mirror_logo_transparent.png?1611565645", + bitlocus: + "https://assets.coingecko.com/coins/images/20913/small/btl.png?1637922710", + "mirrored-spdr-s-p-500": + "https://assets.coingecko.com/coins/images/21088/small/mir.png?1638323591", + "mirrored-airbnb": + "https://assets.coingecko.com/coins/images/14022/small/mirror_logo_transparent.png?1613719600", + anchorust: + "https://assets.coingecko.com/coins/images/21097/small/aust.png?1638324579", + "mirrored-netflix": + "https://assets.coingecko.com/coins/images/13643/small/mirror_logo_transparent.png?1611565277", + "pylon-protocol": + "https://assets.coingecko.com/coins/images/16859/small/pylon_logo.png?1625466331", + "mirrored-apple": + "https://assets.coingecko.com/coins/images/13514/small/mirror_logo_transparent.png?1611564758", + secret: + "https://assets.coingecko.com/coins/images/11871/small/Secret.png?1595520186", + "ethereum-meta": + "https://assets.coingecko.com/coins/images/6586/small/ethereum-meta.png?1548125409", + cake: "https://assets.coingecko.com/coins/images/21639/small/cake.png?1639630973", + "radio-caca": + "https://assets.coingecko.com/coins/images/17841/small/ez44_BSs_400x400.jpg?1629464170", + "polychain-monsters": + "https://assets.coingecko.com/coins/images/14604/small/polkamon.png?1617238350", + "panda-dao": + "https://assets.coingecko.com/coins/images/14295/small/logo_Panda_Dao.png?1617277854", + lasereyes: + "https://assets.coingecko.com/coins/images/22597/small/lsr.png?1643524878", + "wall-street-bets-dapp": + "https://assets.coingecko.com/coins/images/15093/small/Pe1mrDu.png?1629882480", + "binance-eth": + "https://assets.coingecko.com/coins/images/13804/small/Binnace.png?1611997829", + soldoge: + "https://assets.coingecko.com/coins/images/19746/small/2L4aX1r.png?1635822424", + "odin-protocol": + "https://assets.coingecko.com/coins/images/14934/small/ODIN_iso_black.png?1619076975", + recharge: + "https://assets.coingecko.com/coins/images/18120/small/thecharge.PNG?1630559768", + mysterium: + "https://assets.coingecko.com/coins/images/757/small/mysterium.png?1547034503", + "plant-vs-undead-token": + "https://assets.coingecko.com/coins/images/17461/small/token-200x200.png?1627883446", + insurace: + "https://assets.coingecko.com/coins/images/14226/small/insur.png?1615124622", + cardano: + "https://assets.coingecko.com/coins/images/975/small/cardano.png?1547034860", + echoin: + "https://assets.coingecko.com/coins/images/9354/small/L32_KzNQ_400x400.jpg?1566513096", + solana: + "https://assets.coingecko.com/coins/images/4128/small/solana.png?1640133422", + litecoin: + "https://assets.coingecko.com/coins/images/2/small/litecoin.png?1547033580", + wolfsafepoorpeople: + "https://assets.coingecko.com/coins/images/17090/small/wspplogo.png?1626187594", + "spongebob-square": + "https://assets.coingecko.com/coins/images/22772/small/Spnge.png?1642576286", + "globaltrustfund-token": + "https://assets.coingecko.com/coins/images/11817/small/gtf.png?1594679456", + "trust-wallet-token": + "https://assets.coingecko.com/coins/images/11085/small/Trust.png?1588062702", + "crypto-fight-club": + "https://assets.coingecko.com/coins/images/21695/small/zGwwAgL.png?1639721544", + ztcoin: + "https://assets.coingecko.com/coins/images/6566/small/ztcoin.jpg?1547042777", + wraith: + "https://assets.coingecko.com/coins/images/18099/small/LOGOTRANS-1.png?1630475109", + investin: + "https://assets.coingecko.com/coins/images/15588/small/ivn_logo.png?1621267247", + psyoptions: + "https://assets.coingecko.com/coins/images/22784/small/download.png?1642580392", + polkadot: + "https://assets.coingecko.com/coins/images/12171/small/polkadot.png?1639712644", + "binance-bitcoin": + "https://assets.coingecko.com/coins/images/14108/small/Binance-bitcoin.png?1617332330", + shirtum: + "https://assets.coingecko.com/coins/images/16955/small/4fWlpC0.png?1625794164", + "planet-finance": + "https://assets.coingecko.com/coins/images/15710/small/aqua-icon.png?1621583770", + "musk-metaverse": + "https://assets.coingecko.com/coins/images/21822/small/Logo-Symbol-kh-ng-n-n.png?1640075758", + "oly-sport": + "https://assets.coingecko.com/coins/images/19930/small/oly_sport.PNG?1636323685", + "wrapped-avax": + "https://assets.coingecko.com/coins/images/15075/small/wrapped-avax.png?1629873618", + safemoon: + "https://assets.coingecko.com/coins/images/14362/small/174x174-white.png?1617174846", + hashpanda: + "https://assets.coingecko.com/coins/images/15903/small/logo_-_2021-05-31T060013.983.png?1622412025", + benqi: + "https://assets.coingecko.com/coins/images/16362/small/GergDDN3_400x400.jpg?1644984441", + "vent-finance": + "https://assets.coingecko.com/coins/images/17925/small/Artboard_29.png?1629804982", + gemguardian: + "https://assets.coingecko.com/coins/images/18614/small/gemg.PNG?1632697389", + nuls: "https://assets.coingecko.com/coins/images/1053/small/Nuls.png?1556868153", + openocean: + "https://assets.coingecko.com/coins/images/17014/small/ooe_log.png?1626074195", + synchrony: + "https://assets.coingecko.com/coins/images/19308/small/SYNCHRONY-LOGO.png?1634973091", + biswap: + "https://assets.coingecko.com/coins/images/16845/small/biswap.png?1625388985", + iotex: + "https://assets.coingecko.com/coins/images/3334/small/iotex-logo.png?1547037941", + "dogemon-go": + "https://assets.coingecko.com/coins/images/17480/small/dogemongo.PNG?1627950869", + nothing: + "https://assets.coingecko.com/coins/images/16090/small/Gecko-200x200.png?1624544349", + coin98: + "https://assets.coingecko.com/coins/images/17117/small/logo.png?1626412904", + "numbers-protocol": + "https://assets.coingecko.com/coins/images/20495/small/5J3RAUO2_400x400.jpg?1637131666", + maticverse: + "https://assets.coingecko.com/coins/images/18403/small/A0782-F05-535-C-45-C8-BE4-F-FEBB4-B8-B5933.jpg?1631792934", + dogecoin: + "https://assets.coingecko.com/coins/images/5/small/dogecoin.png?1547792256", + wbnb: "https://assets.coingecko.com/coins/images/12591/small/binance-coin-logo.png?1600947313", + idefiyieldprotocol: + "https://assets.coingecko.com/coins/images/21976/small/i-DYP-Logo-1.png?1640570294", + catzcoin: + "https://assets.coingecko.com/coins/images/15519/small/MX0hFr7.jpeg?1621118815", + "lucky-lion": + "https://assets.coingecko.com/coins/images/18712/small/lucky-token-200px.png?1633079262", + infinitup: + "https://assets.coingecko.com/coins/images/18890/small/fc_qo2M7_400x400.jpg?1633749805", + "baby-doge-coin": + "https://assets.coingecko.com/coins/images/16125/small/Baby_Doge.png?1623044048", + "safuyield-protocol": + "https://assets.coingecko.com/coins/images/17021/small/safuyield.png?1626098281", + "biconomy-exchange-token": + "https://assets.coingecko.com/coins/images/18198/small/mGky0OOh_400x400.jpg?1630965301", + "green-shiba-inu": + "https://assets.coingecko.com/coins/images/15649/small/inu-logo-new-200x200.png?1625578449", + "beefy-finance": + "https://assets.coingecko.com/coins/images/12704/small/token.png?1601876182", + "orion-protocol": + "https://assets.coingecko.com/coins/images/11841/small/orion_logo.png?1594943318", + catecoin: + "https://assets.coingecko.com/coins/images/15364/small/logo.png?1620647627", + rougecoin: + "https://assets.coingecko.com/coins/images/14621/small/rougecoin.png?1617265377", + "token-pocket": + "https://assets.coingecko.com/coins/images/7603/small/_E6sbg1g_400x400.jpg?1548828066", + starlaunch: + "https://assets.coingecko.com/coins/images/20109/small/OP3eksDQ_400x400.png?1636513478", + ontology: + "https://assets.coingecko.com/coins/images/3447/small/ONT.png?1583481820", + chi: "https://assets.coingecko.com/coins/images/20130/small/sIuRXww.png?1636528063", + wmatic: + "https://assets.coingecko.com/coins/images/14073/small/matic.png?1628852392", + "aave-polygon-usdc": + "https://assets.coingecko.com/coins/images/17249/small/amUSDC_2x.png?1626941306", + "data-economy-index": + "https://assets.coingecko.com/coins/images/18500/small/data_32.png?1632209427", + ispolink: + "https://assets.coingecko.com/coins/images/15283/small/isolink.PNG?1620352267", + celo: "https://assets.coingecko.com/coins/images/11090/small/icon-celo-CELO-color-500.png?1592293590", + "saitama-inu": + "https://assets.coingecko.com/coins/images/16353/small/Capture.PNG?1632126703", + "true-usd": + "https://assets.coingecko.com/coins/images/3449/small/tusd.png?1618395665", + "eagonswap-token": + "https://assets.coingecko.com/coins/images/20431/small/IMG-20210912-WA0003.jpg?1637035180", + easyfi: + "https://assets.coingecko.com/coins/images/12742/small/Logo_Icon.png?1624471467", + streamr: + "https://assets.coingecko.com/coins/images/17869/small/DATA_new_symbol_3x.png?1629692324", + "internet-node-token": + "https://assets.coingecko.com/coins/images/2519/small/int-logo-red-transparent_200x200.png?1617251612", + "0xmonero": + "https://assets.coingecko.com/coins/images/11035/small/0xmnr.PNG?1587357680", + one: "https://assets.coingecko.com/coins/images/4960/small/Screenshot_39.png?1561103318", + "gaia-everworld": + "https://assets.coingecko.com/coins/images/19629/small/gaia_icon_new.png?1637559277", + quick: + "https://assets.coingecko.com/coins/images/13970/small/1_pOU6pBMEmiL-ZJVb0CYRjQ.png?1613386659", + "tixl-new": + "https://assets.coingecko.com/coins/images/12432/small/Tixl-Logo-200-transparent.png?1610248504", + "hakka-finance": + "https://assets.coingecko.com/coins/images/12163/small/Hakka-icon.png?1597746776", + "aurora-dao": + "https://assets.coingecko.com/coins/images/2565/small/logomark-purple-286x286.png?1638362736", + mimatic: + "https://assets.coingecko.com/coins/images/15264/small/mimatic-red.png?1620281018", + sifchain: + "https://assets.coingecko.com/coins/images/14044/small/EROWAN.png?1614656300", + "polygon-ecosystem-index": + "https://assets.coingecko.com/coins/images/19270/small/amun-peco.png?1634868167", + "iron-titanium-token": + "https://assets.coingecko.com/coins/images/16031/small/titan.png?1636080284", + boozedoge: + "https://assets.coingecko.com/coins/images/18852/small/Booze-Logo-CMC.png?1633592459", + banano: + "https://assets.coingecko.com/coins/images/6226/small/banano-transparent.png?1619589798", + tryhards: + "https://assets.coingecko.com/coins/images/18624/small/Q22nU_z4_400x400.jpg?1632702444", + "dragons-quick": + "https://assets.coingecko.com/coins/images/15185/small/quickswap.png?1620044811", + "wrapped-memory": + "https://assets.coingecko.com/coins/images/22392/small/wmemo.png?1641792100", + joe: "https://assets.coingecko.com/coins/images/17569/small/joe_200x200.png?1628497750", + livepeer: + "https://assets.coingecko.com/coins/images/7137/small/logo-circle-green.png?1619593365", + "celer-network": + "https://assets.coingecko.com/coins/images/4379/small/Celr.png?1554705437", +}; diff --git a/bridge_ui/src/utils/consts.ts b/bridge_ui/src/utils/consts.ts index 12c852d2..5eebb2c1 100644 --- a/bridge_ui/src/utils/consts.ts +++ b/bridge_ui/src/utils/consts.ts @@ -497,6 +497,8 @@ export const COVALENT_GET_TOKENS_URL = ( nft ? "&nft=true" : "" }${noNftMetadata ? "&no-nft-fetch=true" : ""}`; }; +export const TVL_URL = + "https://europe-west3-wormhole-315720.cloudfunctions.net/mainnet-notionaltvl"; export const TERRA_SWAPRATE_URL = "https://fcd.terra.dev/v1/market/swaprate/uusd"; @@ -813,6 +815,10 @@ export const VAA_EMITTER_ADDRESSES = [ `${CHAIN_ID_BSC}:0000000000000000000000005a58505a96d1dbf8df91cb21b54419fc36e93fde`, //bsc nft `${CHAIN_ID_POLYGON}:0000000000000000000000005a58505a96d1dbf8df91cb21b54419fc36e93fde`, //Polygon `${CHAIN_ID_POLYGON}:00000000000000000000000090bbd86a6fe93d3bc3ed6335935447e75fab7fcf`, //Polygon nft + `${CHAIN_ID_AVAX}:0000000000000000000000000e082f06ff657d94310cb8ce8b0d9a04541d8052`, //AVAX + `${CHAIN_ID_AVAX}:000000000000000000000000f7b6737ca9c4e08ae573f75a97b73d7a813f5de5`, //AVAX nft + `${CHAIN_ID_OASIS}:0000000000000000000000005848c791e09901b40a9ef749f2a6735b418d7564`, //OASIS + `${CHAIN_ID_OASIS}:00000000000000000000000004952D522Ff217f40B5Ef3cbF659EcA7b952a6c1`, //OASIS nft ]; export const WORMHOLE_EXPLORER_BASE = "https://wormholenetwork.com/en/explorer";