diff --git a/README.md b/README.md index 5c8a579bed2..a5bc9b39ca3 100644 --- a/README.md +++ b/README.md @@ -312,6 +312,7 @@ These are the ones where a key is necessary: - Whale Alert API: - Ethplorer API: - Cryptopanic API: +- BitQuery API: - Glassnode API: - Coinglass API: @@ -342,6 +343,7 @@ Alternatively, you can also set them to the following environment variables: | [Cryptopanic](https://cryptopanic.com/developers/api/) | GT_API_CRYPTO_PANIC_KEY | | [Glassnode](https://docs.glassnode.com/basic-api/api-key#how-to-get-an-api-key) | GT_API_GLASSNODE_KEY | | [Coinglass](https://coinglass.github.io/API-Reference/#api-key) | GT_API_COINGLASS_KEY | +| [BitQuery](https://bitquery.io/pricing) | GT_API_BITQUERY_KEY | Example: diff --git a/gamestonk_terminal/config_terminal.py b/gamestonk_terminal/config_terminal.py index c942695c9fe..87b23a3eb5c 100644 --- a/gamestonk_terminal/config_terminal.py +++ b/gamestonk_terminal/config_terminal.py @@ -111,3 +111,6 @@ API_ETHPLORER_KEY = os.getenv("GT_API_ETHPLORER_KEY") or "freekey" # https://cryptopanic.com/developers/api/ API_CRYPTO_PANIC_KEY = os.getenv("GT_API_CRYPTO_PANIC_KEY") or "REPLACE_ME" + +# https://bitquery.io/pricing +API_BITQUERY_KEY = os.getenv("GT_API_BITQUERY_KEY") or "REPLACE_ME" diff --git a/gamestonk_terminal/cryptocurrency/data/erc20_coins.json b/gamestonk_terminal/cryptocurrency/data/erc20_coins.json new file mode 100644 index 00000000000..517e87d346f --- /dev/null +++ b/gamestonk_terminal/cryptocurrency/data/erc20_coins.json @@ -0,0 +1,5058 @@ +[ + { + "baseCurrency": { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "symbol": "WETH", + "name": "Wrapped Ether" + }, + "count": 309473 + }, + { + "baseCurrency": { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "symbol": "USDC", + "name": "USD//C" + }, + "count": 188320 + }, + { + "baseCurrency": { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "symbol": "USDT", + "name": "Tether USD" + }, + "count": 88082 + }, + { + "baseCurrency": { + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "symbol": "DAI", + "name": "Dai Stablecoin" + }, + "count": 53210 + }, + { + "baseCurrency": { + "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "symbol": "WBTC", + "name": "Wrapped BTC" + }, + "count": 37920 + }, + { + "baseCurrency": { + "address": "0x956f47f50a910163d8bf957cf5846d573e7f87ca", + "symbol": "FEI", + "name": "Fei USD" + }, + "count": 10731 + }, + { + "baseCurrency": { + "address": "0x57ab1ec28d129707052df4df418d58a2d46d5f51", + "symbol": "sUSD", + "name": "Synth sUSD" + }, + "count": 6528 + }, + { + "baseCurrency": { + "address": "0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce", + "symbol": "SHIB", + "name": "SHIBA INU" + }, + "count": 5281 + }, + { + "baseCurrency": { + "address": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", + "symbol": "SUSHI", + "name": "SushiToken" + }, + "count": 4919 + }, + { + "baseCurrency": { + "address": "-", + "symbol": "ETH", + "name": "Ether" + }, + "count": 3684 + }, + { + "baseCurrency": { + "address": "0x383518188c0c6d7730d91b2c03a03c837814a899", + "symbol": "OHM", + "name": "Olympus" + }, + "count": 3609 + }, + { + "baseCurrency": { + "address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "symbol": "UNI", + "name": "Uniswap" + }, + "count": 2943 + }, + { + "baseCurrency": { + "address": "0x514910771af9ca656af840dff83e8264ecf986ca", + "symbol": "LINK", + "name": "ChainLink Token" + }, + "count": 2813 + }, + { + "baseCurrency": { + "address": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", + "symbol": "AAVE", + "name": "Aave Token" + }, + "count": 2487 + }, + { + "baseCurrency": { + "address": "0xeb4c2781e4eba804ce9a9803c67d0893436bb27d", + "symbol": "renBTC", + "name": "renBTC" + }, + "count": 2204 + }, + { + "baseCurrency": { + "address": "0x0000000000085d4780b73119b644ae5ecd22b376", + "symbol": "TUSD", + "name": "TrueUSD" + }, + "count": 1853 + }, + { + "baseCurrency": { + "address": "-", + "symbol": "-", + "name": "-" + }, + "count": 1722 + }, + { + "baseCurrency": { + "address": "0x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb", + "symbol": "sETH", + "name": "Synth sETH" + }, + "count": 1713 + }, + { + "baseCurrency": { + "address": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", + "symbol": "YFI", + "name": "yearn.finance" + }, + "count": 1698 + }, + { + "baseCurrency": { + "address": "0x3212b29e33587a00fb1c83346f5dbfa69a458923", + "symbol": "imBTC", + "name": "The Tokenized Bitcoin" + }, + "count": 1439 + }, + { + "baseCurrency": { + "address": "0xdbdb4d16eda451d0503b854cf79d55697f90c8df", + "symbol": "ALCX", + "name": "Alchemix" + }, + "count": 1399 + }, + { + "baseCurrency": { + "address": "0xc7283b66eb1eb5fb86327f08e1b5816b0720212b", + "symbol": "TRIBE", + "name": "Tribe" + }, + "count": 1294 + }, + { + "baseCurrency": { + "address": "0x2b591e99afe9f32eaa6214f7b7629768c40eeb39", + "symbol": "HEX", + "name": "HEX" + }, + "count": 1270 + }, + { + "baseCurrency": { + "address": "0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c", + "symbol": "BNT", + "name": "Bancor Network Token" + }, + "count": 1157 + }, + { + "baseCurrency": { + "address": "0x090185f2135308bad17527004364ebcc2d37e5f6", + "symbol": "SPELL", + "name": "Spell Token" + }, + "count": 1053 + }, + { + "baseCurrency": { + "address": "0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6", + "symbol": "sBTC", + "name": "Synth sBTC" + }, + "count": 1041 + }, + { + "baseCurrency": { + "address": "0x4fabb145d64652a948d72533023f6e7a623c7c53", + "symbol": "BUSD", + "name": "Binance USD" + }, + "count": 1036 + }, + { + "baseCurrency": { + "address": "0xa47c8bf37f92abed4a126bda807a7b7498661acd", + "symbol": "UST", + "name": "Wrapped UST Token" + }, + "count": 1034 + }, + { + "baseCurrency": { + "address": "0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b", + "symbol": "CVX", + "name": "Convex Token" + }, + "count": 1018 + }, + { + "baseCurrency": { + "address": "0x7c3e3eae4d893d11c61e74d5187c962ba5744a3b", + "symbol": "KOKO", + "name": "Kokoswap Token" + }, + "count": 1000 + }, + { + "baseCurrency": { + "address": "0x853d955acef822db058eb8505911ed77f175b99e", + "symbol": "FRAX", + "name": "Frax" + }, + "count": 962 + }, + { + "baseCurrency": { + "address": "0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd", + "symbol": "ETH2x-FLI", + "name": "ETH 2x Flexible Leverage Index" + }, + "count": 947 + }, + { + "baseCurrency": { + "address": "0x5f98805a4e8be255a32880fdec7f6728c6568ba0", + "symbol": "LUSD", + "name": "LUSD Stablecoin" + }, + "count": 742 + }, + { + "baseCurrency": { + "address": "0x761d38e5ddf6ccf6cf7c55759d5210750b5d60f3", + "symbol": "ELON", + "name": "Dogelon" + }, + "count": 731 + }, + { + "baseCurrency": { + "address": "0x27c70cd1946795b66be9d954418546998b546634", + "symbol": "LEASH", + "name": "DOGE KILLER" + }, + "count": 670 + }, + { + "baseCurrency": { + "address": "0x03ab458634910aad20ef5f1c8ee96f1d6ac54919", + "symbol": "RAI", + "name": "Rai Reflex Index" + }, + "count": 666 + }, + { + "baseCurrency": { + "address": "0x949d48eca67b17269629c7194f4b727d4ef9e5d6", + "symbol": "MC", + "name": "Merit Circle" + }, + "count": 590 + }, + { + "baseCurrency": { + "address": "0x1559fa1b8f28238fd5d76d9f434ad86fd20d1559", + "symbol": "EDEN", + "name": "Eden" + }, + "count": 581 + }, + { + "baseCurrency": { + "address": "0x92d6c1e31e14520e676a687f0a93788b716beff5", + "symbol": "DYDX", + "name": "dYdX" + }, + "count": 574 + }, + { + "baseCurrency": { + "address": "0x111111111117dc0aa78b770fa6a738034120c302", + "symbol": "1INCH", + "name": "1INCH Token" + }, + "count": 574 + }, + { + "baseCurrency": { + "address": "0xdb25f211ab05b1c97d595516f45794528a807ad8", + "symbol": "EURS", + "name": "STASIS EURS Token" + }, + "count": 573 + }, + { + "baseCurrency": { + "address": "0x6123b0049f904d730db3c36a31167d9d4121fa6b", + "symbol": "RBN", + "name": "Ribbon" + }, + "count": 546 + }, + { + "baseCurrency": { + "address": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", + "symbol": "MKR", + "name": "Maker" + }, + "count": 499 + }, + { + "baseCurrency": { + "address": "0xc18360217d8f7ab5e7c516566761ea12ce7f9d72", + "symbol": "ENS", + "name": "Ethereum Name Service" + }, + "count": 453 + }, + { + "baseCurrency": { + "address": "0x1a4b46696b2bb4794eb3d4c26f1c55f9170fa4c5", + "symbol": "BIT", + "name": "BitDAO" + }, + "count": 448 + }, + { + "baseCurrency": { + "address": "0x767fe9edc9e0df98e07454847909b5e959d7ca0e", + "symbol": "ILV", + "name": "Illuvium" + }, + "count": 441 + }, + { + "baseCurrency": { + "address": "0xd533a949740bb3306d119cc777fa900ba034cd52", + "symbol": "CRV", + "name": "Curve DAO Token" + }, + "count": 437 + }, + { + "baseCurrency": { + "address": "0x9ea3b5b4ec044b70375236a281986106457b20ef", + "symbol": "DELTA", + "name": "DELTA.financial - deep DeFi derivatives" + }, + "count": 400 + }, + { + "baseCurrency": { + "address": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + "symbol": "SNX", + "name": "Synthetix Network Token" + }, + "count": 387 + }, + { + "baseCurrency": { + "address": "0x2e9d63788249371f1dfc918a52f8d799f4a38c94", + "symbol": "TOKE", + "name": "Tokemak" + }, + "count": 385 + }, + { + "baseCurrency": { + "address": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", + "symbol": "MATIC", + "name": "Matic Token" + }, + "count": 381 + }, + { + "baseCurrency": { + "address": "0x21ad647b8f4fe333212e735bfc1f36b4941e6ad2", + "symbol": "SQUID", + "name": "Squid" + }, + "count": 370 + }, + { + "baseCurrency": { + "address": "0x0f2d719407fdbeff09d87557abb7232601fd9f29", + "symbol": "SYN", + "name": "Synapse" + }, + "count": 345 + }, + { + "baseCurrency": { + "address": "0x8b3192f5eebd8579568a2ed41e6feb402f93f73f", + "symbol": "SAITAMA", + "name": "Saitama Inu" + }, + "count": 342 + }, + { + "baseCurrency": { + "address": "0xc00e94cb662c3520282e6f5717214004a7f26888", + "symbol": "COMP", + "name": "Compound" + }, + "count": 335 + }, + { + "baseCurrency": { + "address": "0x32353a6c91143bfd6c7d363b546e62a9a2489a20", + "symbol": "AGLD", + "name": "Adventure Gold" + }, + "count": 332 + }, + { + "baseCurrency": { + "address": "0x4c2e59d098df7b6cbae0848d66de2f8a4889b9c3", + "symbol": "FODL", + "name": "Fodl" + }, + "count": 325 + }, + { + "baseCurrency": { + "address": "0xc581b735a1688071a1746c968e0798d642ede491", + "symbol": "EURT", + "name": "Euro Tether" + }, + "count": 324 + }, + { + "baseCurrency": { + "address": "0x9813037ee2218799597d83d4a5b6f3b6778218d9", + "symbol": "BONE", + "name": "BONE SHIBASWAP" + }, + "count": 320 + }, + { + "baseCurrency": { + "address": "0xbaac2b4491727d78d2b78815144570b9f2fe8899", + "symbol": "DOG", + "name": "The Doge NFT" + }, + "count": 313 + }, + { + "baseCurrency": { + "address": "0x3845badade8e6dff049820680d1f14bd3903a5d0", + "symbol": "SAND", + "name": "SAND" + }, + "count": 310 + }, + { + "baseCurrency": { + "address": "0xd46ba6d942050d489dbd938a2c909a5d5039a161", + "symbol": "AMPL", + "name": "Ampleforth" + }, + "count": 295 + }, + { + "baseCurrency": { + "address": "0xb5fe099475d3030dde498c3bb6f3854f762a48ad", + "symbol": "FNK", + "name": "Finiko" + }, + "count": 292 + }, + { + "baseCurrency": { + "address": "0x8e870d67f660d95d5be530380d0ec0bd388289e1", + "symbol": "PAX", + "name": "Paxos Token" + }, + "count": 287 + }, + { + "baseCurrency": { + "address": "0x3449fc1cd036255ba1eb19d65ff4ba2b8903a69a", + "symbol": "BAC", + "name": "BAC" + }, + "count": 257 + }, + { + "baseCurrency": { + "address": "0xf3dcbc6d72a4e1892f7917b7c43b74131df8480e", + "symbol": "BDP", + "name": "BDPToken" + }, + "count": 256 + }, + { + "baseCurrency": { + "address": "0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b", + "symbol": "DPI", + "name": "DefiPulse Index" + }, + "count": 255 + }, + { + "baseCurrency": { + "address": "0x368b3a58b5f49392e5c9e4c998cb0bb966752e51", + "symbol": "MIC", + "name": "MIC" + }, + "count": 255 + }, + { + "baseCurrency": { + "address": "0x4e15361fd6b4bb609fa63c81a2be19d873717870", + "symbol": "FTM", + "name": "Fantom Token" + }, + "count": 254 + }, + { + "baseCurrency": { + "address": "0xf65b5c5104c4fafd4b709d9d60a185eae063276c", + "symbol": "TRU", + "name": "Truebit" + }, + "count": 246 + }, + { + "baseCurrency": { + "address": "0x3472a5a71965499acd81997a54bba8d852c6e53d", + "symbol": "BADGER", + "name": "Badger" + }, + "count": 242 + }, + { + "baseCurrency": { + "address": "0xba100000625a3754423978a60c9317c58a424e3d", + "symbol": "BAL", + "name": "Balancer" + }, + "count": 241 + }, + { + "baseCurrency": { + "address": "0x0316eb71485b0ab14103307bf65a021042c6d380", + "symbol": "HBTC", + "name": "Huobi BTC" + }, + "count": 234 + }, + { + "baseCurrency": { + "address": "0xbb0e17ef65f82ab018d8edd776e8dd940327b28b", + "symbol": "AXS", + "name": "Axie Infinity Shard" + }, + "count": 230 + }, + { + "baseCurrency": { + "address": "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0", + "symbol": "FXS", + "name": "Frax Share" + }, + "count": 221 + }, + { + "baseCurrency": { + "address": "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd", + "symbol": "LRC", + "name": "LoopringCoin V2" + }, + "count": 208 + }, + { + "baseCurrency": { + "address": "0x60ef10edff6d600cd91caeca04caed2a2e605fe5", + "symbol": "MOCHI", + "name": "Mochi Inu" + }, + "count": 207 + }, + { + "baseCurrency": { + "address": "0x66a0f676479cee1d7373f3dc2e2952778bff5bd6", + "symbol": "WISE", + "name": "Wise Token" + }, + "count": 195 + }, + { + "baseCurrency": { + "address": "0x249e38ea4102d0cf8264d3701f1a0e39c4f2dc3b", + "symbol": "UFO", + "name": "THE TRUTH" + }, + "count": 184 + }, + { + "baseCurrency": { + "address": "0x5218e472cfcfe0b64a064f055b43b4cdc9efd3a6", + "symbol": "eRSDL", + "name": "UnFederalReserveToken" + }, + "count": 177 + }, + { + "baseCurrency": { + "address": "0x36f3fd68e7325a35eb768f1aedaae9ea0689d723", + "symbol": "ESD", + "name": "Empty Set Dollar" + }, + "count": 176 + }, + { + "baseCurrency": { + "address": "0xbbc455cb4f1b9e4bfc4b73970d360c8f032efee6", + "symbol": "sLINK", + "name": "Synth sLINK" + }, + "count": 174 + }, + { + "baseCurrency": { + "address": "0xd291e7a03283640fdc51b121ac401383a46cc623", + "symbol": "RGT", + "name": "Rari Governance Token" + }, + "count": 165 + }, + { + "baseCurrency": { + "address": "0x8e6cd950ad6ba651f6dd608dc70e5886b1aa6b24", + "symbol": "STARL", + "name": "StarLink" + }, + "count": 163 + }, + { + "baseCurrency": { + "address": "0x961c8c0b1aad0c0b10a51fef6a867e3091bcef17", + "symbol": "DYP", + "name": "DeFiYieldProtocol" + }, + "count": 152 + }, + { + "baseCurrency": { + "address": "0xdec41db0c33f3f6f3cb615449c311ba22d418a8d", + "symbol": "LOBI", + "name": "Lobi" + }, + "count": 148 + }, + { + "baseCurrency": { + "address": "0xf8e9f10c22840b613cda05a0c5fdb59a4d6cd7ef", + "symbol": "DOE", + "name": "Dogs Of Elon" + }, + "count": 144 + }, + { + "baseCurrency": { + "address": "0xbc396689893d065f41bc2c6ecbee5e0085233447", + "symbol": "PERP", + "name": "Perpetual" + }, + "count": 138 + }, + { + "baseCurrency": { + "address": "0x24e89bdf2f65326b94e36978a7edeac63623dafa", + "symbol": "TKING", + "name": "Tiger King" + }, + "count": 136 + }, + { + "baseCurrency": { + "address": "0x7a58c0be72be218b41c608b7fe7c5bb630736c71", + "symbol": "PEOPLE", + "name": "ConstitutionDAO" + }, + "count": 132 + }, + { + "baseCurrency": { + "address": "0x3301ee63fb29f863f2333bd4466acb46cd8323e6", + "symbol": "AKITA", + "name": "Akita Inu" + }, + "count": 131 + }, + { + "baseCurrency": { + "address": "0x0391d2021f89dc339f60fff84546ea23e337750f", + "symbol": "BOND", + "name": "BarnBridge Governance Token" + }, + "count": 131 + }, + { + "baseCurrency": { + "address": "0x35a532d376ffd9a705d0bb319532837337a398e7", + "symbol": "WDOGE", + "name": "Wrapped DogeCoin" + }, + "count": 126 + }, + { + "baseCurrency": { + "address": "0x1b40183efb4dd766f11bda7a7c3ad8982e998421", + "symbol": "VSP", + "name": "VesperToken" + }, + "count": 123 + }, + { + "baseCurrency": { + "address": "0x6b4c7a5e3f0b99fcd83e9c089bddd6c7fce5c611", + "symbol": "MM", + "name": "Million" + }, + "count": 120 + }, + { + "baseCurrency": { + "address": "0xf16e81dce15b08f326220742020379b855b87df9", + "symbol": "ICE", + "name": "IceToken" + }, + "count": 119 + }, + { + "baseCurrency": { + "address": "0x5a98fcbea516cf06857215779fd812ca3bef1b32", + "symbol": "LDO", + "name": "Lido DAO Token" + }, + "count": 114 + }, + { + "baseCurrency": { + "address": "0xba5bde662c17e2adff1075610382b9b691296350", + "symbol": "RARE", + "name": "SuperRare" + }, + "count": 113 + }, + { + "baseCurrency": { + "address": "0x1122b6a0e00dce0563082b6e2953f3a943855c1f", + "symbol": "CENNZ", + "name": "Centrality Token" + }, + "count": 111 + }, + { + "baseCurrency": { + "address": "0x8798249c2e607446efb7ad49ec89dd1865ff4272", + "symbol": "xSUSHI", + "name": "SushiBar" + }, + "count": 109 + }, + { + "baseCurrency": { + "address": "0x0309c98b1bffa350bcb3f9fb9780970ca32a5060", + "symbol": "BDI", + "name": "BasketDAO DeFi Index" + }, + "count": 108 + }, + { + "baseCurrency": { + "address": "0xbc7250c8c3eca1dfc1728620af835fca489bfdf3", + "symbol": "GM", + "name": "GM" + }, + "count": 106 + }, + { + "baseCurrency": { + "address": "0x3d6f0dea3ac3c607b3998e6ce14b6350721752d9", + "symbol": "CARDS", + "name": "CARD.STARTER" + }, + "count": 105 + }, + { + "baseCurrency": { + "address": "0xbd2f0cd039e0bfcf88901c98c0bfac5ab27566e3", + "symbol": "DSD", + "name": "Dynamic Set Dollar" + }, + "count": 104 + }, + { + "baseCurrency": { + "address": "0xa0246c9032bc3a600820415ae600c6388619a14d", + "symbol": "FARM", + "name": "FARM Reward Token" + }, + "count": 104 + }, + { + "baseCurrency": { + "address": "0x09a3ecafa817268f77be1283176b946c4ff2e608", + "symbol": "MIR", + "name": "Wrapped MIR Token" + }, + "count": 104 + }, + { + "baseCurrency": { + "address": "0xa2b4c0af19cc16a6cfacce81f192b024d625817d", + "symbol": "KISHU", + "name": "Kishu Inu" + }, + "count": 103 + }, + { + "baseCurrency": { + "address": "0xff20817765cb7f73d4bde2e66e067e58d11095c2", + "symbol": "AMP", + "name": "Amp" + }, + "count": 96 + }, + { + "baseCurrency": { + "address": "0xb4efd85c19999d84251304bda99e90b92300bd93", + "symbol": "RPL", + "name": "Rocket Pool" + }, + "count": 93 + }, + { + "baseCurrency": { + "address": "0x43f11c02439e2736800433b4594994bd43cd066d", + "symbol": "FLOKI", + "name": "FLOKI" + }, + "count": 93 + }, + { + "baseCurrency": { + "address": "0x798d1be841a82a273720ce31c822c61a67a601c3", + "symbol": "DIGG", + "name": "Digg" + }, + "count": 92 + }, + { + "baseCurrency": { + "address": "0x4b4d2e899658fb59b1d518b68fe836b100ee8958", + "symbol": "MIS", + "name": "MIS" + }, + "count": 88 + }, + { + "baseCurrency": { + "address": "0xdb5c3c46e28b53a39c255aa39a411dd64e5fed9c", + "symbol": "NCR", + "name": "Neos Credits" + }, + "count": 85 + }, + { + "baseCurrency": { + "address": "0x25f8087ead173b73d6e8b84329989a8eea16cf73", + "symbol": "YGG", + "name": "Yield Guild Games Token" + }, + "count": 84 + }, + { + "baseCurrency": { + "address": "0x62b9c7356a2dc64a1969e19c23e4f579f9810aa7", + "symbol": "cvxCRV", + "name": "Convex CRV" + }, + "count": 78 + }, + { + "baseCurrency": { + "address": "0xcbfef8fdd706cde6f208460f2bf39aa9c785f05d", + "symbol": "KINE", + "name": "Kine Governance Token" + }, + "count": 75 + }, + { + "baseCurrency": { + "address": "0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d", + "symbol": "CEL", + "name": "Celsius" + }, + "count": 75 + }, + { + "baseCurrency": { + "address": "0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c", + "symbol": "ENJ", + "name": "Enjin Coin" + }, + "count": 74 + }, + { + "baseCurrency": { + "address": "0x0000000000095413afc295d19edeb1ad7b71c952", + "symbol": "LON", + "name": "Tokenlon" + }, + "count": 69 + }, + { + "baseCurrency": { + "address": "0x0f5d2fb29fb7d3cfee444a200298f468908cc942", + "symbol": "MANA", + "name": "Decentraland MANA" + }, + "count": 68 + }, + { + "baseCurrency": { + "address": "0x6810e776880c02933d47db1b9fc05908e5386b96", + "symbol": "GNO", + "name": "Gnosis Token" + }, + "count": 66 + }, + { + "baseCurrency": { + "address": "0x4fe83213d56308330ec302a8bd641f1d0113a4cc", + "symbol": "NU", + "name": "NuCypher" + }, + "count": 65 + }, + { + "baseCurrency": { + "address": "0xb78b3320493a4efaa1028130c5ba26f0b6085ef8", + "symbol": "DRC", + "name": "Dracula Token" + }, + "count": 64 + }, + { + "baseCurrency": { + "address": "0xba7970f10d9f0531941dced1dda7ef3016b24e5b", + "symbol": "BGLD", + "name": "Based Gold" + }, + "count": 64 + }, + { + "baseCurrency": { + "address": "0x29a5c1db7321c5c9eae57f9366ee8eef00ca11fb", + "symbol": "SHKOOBY", + "name": "SHKOOBY INU" + }, + "count": 62 + }, + { + "baseCurrency": { + "address": "0xdfdb7f72c1f195c5951a234e8db9806eb0635346", + "symbol": "NFD", + "name": "Feisty Doge NFT" + }, + "count": 60 + }, + { + "baseCurrency": { + "address": "0xa1faa113cbe53436df28ff0aee54275c13b40975", + "symbol": "ALPHA", + "name": "AlphaToken" + }, + "count": 57 + }, + { + "baseCurrency": { + "address": "0xa7ed29b253d8b4e3109ce07c80fc570f81b63696", + "symbol": "BAS", + "name": "BAS" + }, + "count": 55 + }, + { + "baseCurrency": { + "address": "0x429881672b9ae42b8eba0e26cd9c73711b891ca5", + "symbol": "PICKLE", + "name": "PickleToken" + }, + "count": 55 + }, + { + "baseCurrency": { + "address": "0xf1f955016ecbcd7321c7266bccfb96c68ea5e49b", + "symbol": "RLY", + "name": "Rally" + }, + "count": 55 + }, + { + "baseCurrency": { + "address": "0x96e61422b6a9ba0e068b6c5add4ffabc6a4aae27", + "symbol": "ibEUR", + "name": "Iron Bank EUR" + }, + "count": 54 + }, + { + "baseCurrency": { + "address": "0x87d73e916d7057945c9bcd8cdd94e42a6f47f776", + "symbol": "NFTX", + "name": "NFTX" + }, + "count": 53 + }, + { + "baseCurrency": { + "address": "0x389999216860ab8e0175387a0c90e5c52522c945", + "symbol": "FEG", + "name": "FEGtoken" + }, + "count": 53 + }, + { + "baseCurrency": { + "address": "0x15d4c048f83bd7e37d49ea4c83a07267ec4203da", + "symbol": "GALA", + "name": "Gala" + }, + "count": 53 + }, + { + "baseCurrency": { + "address": "0x4691937a7508860f876c9c0a2a617e7d9e945d4b", + "symbol": "WOO", + "name": "Wootrade Network" + }, + "count": 51 + }, + { + "baseCurrency": { + "address": "0x3d7e683fc9c86b4d653c9e47ca12517440fad14e", + "symbol": "welp", + "name": "You don't blacklist delta.financial" + }, + "count": 50 + }, + { + "baseCurrency": { + "address": "0x05934eba98486693aaec2d00b0e9ce918e37dc3f", + "symbol": "SCAMMY", + "name": "You don't blacklist delta.financial" + }, + "count": 50 + }, + { + "baseCurrency": { + "address": "0x7296368fe9bcb25d3ecc19af13655b907818cc09", + "symbol": "generalize fix for rebass tokens", + "name": "You don't blacklist delta.financial" + }, + "count": 50 + }, + { + "baseCurrency": { + "address": "0x31c8eacbffdd875c74b94b077895bd78cf1e64a3", + "symbol": "RAD", + "name": "Radicle" + }, + "count": 50 + }, + { + "baseCurrency": { + "address": "0xfae9c647ad7d89e738aba720acf09af93dc535f7", + "symbol": "Ian Laphan fan token", + "name": "You don't blacklist delta.financial" + }, + "count": 50 + }, + { + "baseCurrency": { + "address": "0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44", + "symbol": "KP3R", + "name": "Keep3rV1" + }, + "count": 49 + }, + { + "baseCurrency": { + "address": "0xe53ec727dbdeb9e2d5456c3be40cff031ab40a55", + "symbol": "SUPER", + "name": "SuperFarm" + }, + "count": 49 + }, + { + "baseCurrency": { + "address": "0xfa5047c9c78b8877af97bdcb85db743fd7313d4a", + "symbol": "ROOK", + "name": "ROOK" + }, + "count": 48 + }, + { + "baseCurrency": { + "address": "0x6243d8cea23066d098a15582d81a598b4e8391f4", + "symbol": "FLX", + "name": "Flex Ungovernance Token" + }, + "count": 48 + }, + { + "baseCurrency": { + "address": "0x408e41876cccdc0f92210600ef50372656052a38", + "symbol": "REN", + "name": "Republic Token" + }, + "count": 47 + }, + { + "baseCurrency": { + "address": "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3", + "symbol": "MIM", + "name": "Magic Internet Money" + }, + "count": 46 + }, + { + "baseCurrency": { + "address": "0xcafe001067cdef266afb7eb5a286dcfd277f3de5", + "symbol": "PSP", + "name": "ParaSwap" + }, + "count": 45 + }, + { + "baseCurrency": { + "address": "0x83e6f1e41cdd28eaceb20cb649155049fac3d5aa", + "symbol": "POLS", + "name": "PolkastarterToken" + }, + "count": 45 + }, + { + "baseCurrency": { + "address": "0x1a7e4e63778b4f12a199c062f3efdd288afcbce8", + "symbol": "agEUR", + "name": "agEUR" + }, + "count": 45 + }, + { + "baseCurrency": { + "address": "0x24a6a37576377f63f194caa5f518a60f45b42921", + "symbol": "BANK", + "name": "Float Bank" + }, + "count": 45 + }, + { + "baseCurrency": { + "address": "0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206", + "symbol": "NEXO", + "name": "Nexo" + }, + "count": 45 + }, + { + "baseCurrency": { + "address": "0x62359ed7505efc61ff1d56fef82158ccaffa23d7", + "symbol": "CORE", + "name": "cVault.finance" + }, + "count": 44 + }, + { + "baseCurrency": { + "address": "0xfe2e637202056d30016725477c5da089ab0a043a", + "symbol": "sETH2", + "name": "StakeWise Staked ETH2" + }, + "count": 44 + }, + { + "baseCurrency": { + "address": "0xb35ed5c39f371f2cd4bc2edab1f8da314168186a", + "symbol": "FLOOR", + "name": "PUNK Floor" + }, + "count": 44 + }, + { + "baseCurrency": { + "address": "0x3155ba85d5f96b2d030a4966af206230e46849cb", + "symbol": "RUNE", + "name": "THORChain ETH.RUNE" + }, + "count": 43 + }, + { + "baseCurrency": { + "address": "0xf938424f7210f31df2aee3011291b658f872e91e", + "symbol": "VISR", + "name": "VISOR" + }, + "count": 43 + }, + { + "baseCurrency": { + "address": "0x4e352cf164e64adcbad318c3a1e222e9eba4ce42", + "symbol": "MCB", + "name": "MCDEX Token" + }, + "count": 43 + }, + { + "baseCurrency": { + "address": "0xa80f2c8f61c56546001f5fc2eb8d6e4e72c45d4c", + "symbol": "UNQT", + "name": "Unique Utility Token" + }, + "count": 42 + }, + { + "baseCurrency": { + "address": "0xf57e7e7c23978c3caec3c3548e3d615c346e79ff", + "symbol": "IMX", + "name": "Immutable X" + }, + "count": 41 + }, + { + "baseCurrency": { + "address": "0x725c263e32c72ddc3a19bea12c5a0479a81ee688", + "symbol": "BMI", + "name": "Bridge Mutual" + }, + "count": 40 + }, + { + "baseCurrency": { + "address": "0xa8b919680258d369114910511cc87595aec0be6d", + "symbol": "LYXe", + "name": "LUKSO Token" + }, + "count": 40 + }, + { + "baseCurrency": { + "address": "0x990f341946a3fdb507ae7e52d17851b87168017c", + "symbol": "STRONG", + "name": "Strong" + }, + "count": 40 + }, + { + "baseCurrency": { + "address": "0xe6279e1c65dd41b30ba3760dcac3cd8bbb4420d6", + "symbol": "REB", + "name": "Rebased" + }, + "count": 40 + }, + { + "baseCurrency": { + "address": "0xba2184520a1cc49a6159c57e61e1844e085615b6", + "symbol": "HGT", + "name": "HelloGold Token" + }, + "count": 39 + }, + { + "baseCurrency": { + "address": "0x04fa0d235c4abf4bcf4787af4cf447de572ef828", + "symbol": "UMA", + "name": "UMA Voting Token v1" + }, + "count": 39 + }, + { + "baseCurrency": { + "address": "0x48c276e8d03813224bb1e55f953adb6d02fd3e02", + "symbol": "KUMA", + "name": "Kuma Inu" + }, + "count": 39 + }, + { + "baseCurrency": { + "address": "0x9dfad1b7102d46b1b197b90095b5c4e9f5845bba", + "symbol": "BOTTO", + "name": "Botto" + }, + "count": 37 + }, + { + "baseCurrency": { + "address": "0xc4a11aaf6ea915ed7ac194161d2fc9384f15bff2", + "symbol": "WTON", + "name": "Wrapped TON" + }, + "count": 37 + }, + { + "baseCurrency": { + "address": "0xba11d00c5f74255f56a5e366f4f77f5a186d7f55", + "symbol": "BAND", + "name": "BandToken" + }, + "count": 35 + }, + { + "baseCurrency": { + "address": "0x0f51bb10119727a7e5ea3538074fb341f56b09ad", + "symbol": "DAO", + "name": "DAO Maker" + }, + "count": 33 + }, + { + "baseCurrency": { + "address": "0x18aaa7115705e8be94bffebde57af9bfc265b998", + "symbol": "AUDIO", + "name": "Audius" + }, + "count": 33 + }, + { + "baseCurrency": { + "address": "0x40fd72257597aa14c7231a7b1aaa29fce868f677", + "symbol": "XOR", + "name": "Sora Token" + }, + "count": 32 + }, + { + "baseCurrency": { + "address": "0x79c75e2e8720b39e258f41c37cc4f309e0b0ff80", + "symbol": "SOUL", + "name": "Phantasma Stake" + }, + "count": 32 + }, + { + "baseCurrency": { + "address": "0x7a5ce6abd131ea6b148a022cb76fc180ae3315a6", + "symbol": "bALPHA", + "name": "bAlpha" + }, + "count": 32 + }, + { + "baseCurrency": { + "address": "0x77777feddddffc19ff86db637967013e6c6a116c", + "symbol": "TORN", + "name": "TornadoCash" + }, + "count": 32 + }, + { + "baseCurrency": { + "address": "0x3ec8798b81485a254928b70cda1cf0a2bb0b74d7", + "symbol": "GRO", + "name": "Gro DAO Token" + }, + "count": 32 + }, + { + "baseCurrency": { + "address": "0x80fb784b7ed66730e8b1dbd9820afd29931aab03", + "symbol": "LEND", + "name": "EthLend Token" + }, + "count": 32 + }, + { + "baseCurrency": { + "address": "0xbbc2ae13b23d715c30720f079fcd9b4a74093505", + "symbol": "ERN", + "name": "@EthernityChain $ERN Token" + }, + "count": 32 + }, + { + "baseCurrency": { + "address": "0x11e003e9ecc5a2320e8b11098acd550b928b6df2", + "symbol": "XXi", + "name": "Xi Transfer Coin" + }, + "count": 32 + }, + { + "baseCurrency": { + "address": "0xc08512927d12348f6620a698105e1baac6ecd911", + "symbol": "GYEN", + "name": "GMO JPY" + }, + "count": 32 + }, + { + "baseCurrency": { + "address": "0x5f64ab1544d28732f0a24f4713c2c8ec0da089f0", + "symbol": "DEXTF", + "name": "DEXTF Token" + }, + "count": 31 + }, + { + "baseCurrency": { + "address": "0x6f40d4a6237c257fff2db00fa0510deeecd303eb", + "symbol": "INST", + "name": "Instadapp" + }, + "count": 31 + }, + { + "baseCurrency": { + "address": "0x2ba592f78db6436527729929aaf6c908497cb200", + "symbol": "CREAM", + "name": "Cream" + }, + "count": 31 + }, + { + "baseCurrency": { + "address": "0xcfeb09c3c5f0f78ad72166d55f9e6e9a60e96eec", + "symbol": "VEMP", + "name": "vEmpire Gamer Token" + }, + "count": 31 + }, + { + "baseCurrency": { + "address": "0x64b986211c0cc675143f895c437b79c3cadf364a", + "symbol": "GRPFT", + "name": "GRAPEFRUIT" + }, + "count": 30 + }, + { + "baseCurrency": { + "address": "0xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315", + "symbol": "ETH", + "name": "Ether Token" + }, + "count": 29 + }, + { + "baseCurrency": { + "address": "0x6b4d5e9ec2acea23d4110f4803da99e25443c5df", + "symbol": "aKLIMA", + "name": "AlphaKlima" + }, + "count": 28 + }, + { + "baseCurrency": { + "address": "0xc52c326331e9ce41f04484d3b5e5648158028804", + "symbol": "ZCX", + "name": "ZEN Exchange Token" + }, + "count": 28 + }, + { + "baseCurrency": { + "address": "0xc4e15973e6ff2a35cc804c2cf9d2a1b817a8b40f", + "symbol": "ibBTC", + "name": "Interest-Bearing BTC" + }, + "count": 27 + }, + { + "baseCurrency": { + "address": "0x0d438f3b5175bebc262bf23753c1e53d03432bde", + "symbol": "wNXM", + "name": "Wrapped NXM" + }, + "count": 27 + }, + { + "baseCurrency": { + "address": "0x147e3d644d53adadd18a28201b91e2b98aeb7f94", + "symbol": "USE", + "name": "ElenaUSD" + }, + "count": 26 + }, + { + "baseCurrency": { + "address": "0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9", + "symbol": "FTX Token", + "name": "FTT" + }, + "count": 26 + }, + { + "baseCurrency": { + "address": "0x2602278ee1882889b946eb11dc0e810075650983", + "symbol": "VADER", + "name": "Vader" + }, + "count": 26 + }, + { + "baseCurrency": { + "address": "0x47da5456bc2e1ce391b645ce80f2e97192e4976a", + "symbol": "PLUG", + "name": "Pl^g Token" + }, + "count": 25 + }, + { + "baseCurrency": { + "address": "0x37c997b35c619c21323f3518b9357914e8b99525", + "symbol": "PILOT", + "name": "Unipilot" + }, + "count": 25 + }, + { + "baseCurrency": { + "address": "0xae7ab96520de3a18e5e111b5eaab095312d7fe84", + "symbol": "stETH", + "name": "Liquid staked Ether 2.0" + }, + "count": 24 + }, + { + "baseCurrency": { + "address": "0x8355dbe8b0e275abad27eb843f3eaf3fc855e525", + "symbol": "WOOL", + "name": "WOOL" + }, + "count": 24 + }, + { + "baseCurrency": { + "address": "0x85eee30c52b0b379b046fb0f85f4f3dc3009afec", + "symbol": "KEEP", + "name": "KEEP Token" + }, + "count": 23 + }, + { + "baseCurrency": { + "address": "0x6468e79a80c0eab0f9a2b574c8d5bc374af59414", + "symbol": "eXRD", + "name": "E-RADIX" + }, + "count": 23 + }, + { + "baseCurrency": { + "address": "0xf99d58e463a2e07e5692127302c20a191861b4d6", + "symbol": "ANY", + "name": "Anyswap" + }, + "count": 23 + }, + { + "baseCurrency": { + "address": "0xda86006036540822e0cd2861dbd2fd7ff9caa0e8", + "symbol": "TUBE2", + "name": "TUBE2" + }, + "count": 23 + }, + { + "baseCurrency": { + "address": "0x7ae0d42f23c33338de15bfa89c7405c068d9dc0a", + "symbol": "VERSE", + "name": "Shibaverse" + }, + "count": 22 + }, + { + "baseCurrency": { + "address": "0x7ff4169a6b5122b664c51c95727d87750ec07c84", + "symbol": "10SET", + "name": "10Set Token" + }, + "count": 22 + }, + { + "baseCurrency": { + "address": "0x43dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd", + "symbol": "DODO", + "name": "DODO bird" + }, + "count": 22 + }, + { + "baseCurrency": { + "address": "0xbe9375c6a420d2eeb258962efb95551a5b722803", + "symbol": "STMX", + "name": "StormX" + }, + "count": 22 + }, + { + "baseCurrency": { + "address": "0x0ae055097c6d159879521c384f1d2123d1f195e6", + "symbol": "STAKE", + "name": "STAKE" + }, + "count": 21 + }, + { + "baseCurrency": { + "address": "0xc770eefad204b5180df6a14ee197d99d808ee52d", + "symbol": "FOX", + "name": "FOX" + }, + "count": 21 + }, + { + "baseCurrency": { + "address": "0x7a2bc711e19ba6aff6ce8246c546e8c4b4944dfd", + "symbol": "WAXE", + "name": "WAX Economic Token" + }, + "count": 20 + }, + { + "baseCurrency": { + "address": "0xc944e90c64b2c07662a292be6244bdf05cda44a7", + "symbol": "GRT", + "name": "Graph Token" + }, + "count": 20 + }, + { + "baseCurrency": { + "address": "0x9af15d7b8776fa296019979e70a5be53c714a7ec", + "symbol": "EVN", + "name": "Evn Token" + }, + "count": 20 + }, + { + "baseCurrency": { + "address": "0x12bb890508c125661e03b09ec06e404bc9289040", + "symbol": "RACA", + "name": "Radio Caca V2" + }, + "count": 20 + }, + { + "baseCurrency": { + "address": "0x9783b81438c24848f85848f8df31845097341771", + "symbol": "COLLAR", + "name": "DOG COLLAR" + }, + "count": 20 + }, + { + "baseCurrency": { + "address": "0xe6c3502997f97f9bde34cb165fbce191065e068f", + "symbol": "KBTC", + "name": "KBTC" + }, + "count": 20 + }, + { + "baseCurrency": { + "address": "0x70e8de73ce538da2beed35d14187f6959a8eca96", + "symbol": "XSGD", + "name": "XSGD" + }, + "count": 19 + }, + { + "baseCurrency": { + "address": "0xc5bddf9843308380375a611c18b50fb9341f502a", + "symbol": "yveCRV-DAO", + "name": "veCRV-DAO yVault" + }, + "count": 19 + }, + { + "baseCurrency": { + "address": "0xe95a203b1a91a908f9b9ce46459d101078c2c3cb", + "symbol": "aEth", + "name": "aEthereum" + }, + "count": 19 + }, + { + "baseCurrency": { + "address": "0xd2877702675e6ceb975b4a1dff9fb7baf4c91ea9", + "symbol": "LUNA", + "name": "Wrapped LUNA Token" + }, + "count": 19 + }, + { + "baseCurrency": { + "address": "0x269616d549d7e8eaa82dfb17028d0b212d11232a", + "symbol": "PUNK", + "name": "CryptoPunks" + }, + "count": 18 + }, + { + "baseCurrency": { + "address": "0x888888435fde8e7d4c54cab67f206e4199454c60", + "symbol": "DFX", + "name": "DFX Token" + }, + "count": 18 + }, + { + "baseCurrency": { + "address": "0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d", + "symbol": "LQTY", + "name": "LQTY" + }, + "count": 18 + }, + { + "baseCurrency": { + "address": "0x9fa69536d1cda4a04cfb50688294de75b505a9ae", + "symbol": "DERC", + "name": "DeRace Token" + }, + "count": 18 + }, + { + "baseCurrency": { + "address": "0x232fb065d9d24c34708eedbf03724f2e95abe768", + "symbol": "SHEESHA", + "name": "Sheesha Finance" + }, + "count": 18 + }, + { + "baseCurrency": { + "address": "0x249f71f8d9da86c60f485e021b509a206667a079", + "symbol": "SNGJ", + "name": "Singular Japan" + }, + "count": 18 + }, + { + "baseCurrency": { + "address": "0x7bb594b3c757801346801f025699e39e7aaf5a49", + "symbol": "ORB", + "name": "Orb" + }, + "count": 18 + }, + { + "baseCurrency": { + "address": "0x037a54aab062628c9bbae1fdb1583c195585fe41", + "symbol": "LCX", + "name": "LCX" + }, + "count": 18 + }, + { + "baseCurrency": { + "address": "0x793b176a8b4833ea4aabcedfea55f2898bd6b753", + "symbol": "BRAIN", + "name": "BRAIN" + }, + "count": 18 + }, + { + "baseCurrency": { + "address": "0x89472e02e3550fd52971ed89a2682613b2c97199", + "symbol": "RC_WETH_750_DAI_2021_3_31", + "name": "Ruler Protocol rToken" + }, + "count": 17 + }, + { + "baseCurrency": { + "address": "0x2a8e1e676ec238d8a992307b495b45b3feaa5e86", + "symbol": "OUSD", + "name": "Origin Dollar" + }, + "count": 17 + }, + { + "baseCurrency": { + "address": "0xc4c2614e694cf534d407ee49f8e44d125e4681c4", + "symbol": "CHAIN", + "name": "Chain Games" + }, + "count": 17 + }, + { + "baseCurrency": { + "address": "0x8c15ef5b4b21951d50e53e4fbda8298ffad25057", + "symbol": "FX", + "name": "Function X" + }, + "count": 16 + }, + { + "baseCurrency": { + "address": "0x476c5e26a75bd202a9683ffd34359c0cc15be0ff", + "symbol": "SRM", + "name": "Serum" + }, + "count": 16 + }, + { + "baseCurrency": { + "address": "0xe9f84de264e91529af07fa2c746e934397810334", + "symbol": "SAK3", + "name": "Sake" + }, + "count": 16 + }, + { + "baseCurrency": { + "address": "0x1712aad2c773ee04bdc9114b32163c058321cd85", + "symbol": "LIMIT", + "name": "LimitSwap" + }, + "count": 16 + }, + { + "baseCurrency": { + "address": "0x4a220e6096b25eadb88358cb44068a3248254675", + "symbol": "QNT", + "name": "Quant" + }, + "count": 16 + }, + { + "baseCurrency": { + "address": "0x15874d65e649880c2614e7a480cb7c9a55787ff6", + "symbol": "eMax", + "name": "EthereumMax" + }, + "count": 16 + }, + { + "baseCurrency": { + "address": "0x1d350417d9787e000cc1b95d70e9536dcd91f373", + "symbol": "mIAU", + "name": "Wrapped Mirror IAU Token" + }, + "count": 16 + }, + { + "baseCurrency": { + "address": "0xa150db9b1fa65b44799d4dd949d922c0a33ee606", + "symbol": "DRC", + "name": "Digital Reserve Currency" + }, + "count": 16 + }, + { + "baseCurrency": { + "address": "0xe254e0878605a3d8b24d6cf7b4737a8431df1da1", + "symbol": "PLUG", + "name": "Pl^g Token Series A" + }, + "count": 15 + }, + { + "baseCurrency": { + "address": "0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b", + "symbol": "CRO", + "name": "CRO" + }, + "count": 15 + }, + { + "baseCurrency": { + "address": "0x674c6ad92fd080e4004b2312b45f796a192d27a0", + "symbol": "USDN", + "name": "Neutrino USD" + }, + "count": 15 + }, + { + "baseCurrency": { + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "symbol": "HOPR", + "name": "HOPR Token" + }, + "count": 15 + }, + { + "baseCurrency": { + "address": "0x3e5d9d8a63cc8a88748f229999cf59487e90721e", + "symbol": "XMT", + "name": "MetalSwap" + }, + "count": 15 + }, + { + "baseCurrency": { + "address": "0xa0afaa285ce85974c3c881256cb7f225e3a1178a", + "symbol": "wCRES", + "name": "Wrapped CRES" + }, + "count": 15 + }, + { + "baseCurrency": { + "address": "0x6c3f90f043a72fa612cbac8115ee7e52bde6e490", + "symbol": "3Crv", + "name": "Curve.fi DAI/USDC/USDT" + }, + "count": 15 + }, + { + "baseCurrency": { + "address": "0x8d85f8d69451d41dc266c920971b4aac1120257a", + "symbol": "CENNZ", + "name": "Centrality TOKEN" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x2b5ca2f9510cf1e3595ff219f24d75d4244585ea", + "symbol": "EPAY", + "name": "EthereumPay" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x69af81e73a73b40adf4f3d4223cd9b1ece623074", + "symbol": "MASK", + "name": "Mask Network" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x5ca30702d169637e656e7c655d9b9acb7a160e7e", + "symbol": "UFODOGE", + "name": "THE DOGE TRUTH" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x68a118ef45063051eac49c7e647ce5ace48a68a5", + "symbol": "$BASED", + "name": "$BASED" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0xef2e239b21a81719abaabc6239e2e90859b44d9b", + "symbol": "TTX", + "name": "TTX NFT" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x0ada190c81b814548ddc2f6adc4a689ce7c1fe73", + "symbol": "YAXIS", + "name": "yAxis V2" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0xc40af1e4fecfa05ce6bab79dcd8b373d2e436c4e", + "symbol": "HOKK", + "name": "Hokkaidu Inu" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x054d64b73d3d8a21af3d764efd76bcaa774f3bb2", + "symbol": "PPAY", + "name": "Plasma" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x367b072d50ac465ba47ab474c6d381bfc0e45f86", + "symbol": "CAPY", + "name": "Capy" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x80ab141f324c3d6f2b18b030f1c4e95d4d658778", + "symbol": "DEA", + "name": "DEA" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x368df85396be56f1d475e5d10339211a77e13c32", + "symbol": "RC_WBTC_25000_DAI_2021_3_31", + "name": "Ruler Protocol rToken" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x967da4048cd07ab37855c090aaf366e4ce1b9f48", + "symbol": "OCEAN", + "name": "Ocean Token" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x3b62f3820e0b035cc4ad602dece6d796bc325325", + "symbol": "DEUS", + "name": "DEUS" + }, + "count": 14 + }, + { + "baseCurrency": { + "address": "0x0dd1989e4b0e82f154b729ff47f8c9a4f4b2cc1c", + "symbol": "MILF", + "name": "Milf Token" + }, + "count": 13 + }, + { + "baseCurrency": { + "address": "0xa7de087329bfcda5639247f96140f9dabe3deed1", + "symbol": "STA", + "name": "Statera" + }, + "count": 13 + }, + { + "baseCurrency": { + "address": "0x5228a22e72ccc52d415ecfd199f99d0665e7733b", + "symbol": "pBTC", + "name": "pTokens BTC" + }, + "count": 13 + }, + { + "baseCurrency": { + "address": "0x69681f8fde45345c3870bcd5eaf4a05a60e7d227", + "symbol": "ibGBP", + "name": "Iron Bank GBP" + }, + "count": 13 + }, + { + "baseCurrency": { + "address": "0x6149c26cd2f7b5ccdb32029af817123f6e37df5b", + "symbol": "LPOOL", + "name": "Launchpool token" + }, + "count": 13 + }, + { + "baseCurrency": { + "address": "0xe31debd7abff90b06bca21010dd860d8701fd901", + "symbol": "UBOMB", + "name": "UniBomb" + }, + "count": 12 + }, + { + "baseCurrency": { + "address": "0xf411903cbc70a74d22900a5de66a2dda66507255", + "symbol": "VRA", + "name": "VERA" + }, + "count": 12 + }, + { + "baseCurrency": { + "address": "0xddd6a0ecc3c6f6c102e5ea3d8af7b801d1a77ac8", + "symbol": "UNIX", + "name": "UniX Gaming" + }, + "count": 12 + }, + { + "baseCurrency": { + "address": "0x632fd938b98d740faee69112ed41257be3f83c7c", + "symbol": "MXS", + "name": "Matrix Samurai Token" + }, + "count": 12 + }, + { + "baseCurrency": { + "address": "0x327673ae6b33bd3d90f0096870059994f30dc8af", + "symbol": "LMT", + "name": "Lympo Market Token" + }, + "count": 12 + }, + { + "baseCurrency": { + "address": "0x21e783bcf445b515957a10e992ad3c8e9ff51288", + "symbol": "LGB", + "name": "Let's Go Brandon" + }, + "count": 12 + }, + { + "baseCurrency": { + "address": "0x9c2dc0c3cc2badde84b0025cf4df1c5af288d835", + "symbol": "COR", + "name": "COR Token" + }, + "count": 12 + }, + { + "baseCurrency": { + "address": "0xd075e95423c5c4ba1e122cae0f4cdfa19b82881b", + "symbol": "wPE", + "name": "OPES Finance" + }, + "count": 12 + }, + { + "baseCurrency": { + "address": "0x3431f91b3a388115f00c5ba9fdb899851d005fb5", + "symbol": "GERO", + "name": "GeroWallet" + }, + "count": 12 + }, + { + "baseCurrency": { + "address": "0x09ce2b746c32528b7d864a1e3979bd97d2f095ab", + "symbol": "DFL", + "name": "DeFIL-V2" + }, + "count": 12 + }, + { + "baseCurrency": { + "address": "0xe4815ae53b124e7263f08dcdbbb757d41ed658c6", + "symbol": "ZKS", + "name": "Zks" + }, + "count": 12 + }, + { + "baseCurrency": { + "address": "0xeec2be5c91ae7f8a338e1e5f3b5de49d07afdc81", + "symbol": "DPX", + "name": "Dopex Governance Token" + }, + "count": 11 + }, + { + "baseCurrency": { + "address": "0x1e18821e69b9faa8e6e75dffe54e7e25754beda0", + "symbol": "KIMCHI", + "name": "KIMCHI.finance" + }, + "count": 11 + }, + { + "baseCurrency": { + "address": "0x48fb253446873234f2febbf9bdeaa72d9d387f94", + "symbol": "vBNT", + "name": "Bancor Governance Token" + }, + "count": 11 + }, + { + "baseCurrency": { + "address": "0xbc4171f45ef0ef66e76f979df021a34b46dcc81d", + "symbol": "DORA", + "name": "Dorayaki" + }, + "count": 11 + }, + { + "baseCurrency": { + "address": "0x9e32b13ce7f2e80a01932b42553652e053d6ed8e", + "symbol": "Metis", + "name": "Metis Token" + }, + "count": 11 + }, + { + "baseCurrency": { + "address": "0x1614f18fc94f47967a3fbe5ffcd46d4e7da3d787", + "symbol": "PAID", + "name": "PAID Network" + }, + "count": 11 + }, + { + "baseCurrency": { + "address": "0x9d409a0a012cfba9b15f6d4b36ac57a46966ab9a", + "symbol": "yvBOOST", + "name": "Yearn Compounding veCRV yVault" + }, + "count": 11 + }, + { + "baseCurrency": { + "address": "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + "symbol": "wstETH", + "name": "Wrapped liquid staked Ether 2.0" + }, + "count": 11 + }, + { + "baseCurrency": { + "address": "0x67b6d479c7bb412c54e03dca8e1bc6740ce6b99c", + "symbol": "KYL", + "name": "Kylin Network" + }, + "count": 11 + }, + { + "baseCurrency": { + "address": "0x0c7d5ae016f806603cb1782bea29ac69471cab9c", + "symbol": "BFC", + "name": "Bifrost" + }, + "count": 11 + }, + { + "baseCurrency": { + "address": "0x7c8155909cd385f120a56ef90728dd50f9ccbe52", + "symbol": "NII", + "name": "Nahmii" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0x22b6c31c2beb8f2d0d5373146eed41ab9ede3caf", + "symbol": "COC", + "name": "CocktailBar" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0xdfe66b14d37c77f4e9b180ceb433d1b164f0281d", + "symbol": "stETH", + "name": "stakedETH" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0x936ff029bcefb5a12275b9a72f79f2bed17a85fd", + "symbol": "BLACKHOLE", + "name": "Black Hole" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0x72e5390edb7727e3d4e3436451dadaff675dbcc0", + "symbol": "HANU", + "name": "Hanu Yokia" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0xddb3422497e61e13543bea06989c0789117555c5", + "symbol": "COTI", + "name": "COTI Token" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0xdc59ac4fefa32293a95889dc396682858d52e5db", + "symbol": "BEAN", + "name": "Bean" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0x5caf454ba92e6f2c929df14667ee360ed9fd5b26", + "symbol": "DEV", + "name": "Dev" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0x62786eeacc9246b4018e0146cb7a3efeacd9459d", + "symbol": "LESS", + "name": "LessToken" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0x398aea1c9ceb7de800284bb399a15e0efe5a9ec2", + "symbol": "sILV", + "name": "Escrowed Illuvium" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f", + "symbol": "sOHM", + "name": "Staked Olympus" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0xdc98c5543f3004debfaad8966ec403093d0aa4a8", + "symbol": "PEBBLE", + "name": "Etherrock #72" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0xb1191f691a355b43542bea9b8847bc73e7abb137", + "symbol": "KIRO", + "name": "Kirobo" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0x8ca33160a8a2a9cb6d435f843bdd176241e2237e", + "symbol": "XES", + "name": "Proxeus Pre" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0xa9b1eb5908cfc3cdf91f9b8b3a74108598009096", + "symbol": "Auction", + "name": "Bounce Token" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0x0258f474786ddfd37abce6df6bbb1dd5dfc4434a", + "symbol": "ORN", + "name": "Orion Protocol" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0x056fd409e1d7a124bd7017459dfea2f387b6d5cd", + "symbol": "GUSD", + "name": "Gemini dollar" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0x7f0693074f8064cfbcf9fa6e5a3fa0e4f58ccccf", + "symbol": "gm", + "name": "we love gm" + }, + "count": 10 + }, + { + "baseCurrency": { + "address": "0xcc4304a31d09258b0029ea7fe63d032f52e44efe", + "symbol": "SWAP", + "name": "TrustSwap Token" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359", + "symbol": "DAI", + "name": "Dai Stablecoin v1.0" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x8f8221afbb33998d8584a2b05749ba73c37a938a", + "symbol": "REQ", + "name": "Request Token" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x1c7bbadc81e18f7177a95eb1593e5f5f35861b10", + "symbol": "AUSCM", + "name": "Auric Network" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x33349b282065b0284d756f0577fb39c158f935e6", + "symbol": "MPL", + "name": "Maple Token" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x68037790a0229e9ce6eaa8a99ea92964106c4703", + "symbol": "PAR", + "name": "PAR Stablecoin" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x4c19596f5aaff459fa38b0f7ed92f11ae6543784", + "symbol": "TRU", + "name": "TrueFi" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x7f3edcdd180dbe4819bd98fee8929b5cedb3adeb", + "symbol": "XTK", + "name": "xToken" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x2367012ab9c3da91290f71590d5ce217721eefe4", + "symbol": "xSNXa", + "name": "xSNX" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x10be9a8dae441d276a5027936c3aaded2d82bc15", + "symbol": "UMX", + "name": "https://unimex.network/" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0xa4eed63db85311e22df4473f87ccfc3dadcfa3e3", + "symbol": "RBC", + "name": "Rubic" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x20f6a313cb250062331fe70b9567e3ee5f01888b", + "symbol": "WGMI", + "name": "WGMI" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x80d55c03180349fff4a229102f62328220a96444", + "symbol": "OPUL", + "name": "OpulousToken" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x26ce25148832c04f3d7f26f32478a9fe55197166", + "symbol": "DEXT", + "name": "DEXTools" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0xa499648fd0e80fd911972bbeb069e4c20e68bf22", + "symbol": "uJENNY", + "name": "Jenny Metaverse DAO Token" + }, + "count": 9 + }, + { + "baseCurrency": { + "address": "0x9bb6fd000109e24eb38b0deb806382ff9247e478", + "symbol": "HXB", + "name": "hex.bet" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x808507121b80c02388fad14726482e061b8da827", + "symbol": "PENDLE", + "name": "Pendle" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x5d8d9f5b96f4438195be9b99eee6118ed4304286", + "symbol": "COVER", + "name": "Cover Protocol" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x02fdeea649d0291a987438fdaab5a71ed623471f", + "symbol": "ArtDeco", + "name": "ArtDeco" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0xb5a1779af011d64e0958e5af33d7e0c1dd658b8e", + "symbol": "mFloki", + "name": "MiniFloki" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x467bccd9d29f223bce8043b84e8c8b282827790f", + "symbol": "TEL", + "name": "Telcoin" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x14eb60f5f270b059b0c788de0ddc51da86f8a06d", + "symbol": "KCAL", + "name": "Phantasma Energy" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0xc276a3d9c5443de32fde5b5719763c6ff7790a10", + "symbol": "FREN", + "name": "DogeFren" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x0dc7d0192c148d7d2d6fa32dc280f953c0ad6a34", + "symbol": "MetaCat", + "name": "MetaCat" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0xc3d088842dcf02c13699f936bb83dfbbc6f721ab", + "symbol": "vETH", + "name": "Voucher Ethereum" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0xd4b3949b10490a9e596697e052652ca2d55abba0", + "symbol": "NAUSICAA", + "name": " Nausicaa Inu " + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0xde30da39c46104798bb5aa3fe8b9e0e1f348163f", + "symbol": "GTC", + "name": "Gitcoin" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0xc2bd7a597391f31d2e36c2cb769fce0e5bd6d482", + "symbol": "FREE", + "name": "Anti-Lockdown" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x71f85b2e46976bd21302b64329868fd15eb0d127", + "symbol": "AXN", + "name": "Axion" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0xe2311ae37502105b442bbef831e9b53c5d2e9b3b", + "symbol": "BANANA", + "name": "Banana" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0xf063fe1ab7a291c5d06a86e14730b00bf24cb589", + "symbol": "SALE", + "name": "DxSale.Network" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x2b6e03f3137b41d30d54e87517c053a1f2d96390", + "symbol": "AST1", + "name": "Aster-1H" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x8b39b70e39aa811b69365398e0aace9bee238aeb", + "symbol": "PKF", + "name": "PolkaFoundry" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x8a6d4c8735371ebaf8874fbd518b56edd66024eb", + "symbol": "BLOCKS", + "name": "BLOCKS" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x27054b13b1b798b345b591a4d22e6562d47ea75a", + "symbol": "AST", + "name": "AirSwap Token" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x03066da434e5264ef0b32f787923f974a5726fdc", + "symbol": "BCS", + "name": "BCS" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0x8a14897ea5f668f36671678593fae44ae23b39fb", + "symbol": "3DOG", + "name": "Cerberus" + }, + "count": 8 + }, + { + "baseCurrency": { + "address": "0xd23ac27148af6a2f339bd82d0e3cff380b5093de", + "symbol": "SI", + "name": "SIREN" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0xeb269732ab75a6fd61ea60b06fe994cd32a83549", + "symbol": "", + "name": "" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0xf5a562597d5fb5cc19482379755e1a5275a6607b", + "symbol": "XFOC", + "name": "FOOT COIN" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0x26a79bd709a7ef5e5f747b8d8f83326ea044d8cc", + "symbol": "BSOCIAL", + "name": "BankSocial" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2", + "symbol": "MTA", + "name": "Meta" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0x0d8775f648430679a709e98d2b0cb6250d2887ef", + "symbol": "BAT", + "name": "Basic Attention Token" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0x0aacfbec6a24756c20d41914f2caba817c0d8521", + "symbol": "YAM", + "name": "YAM" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0xd13c7342e1ef687c5ad21b27c2b65d772cab5c8c", + "symbol": "UOS", + "name": "Ultra Token" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0xee06a81a695750e71a662b51066f2c74cf4478a0", + "symbol": "$DG", + "name": "decentral.games" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0xffffffff2ba8f66d4e51811c5190992176930278", + "symbol": "COMBO", + "name": "Furucombo" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0xfa6de2697d59e88ed7fc4dfe5a33dac43565ea41", + "symbol": "DEFI5", + "name": "DEFI Top 5 Tokens Index" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0x9355372396e3f6daf13359b7b607a3374cc638e0", + "symbol": "WHALE", + "name": "WHALE" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0x95a4492f028aa1fd432ea71146b433e7b4446611", + "symbol": "APY", + "name": "APY Governance Token" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0x4e0fca55a6c3a94720ded91153a27f60e26b9aa8", + "symbol": "BOOST", + "name": "Boost" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0xd0660cd418a64a1d44e9214ad8e459324d8157f1", + "symbol": "WOOFY", + "name": "Woofy" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f", + "symbol": "SDT", + "name": "Stake DAO Token" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0x4a3e164684812dfb684ac36457e7fa805087c68e", + "symbol": "YUAN", + "name": "YUAN" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0xe4cfe9eaa8cdb0942a80b7bc68fd8ab0f6d44903", + "symbol": "XEND", + "name": "XEND" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0x8207c1ffc5b6804f6024322ccf34f29c3541ae26", + "symbol": "OGN", + "name": "OriginToken" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0x33d0568941c0c64ff7e0fb4fba0b11bd37deed9f", + "symbol": "RAMP", + "name": "RAMP DEFI" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0x5dbcf33d8c2e976c6b560249878e6f1491bca25c", + "symbol": "yyDAI+yUSDC+yUSDT+yTUSD", + "name": "yearn Curve.fi yDAI/yUSDC/yUSDT/yTUSD" + }, + "count": 7 + }, + { + "baseCurrency": { + "address": "0xe85ca2779645705185009a4ca33b9a7f0e3aaf1e", + "symbol": "LEAFA", + "name": " Leafa Inu " + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x7418a4d1a8aaecb45d0bc32aa2a171f42aa0df81", + "symbol": "SHAMAN", + "name": " SHAMAN INU " + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xfc0d6cf33e38bce7ca7d89c0e292274031b7157a", + "symbol": "NTVRK", + "name": "NETVRK" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x491d6b7d6822d5d4bc88a1264e1b47791fd8e904", + "symbol": "LONDON", + "name": "LONDON" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x7b123f53421b1bf8533339bfbdc7c98aa94163db", + "symbol": "buidl", + "name": "dfohub" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xc73c167e7a4ba109e4052f70d5466d0c312a344d", + "symbol": "SANSHU", + "name": "Sanshu Inu" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xcc8fa225d80b9c7d42f96e9570156c65d6caaa25", + "symbol": "SLP", + "name": "Smooth Love Potion" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xd4fffa07929b1901fdb30c1c67f80e1185d4210f", + "symbol": "CERTI", + "name": "CERTI" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x45804880de22913dafe09f4980848ece6ecbaf78", + "symbol": "PAXG", + "name": "Paxos Gold" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xc690f7c7fcffa6a82b79fab7508c466fefdfc8c5", + "symbol": "LYM", + "name": "Lympo tokens" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x41f7b8b9b897276b7aae926a9016935280b44e97", + "symbol": "", + "name": " (Wormhole)" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x8ecd8139bfda5fb572983a2a097c1c84dd2ed613", + "symbol": "eCum", + "name": "EthereumCum " + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xed0c64681cd4c4c4ee94776f87b20951dbdda1ef", + "symbol": "SMINU", + "name": "Smart-Inu" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x90b831fa3bebf58e9744a14d638e25b4ee06f9bc", + "symbol": "MIMO", + "name": "MIMO Parallel Governance Token" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x9ed8e7c9604790f7ec589f99b94361d8aab64e5e", + "symbol": "UNISTAKE", + "name": "Unistake" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x00a8b738e453ffd858a7edf03bccfe20412f0eb0", + "symbol": "ALBT", + "name": "AllianceBlock Token" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x2772b0dd22381932b104d683e73c5ecb5a3a2408", + "symbol": "mLOOT", + "name": "LootMart" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xd6daecbba57eae35026a92b972e731932b0434a5", + "symbol": "SHB5", + "name": "Super Heavy Booster 5 | https://t.me/superheavybooster5" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x3e3cda3218212503883c79f6d2feef29e6bbb87d", + "symbol": "GPYX", + "name": "GpyxToken" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x9a86aabb4fbaa547b007a0ffaf86748db0f50774", + "symbol": "NOS", + "name": "NoScam" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x3622d034fbf3baec7060c7cb484a121389684986", + "symbol": "RKYU", + "name": "RyukyuToken" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x321c2fe4446c7c963dc41dd58879af648838f98d", + "symbol": "CTX", + "name": "Cryptex" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x9b7f62b942bc707e14bc0189b0f95c75a06f50e6", + "symbol": "K9", + "name": " K9 Inu " + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x01d8531005ce845485e7150e7ef8761c7ba63e20", + "symbol": "CZ", + "name": "ChangPengZhao Token" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xf1a91c7d44768070f711c68f33a7ca25c8d30268", + "symbol": "C3", + "name": "CHARLI3" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xdeaf554114b3481a3ed820fc06bfb51174ef84ac", + "symbol": "3TH", + "name": "3TH" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x9521c632fca479d8800aa42910d1a45efd76943a", + "symbol": "CHARLOTTE", + "name": " Charlotte Inu " + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x87b008e57f640d94ee44fd893f0323af933f9195", + "symbol": "COIN", + "name": "coin_artist" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x89ab32156e46f46d02ade3fecbe5fc4243b9aaed", + "symbol": "PNT", + "name": "pNetwork Token" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x939a7a577d93ad29b64c1595b1284ce660a479b9", + "symbol": "JEJUDOGE", + "name": "Jejudoge" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xa184c89d44dfe9692a71f9f936cc80749cde42af", + "symbol": "GMGN", + "name": "GMGN" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xad4f86a25bbc20ffb751f2fac312a0b4d8f88c64", + "symbol": "ROOM", + "name": "OptionRoom Token" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x60e46a4dd91d10506d8efa2caa266e7191fe7ea8", + "symbol": "FEWGO", + "name": "Fewmans Gold" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x00c83aecc790e8a4453e5dd3b0b4b3680501a7a7", + "symbol": "SKL", + "name": "SKALE" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xfc98e825a2264d890f9a1e68ed50e1526abccacd", + "symbol": "MCO2", + "name": "Moss Carbon Credit" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xd2dda223b2617cb616c1580db421e4cfae6a8a85", + "symbol": "BONDLY", + "name": "Bondly Token" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xc67b12049c2d0cf6e476bc64c7f82fc6c63cffc5", + "symbol": "GDT", + "name": "GDT" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x7659ce147d0e714454073a5dd7003544234b6aa0", + "symbol": "XCAD", + "name": "XCAD Token" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x695106ad73f506f9d0a9650a78019a93149ae07c", + "symbol": "BNS", + "name": "BNS Token" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x509eece4793b46e4d81c0d4cb0a5a0c26c45e304", + "symbol": "FGLD", + "name": "First Gold" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x4aa41bc1649c9c3177ed16caaa11482295fc7441", + "symbol": "XFIT", + "name": "XFIT" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x6fb1e018f107d3352506c23777e4cd62e063584a", + "symbol": "IDTT", + "name": "Identity" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x656c00e1bcd96f256f224ad9112ff426ef053733", + "symbol": "EFI", + "name": "Efinity Token" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xfb130d93e49dca13264344966a611dc79a456bc5", + "symbol": "DOGEGF", + "name": "DogeGF" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x511a17a6bfa199d9437f348a24be04cd2945bb29", + "symbol": "HUMAN", + "name": "Humankind" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0x948c70dc6169bfb10028fdbe96cbc72e9562b2ac", + "symbol": "XP", + "name": "PolkaFantasy" + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xf397ad6deb26428cf65748b538becaf3f9a04294", + "symbol": "Eevee Inu ", + "name": " Eevee Inu " + }, + "count": 6 + }, + { + "baseCurrency": { + "address": "0xd5525d397898e5502075ea5e830d8914f6f0affe", + "symbol": "MEME", + "name": "MEME" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xe66894c93cbbe66e0fb2fcf5e430229bf5bb5ed9", + "symbol": "PLUG-B", + "name": "Pl^g Token Series B" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xd0345d30fd918d7682398acbcdf139c808998709", + "symbol": "LIX", + "name": "Lixir Token" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x7d29a64504629172a429e64183d6673b9dacbfce", + "symbol": "VXV", + "name": "VectorspaceAI" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x2f109021afe75b949429fe30523ee7c0d5b27207", + "symbol": "OCC", + "name": "OCC" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xdddddd4301a082e62e84e43f474f044423921918", + "symbol": "DVF", + "name": "DeversiFi Token" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x8c8687fc965593dfb2f0b4eaefd55e9d8df348df", + "symbol": "PAID", + "name": "PAID Network" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x8400d94a5cb0fa0d041a3788e395285d61c9ee5e", + "symbol": "UBT", + "name": "UniBright" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xaba8cac6866b83ae4eec97dd07ed254282f6ad8a", + "symbol": "YAMv2", + "name": "YAMv2" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xa8b12cc90abf65191532a12bb5394a714a46d358", + "symbol": "pBTC35A", + "name": "POW BTC-35W/T" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x7ddc52c4de30e94be3a6a0a2b259b2850f421989", + "symbol": "GMT", + "name": "GoMining Token" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xdf801468a808a32656d2ed2d2d80b72a129739f4", + "symbol": "CUBE", + "name": "Somnium Space Cubes" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x1a7981d87e3b6a95c1516eb820e223fe979896b3", + "symbol": "MCC", + "name": "MultiChainCapital" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xeef9f339514298c6a857efcfc1a762af84438dee", + "symbol": "HEZ", + "name": "Hermez Network Token" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x379ec11344929da69ddfd805d564608089c97e55", + "symbol": "DRF", + "name": "DragonFruit" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xf418588522d5dd018b425e472991e52ebbeeeeee", + "symbol": "PUSH", + "name": "Ethereum Push Notification Service" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xa36fdbbae3c9d55a1d67ee5821d53b50b63a1ab9", + "symbol": "TEMP", + "name": "Tempus" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xe76c6c83af64e4c60245d8c7de953df673a7a33d", + "symbol": "RAIL", + "name": "Rail" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8", + "symbol": "yDAI+yUSDC+yUSDT+yTUSD", + "name": "Curve.fi yDAI/yUSDC/yUSDT/yTUSD" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x4ceda7906a5ed2179785cd3a40a69ee8bc99c466", + "symbol": "AION", + "name": "AION" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x6399c842dd2be3de30bf99bc7d1bbf6fa3650e70", + "symbol": "PREMIA", + "name": "Premia" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xfc05205ff402849b081e72ae4f8fc93cbdf40db1", + "symbol": "Lelouch", + "name": "Lelouch Lamperouge" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x4ece5c5cfb9b960a49aae739e15cdb6cfdcc5782", + "symbol": "DBUY", + "name": "Doont Buy" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x68749665ff8d2d112fa859aa293f07a622782f38", + "symbol": "XAUt", + "name": "Tether Gold" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x4123a133ae3c521fd134d7b13a2dec35b56c2463", + "symbol": "QRDO", + "name": "Qredo Token" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x3383c5a8969dc413bfddc9656eb80a1408e4ba20", + "symbol": "wANATHA", + "name": "Wrapped ANATHA" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x16c52ceece2ed57dad87319d91b5e3637d50afa4", + "symbol": "TCAP", + "name": "TCAP Token" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0xdc349913d53b446485e98b76800b6254f43df695", + "symbol": "BEZOGE", + "name": "Bezoge Earth" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x3ec99d9ab6e6f144d47bce3c0f6183b23f9ff0ec", + "symbol": "SYLO", + "name": "SYLO Series A Token" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x1f8a626883d7724dbd59ef51cbd4bf1cf2016d13", + "symbol": "STAK", + "name": "Jigstack" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x1036c90a7dea8a392901147870f74a40af812bb4", + "symbol": "RUSD", + "name": "Ring USD" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x8290d7a64f25e6b5002d98367e8367c1b532b534", + "symbol": "oneUNI", + "name": "oneUNI" + }, + "count": 5 + }, + { + "baseCurrency": { + "address": "0x0d3b8cdd9748a1f6fa67a0ca89111de92901e29a", + "symbol": "PSHIB", + "name": "Polkashiba" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x704de5696df237c5b9ba0de9ba7e0c63da8ea0df", + "symbol": "xAAVEb", + "name": "xAAVE" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xfeee0b5ec835932e42f0c029e918ffa4ded19a70", + "symbol": "SBC DAO", + "name": " Small Brain Capital DAO " + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xebd9d99a3982d547c5bb4db7e3b1f9f14b67eb83", + "symbol": "ID", + "name": "Everest ID" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x3d56b44d1eccdeadffd5be1282762317455cda32", + "symbol": "FOMO", + "name": "FOMO World" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x2924f92520297d5b188c90d319836c93a7271c7f", + "symbol": "SCREAMINU", + "name": " Scream Inu " + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xc5c8465293cb140d3f98bd644233e93871bd604a", + "symbol": "SqINU", + "name": "Squirtle Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x417e1a6393596f2a4eb3ad667ca2fbe57802575d", + "symbol": "CHAIN", + "name": "CHAIN FURY | t.me/ChainFury" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x55296f69f40ea6d20e478533c15a6b08b654e758", + "symbol": "XYO", + "name": "XY Oracle" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xcd1faff6e578fa5cac469d2418c95671ba1a62fe", + "symbol": "XTM", + "name": "Torum" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x0575112525f2778c14c4ca3658430c85de400045", + "symbol": "WAGMI", + "name": "WAGMI" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xa42fa7e43354cefbea5c822362367dfaee092cb3", + "symbol": "STARB", + "name": "StarbaseGQ" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x19d4beb2bc410b80084fcbd0ac024326f4d3a370", + "symbol": "ViCA", + "name": "ViCA Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf80d589b3dbe130c270a69f1a69d050f268786df", + "symbol": "DAM", + "name": "Datamine" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x31429d1856ad1377a8a0079410b297e1a9e214c2", + "symbol": "ANGLE", + "name": "ANGLE" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x626e8036deb333b408be468f951bdb42433cbf18", + "symbol": "AIOZ", + "name": "AIOZ Network" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xe0e05c43c097b0982db6c9d626c4eb9e95c3b9ce", + "symbol": "USF", + "name": "Unslashed Finance Governance Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x0e192d382a36de7011f795acc4391cd302003606", + "symbol": "FST", + "name": "Futureswap Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x6710c63432a2de02954fc0f851db07146a6c0312", + "symbol": "MFG", + "name": "SyncFab Smart Manufacturing Blockchain" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x64b4aba89b57400199b5b7785cad0b5c2bfcc296", + "symbol": "SOCRAT", + "name": "Socrat" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x799ebfabe77a6e34311eeee9825190b9ece32824", + "symbol": "BTRST", + "name": "BTRST" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x7ae1d57b58fa6411f32948314badd83583ee0e8c", + "symbol": "PAPER", + "name": "Paper" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xc834fa996fa3bec7aad3693af486ae53d8aa8b50", + "symbol": "CONV", + "name": "Convergence" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xd478161c952357f05f0292b56012cd8457f1cfbf", + "symbol": "POLK", + "name": "Polkamarkets" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x1aa61c196e76805fcbe394ea00e4ffced24fc469", + "symbol": "SAFE", + "name": "yieldfarming.insure" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x37da95e0aa5a2edb84189f9aea6f9f4c38c0f038", + "symbol": "69", + "name": "SixtyNine" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x120a3879da835a5af037bb2d1456bebd6b54d4ba", + "symbol": "RVST", + "name": "Revest" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xcb3df3108635932d912632ef7132d03ecfc39080", + "symbol": "WING", + "name": "Wings" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x83eed088eb2b7005ae4b4c94cfc17fb4ffab3393", + "symbol": "CHINU", + "name": "Charmander Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x47d94ab5e824090f3fd8ab14d9033a079a97d6db", + "symbol": "MSHIBA", + "name": "Momma Shiba" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xab5d99d2c931d2bb4a9f0168a2a9778fa1e4fdb0", + "symbol": "GIZMO", + "name": " Gizmo Token " + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x5968a5d4cc5bf135d787486824c8031cd9e2291f", + "symbol": "COPE", + "name": "COPE" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x0e4e860f8bdc0a494cc9c4649ba1d0291d8d5f6b", + "symbol": "OOP", + "name": "OcarinaOfPump.com" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xe66b3aa360bb78468c00bebe163630269db3324f", + "symbol": "MTO", + "name": "Merchant Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xd8dfe718f9522525ecc44e5ddd1d7141a012c4fb", + "symbol": "METAGOKU", + "name": "Meta Goku" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x12a24acb8867f02fb06614728d0b6b64ff3c4bae", + "symbol": "BLACKSTALLION", + "name": "BLACKSTALLION" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x2bfe554b98db945d87c6262b88bb4a98ab39ae7f", + "symbol": "AKITACASH", + "name": "AkitaCash Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf4259815fe2410937ab2e5148acfcfbd27b7a5fd", + "symbol": "Interstellar", + "name": "? Interstellar ?" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xa1d6df714f91debf4e0802a542e13067f31b8262", + "symbol": "RFOX", + "name": "RFOX" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x9275e8386a5bdda160c0e621e9a6067b8fd88ea2", + "symbol": "NBNG", + "name": "NOBUNAGA" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x9a7af5307a4277d2dc95cdcd5709c806c095a44d", + "symbol": "DIADOGE", + "name": "Diamond Doge" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xfa898efdb91e35bd311c45b9b955f742b6719aa2", + "symbol": "APED", + "name": "Baddest Alpha Ape Bundle " + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x0b498ff89709d3838a063f1dfa463091f9801c2b", + "symbol": "BTC2x-FLI", + "name": "BTC 2x Flexible Leverage Index" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xec1b7eb3d3cfac7027fa60b5376e5eadef4f1300", + "symbol": "HZM", + "name": "HZMCOIN" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x6286a9e6f7e745a6d884561d88f94542d6715698", + "symbol": "TECH", + "name": "Cryptomeda" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x68a3637ba6e75c0f66b61a42639c4e9fcd3d4824", + "symbol": "MOON", + "name": "MoonToken" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x5979f50f1d4c08f9a53863c2f39a7b0492c38d0f", + "symbol": "pLTC", + "name": "pTokens LTC" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x550fd2fc0998ce37246a0a5359709f97423ae2e0", + "symbol": "MPY", + "name": "Meta Puppy" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xa77e9683c394ac065c355f6683e5a523cba388a5", + "symbol": "WOGE", + "name": "White Doge" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xb05097849bca421a3f51b249ba6cca4af4b97cb9", + "symbol": "FLOAT", + "name": "Float Protocol: FLOAT" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x8c9d0e9d27fb15a96cd8ad714929502f4f1995bf", + "symbol": "SHFL", + "name": "SHUFFLE!" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x83695d4a8b007c4dcbbed05c6ab8abf8263ffa71", + "symbol": "CAKEINU", + "name": "Cake Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x5b102768672cae6b64d06b8033ae1977e0dbfedf", + "symbol": "LEBRON", + "name": "Lebron Doge" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x8762db106b2c2a0bccb3a80d1ed41273552616e8", + "symbol": "RSR", + "name": "Reserve Rights" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xfca59cd816ab1ead66534d82bc21e7515ce441cf", + "symbol": "RARI", + "name": "Rarible" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xa02120696c7b8fe16c09c749e4598819b2b0e915", + "symbol": "WXT", + "name": "Wirex Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x2aeccb42482cc64e087b6d2e5da39f5a7a7001f8", + "symbol": "RULER", + "name": "Ruler Protocol" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf29cdfc5b50cbb396d674042a62286d2035ffbdf", + "symbol": "ODA", + "name": " Oda Inu " + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x6b785a0322126826d8226d77e173d75dafb84d11", + "symbol": "VLT", + "name": "Bankroll Vault" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xeda5b6e0a37b3ddd7f0ab1ace26b917db49b0384", + "symbol": "PKINU", + "name": "PINKY INU www.pinkyinu.site" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xc3761eb917cd790b30dad99f6cc5b4ff93c4f9ea", + "symbol": "ERC20", + "name": "ERC20" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xffd93c0252ada18ca06b881282800d9893b06223", + "symbol": "MFS", + "name": "My First Shiba" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x07ca256267128fbe1a79b74fc7b0e6ed3359ad08", + "symbol": "WWT", + "name": "Wormhole Wrapped - 1-c261d86cf5cf877128ba1f5652e5f3dda599270c1556a15bc0a9aacf8063e563" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x5166e09628b696285e3a151e84fb977736a83575", + "symbol": "VOL", + "name": "Volatility Protocol Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x3322ce66fb4b657333e2140c00934a618848bdca", + "symbol": "HINU", + "name": "High Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf94b5c5651c888d928439ab6514b93944eee6f48", + "symbol": "YLD", + "name": "Yield" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x1e05f68b29b286fb3bbad3c688d7e2abda549b80", + "symbol": "PICIPO", + "name": "PICIPO" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x639ae8f3eed18690bf451229d14953a5a5627b72", + "symbol": "GNBU", + "name": "Nimbus Governance Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x87edffde3e14c7a66c9b9724747a1c5696b742e6", + "symbol": "SWAG", + "name": "Swag Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xa1e72267084192db7387c8cc1328fade470e4149", + "symbol": "TFI-LP", + "name": "TrueFi LP" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xd796b8eff23d5c4c71f43c99ffd7d8a3119f7475", + "symbol": "METACEX", + "name": "Metaverse Exchange" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xcbd55d4ffc43467142761a764763652b48b969ff", + "symbol": "ASTRO", + "name": "AstroTools.io" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x48271da3a74834f30534f5019483b89c4021736a", + "symbol": "OPM", + "name": "OnePunchManETH" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf431dec6a097b5f4436fe952cc63db7fddb46cc9", + "symbol": "LEECH", + "name": "Parasite" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf4cd3d3fda8d7fd6c5a500203e38640a70bf9577", + "symbol": "Yf-DAI", + "name": "YfDAI.finance" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xa1ab427451f19df7445a22dea7073800ea3b687f", + "symbol": "SHINU", + "name": "Shinigami Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x62c8179b08b72acd4e745b33415aa512f2aa4097", + "symbol": "HOUND", + "name": "The Hound" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xac042d9284df95cc6bd35982f6a61e3e7a6f875b", + "symbol": "LBY", + "name": "Lobby" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xb48b3a30b297fd9a765daa2b7520765b640d486b", + "symbol": "AFT", + "name": "Another Fucking Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x194302204f275a532d005c6388bf7559042634bc", + "symbol": "ANIME", + "name": "Anime Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x0ff5a8451a839f5f0bb3562689d9a44089738d11", + "symbol": "rDPX", + "name": "Dopex Rebate Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xaea2350f80420e15e8a1f21124eddaedd482ffa5", + "symbol": "RAICHU", + "name": "RAICHU | t.me/raichutoken" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x63b8b7d4a3efd0735c4bffbd95b332a55e4eb851", + "symbol": "DGCL", + "name": "DigiCol Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x42d6622dece394b54999fbd73d108123806f6a18", + "symbol": "SPANK", + "name": "SPANK" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x39dd84dd2a6b9a731f0de21d5e3f476e5bed3f47", + "symbol": "CHININU", + "name": "CHIN-INU" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x642e2e81a7c5e1f1528657c1dfeddb4e4b5f1810", + "symbol": "MGC", + "name": "Multi Gains Capital" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x903bef1736cddf2a537176cf3c64579c3867a881", + "symbol": "ICHI", + "name": "ichi.farm" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xb3e14c863ab04c84fe6b4bad72c101f0ffe8af10", + "symbol": "ZENDOGE", + "name": "Zen Doge" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x878cf148ccbb50426043a9affe54ba408221c7fa", + "symbol": "KOMBAT", + "name": "Crypto Kombat Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf5b1fd29d23e98db2d9ebb8435e1082e3b38fb65", + "symbol": "KISHIMOTO", + "name": "Kishimoto Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xaa0045b09e96027210e3a0bd3c912171d5e9c7ec", + "symbol": "LEEEEECH", + "name": "Parasite2" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x73037dbf56716e6e7df24f87abb9860ae36552c2", + "symbol": "SAPINU", + "name": "Sapsal INU Coin" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x2956356cd2a2bf3202f771f50d3d14a367b48070", + "symbol": "WETH", + "name": "Ether Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x9203f0f60a2e49f2de2f177bb5f882559de465d5", + "symbol": "SPIDEYINU ", + "name": " Spidey Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x33e07f5055173cf8febede8b21b12d1e2b523205", + "symbol": "ELAND", + "name": "Etherland" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xb05d22ef2d41ba68ab6795c49565ae3faf8fe473", + "symbol": "SCOOP", + "name": "Pooper Scooper" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf3950f3a1f9cfd0b9601275a8f9d87cb0254e70b", + "symbol": "DONI", + "name": "Dogo Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x537edd52ebcb9f48ff2f8a28c51fcdb9d6a6e0d4", + "symbol": "SDOG", + "name": "SDOG" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x80e7fe192709b926b3d6ddef8ff158829f48624e", + "symbol": "ZINU", + "name": " Zombie Inu " + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x1cbf37694de7f75cf10505e727420eeedb7ed6c3", + "symbol": "GIVE", + "name": "Give Global" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x7b8a9965de29f52d30b49d68e3b7194e59aeb957", + "symbol": "SUPER HEAVY ", + "name": "ETH" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x72271efca94e4fd7c49fa66fcab77d418bc3b4a1", + "symbol": "LGBTSHIBA", + "name": "Lgbt Shiba" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x49828c1453d317ca3fffa60c8b5f7f42eeaae56a", + "symbol": "SHIB2", + "name": "SHIBA INU 2.0" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xae3e8fe316b3fefe62f75ce25b355d4b3b985ae6", + "symbol": "CIAO", + "name": "Ciao Bella" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x6a3fe7d0171bc8fc897171dd29d3c422940f12aa", + "symbol": "BARK", + "name": "Bark Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xc8f9882b3cc6d0d920ca7ca376e6f10d4e0c295b", + "symbol": "TOKYOGHOUL", + "name": "Tokyo Ghoul Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf1ca9cb74685755965c7458528a36934df52a3ef", + "symbol": "AVINOC", + "name": "AVINOC Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x9412d561930470e73938c10bfdba5a478f08d6cc", + "symbol": "BIN", + "name": "Bineon Game | t.me/bineon" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x00000000000045166c45af0fc6e4cf31d9e14b9a", + "symbol": "BID", + "name": "TopBidder" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x10086399dd8c1e3de736724af52587a2044c9fa2", + "symbol": "TMTG", + "name": "The Midas Touch Gold" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xe208060ee58ab4ea18aa51f399541683533632b8", + "symbol": "MLINK", + "name": "Memelink" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xb525ecee288b99216cd481c56b6efbdbe9bf90b5", + "symbol": "KUMA", + "name": "Kuma Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x1cbb83ebcd552d5ebf8131ef8c9cd9d9bab342bc", + "symbol": "NFY", + "name": "Non-Fungible Yearn" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xc2eb69ac2828ae4874fca025caf453f758b99acc", + "symbol": "KISHU", + "name": "Kishu Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x39a3c6f5009e3f7db08cf69fdf5183c8e1d11e56", + "symbol": "VAMINU", + "name": "Vampire Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x2a2005849982f0f2b734bcbf206d8a2db067cde0", + "symbol": "GG", + "name": "Gorillion" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x727f064a78dc734d33eec18d5370aef32ffd46e4", + "symbol": "ORION", + "name": "Orion Money Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x896e145568624a498c5a909187363ae947631503", + "symbol": "WASABI", + "name": "Wasabi" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xb7c8ca3d212eaf881ebc3209cc07635bb32e3eee", + "symbol": "GP", + "name": "GP" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x13215d37f94703db513b01c86d4673eca7d4c689", + "symbol": "ROLL?", + "name": "High Roller ?" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x898bad2774eb97cf6b94605677f43b41871410b1", + "symbol": "vETH2", + "name": "validator-Eth2" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x26c8afbbfe1ebaca03c2bb082e69d0476bffe099", + "symbol": "CELL", + "name": "Cellframe Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x7a74a44d9e4e2cc1990fe723fcd6c4258c0b0b38", + "symbol": "TINYSAITAMA", + "name": " Tiny Saitama " + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x2b622288827098ac11cd3dacd238a3478e41b2ad", + "symbol": "1Punch", + "name": "1Punch" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xc22b30e4cce6b78aaaadae91e44e73593929a3e9", + "symbol": "RAC", + "name": "RAC" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x3a5c99d8e43aaa5099e3bf4ea1d2762ff501311c", + "symbol": "MACROHARD", + "name": "MACROHARD ELON" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x84810bcf08744d5862b8181f12d17bfd57d3b078", + "symbol": "SGT", + "name": "SharedStake Governance Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xa49dc04d118bdf4a3471f593c1bba0c99b2187ea", + "symbol": "ODI", + "name": "odius.ai" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x997be9f68df07ee507a772c09cfb86a0d0b16f8c", + "symbol": "SCOOBY", + "name": "SCOOBYDOO" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x4da08a1bff50be96bded5c7019227164b49c2bfc", + "symbol": "Mononoke-Inu", + "name": "Mononoke Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf12815f5ecb6c4f9ec77a4a7e06a3be372017820", + "symbol": "CLAKE", + "name": "CrystalLake" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xc9f1016d336ef77aee75fc11ad64c5ecf9121332", + "symbol": "SAT", + "name": "SoMee Advertising Token V2" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xc3dd23a0a854b4f9ae80670f528094e9eb607ccb", + "symbol": "TRND", + "name": "Trendering" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x1997830b5beb723f5089bb8fc38766d419a0444d", + "symbol": "NEWINU", + "name": "New Guinea Singing Dog Inu" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xbc17729fdf562723f0267f79ff25ade441056d87", + "symbol": "KST", + "name": "KSM Starter Token" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x1b7cb8fc659ec17c4bc1e7cdff13022308885437", + "symbol": "Rainbows", + "name": "NoundlesRainbows" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x178c820f862b14f316509ec36b13123da19a6054", + "symbol": "EWTB", + "name": "Energy Web Token Bridged" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xb17548c7b510427baac4e267bea62e800b247173", + "symbol": "SMT", + "name": "Swarm Markets" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x20a8cec5fffea65be7122bcab2ffe32ed4ebf03a", + "symbol": "DNXC", + "name": "DinoX Coin" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x1796ae0b0fa4862485106a0de9b654efe301d0b2", + "symbol": "PMON", + "name": "Polkamon" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x5debbd8a9920c9ebe5a6a5315e0bbf5d6c81433f", + "symbol": "HMF", + "name": "HelloMyFren" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xdd1ad9a21ce722c151a836373babe42c868ce9a4", + "symbol": "UBI", + "name": "Universal Basic Income" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf1444fa36d477f4d1ec0b30d4eb2d3d9557914a1", + "symbol": "SER", + "name": "SER" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xf3cd95bca5a82d7418bce1f59dcd6aca346b4630", + "symbol": "MASHIMA", + "name": " Mashima Inu " + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xff7e285b87e7f9247f0953cf8cf5cb24eede4b9c", + "symbol": "STIMMY", + "name": "STIMMY" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0xbb978bb4a45878efe0cd5da543511c50be99dae8", + "symbol": "NFTD", + "name": "TATO DOGE NFT" + }, + "count": 4 + }, + { + "baseCurrency": { + "address": "0x5016f22b1166a23a02fc6cadd5e59fce1a995cc3", + "symbol": "GMI", + "name": "GMI" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x6fcb6408499a7c0f242e32d77eb51ffa1dd28a7e", + "symbol": "xHDX", + "name": "xHDX" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xfa14fa6958401314851a17d6c5360ca29f74b57b", + "symbol": "SAITO", + "name": "SAITO" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x0cdf9acd87e940837ff21bb40c9fd55f68bba059", + "symbol": "MINT", + "name": "Public Mint" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xae1eaae3f627aaca434127644371b67b18444051", + "symbol": "YOP", + "name": "YOP" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x6fc13eace26590b80cccab1ba5d51890577d83b2", + "symbol": "UMB", + "name": "Umbrella" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x0417912b3a7af768051765040a55bb0925d4ddcf", + "symbol": "LID", + "name": "Liquidity Dividends Protocol" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x9b02dd390a603add5c07f9fd9175b7dabe8d63b7", + "symbol": "SPI", + "name": "Shopping.io" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xca76543cf381ebbb277be79574059e32108e3e65", + "symbol": "wsOHM", + "name": "Wrapped sOHM" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xc221b7e65ffc80de234bbb6667abdd46593d34f0", + "symbol": "wCFG", + "name": "Wrapped Centrifuge" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xc5019e129b75d380d3d837b8e609dec6c8f5d044", + "symbol": "GN", + "name": "GN" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xc4de189abf94c57f396bd4c52ab13b954febefd8", + "symbol": "B20", + "name": "B.20" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x72b886d09c117654ab7da13a14d603001de0b777", + "symbol": "XDEFI", + "name": "XDEFI" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x1c9491865a1de77c5b6e19d2e6a5f1d7a6f2b25f", + "symbol": "MATTER", + "name": "Antimatter.Finance Governance Token" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xed1480d12be41d92f36f5f7bdd88212e381a3677", + "symbol": "FDT", + "name": "FIAT DAO Token" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xffe510a92434a0df346c5e72a3494b043cf249eb", + "symbol": "LBXC", + "name": "LUXBIO CELL" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xcf78c7dd70d6f30f6e3609e905e78305da98c863", + "symbol": "ONX", + "name": "Ownix" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xcfe99b2507e730da5b244b42ad256467131b4649", + "symbol": "SDL", + "name": "Saddle Governance" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x419d0d8bdd9af5e606ae2232ed285aff190e711b", + "symbol": "FUN", + "name": "FunFair" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x7fbec0bb6a7152e77c30d005b5d49cbc08a602c3", + "symbol": "DDOS", + "name": "Disbalancer" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x17ac188e09a7890a1844e5e65471fe8b0ccfadf3", + "symbol": "CC10", + "name": "Cryptocurrency Top 10 Tokens Index" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x668c50b1c7f46effbe3f242687071d7908aab00a", + "symbol": "CoShi", + "name": "CoShi Inu" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xae697f994fc5ebc000f8e22ebffee04612f98a0d", + "symbol": "LGCY", + "name": "LGCY Network" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xc14830e53aa344e8c14603a91229a0b925b0b262", + "symbol": "PXT", + "name": "Populous XBRL token" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x84ba4aecfde39d69686a841bab434c32d179a169", + "symbol": "MTHD", + "name": "Method" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xe0e4839e0c7b2773c58764f9ec3b9622d01a0428", + "symbol": "ENCORE", + "name": "EnCore" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x9c4a4204b79dd291d6b6571c5be8bbcd0622f050", + "symbol": "TCR", + "name": "Tracer" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xe2f2a5c287993345a840db3b0845fbc70f5935a5", + "symbol": "mUSD", + "name": "mStable USD" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xb9d99c33ea2d86ec5ec6b8a4dd816ebba64404af", + "symbol": "K21", + "name": "k21.kanon.art" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x67b66c99d3eb37fa76aa3ed1ff33e8e39f0b9c7a", + "symbol": "ibETH", + "name": "Interest Bearing ETH" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xfb7b4564402e5500db5bb6d63ae671302777c75a", + "symbol": "DEXT", + "name": "DEXTools" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xef9cd7882c067686691b6ff49e650b43afbbcc6b", + "symbol": "FNX", + "name": "FinNexus" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x557b933a7c2c45672b610f8954a3deb39a51a8ca", + "symbol": "REVV", + "name": "REVV" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xa143ac515dca260a46c742c7251ef3b268639593", + "symbol": "BULK", + "name": "Bulk Token" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x3dd98c8a089dbcff7e8fc8d4f532bd493501ab7f", + "symbol": "TOWN", + "name": "TownCoin" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xb753428af26e81097e7fd17f40c88aaa3e04902c", + "symbol": "SFI", + "name": "Spice" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x0ff6ffcfda92c53f615a4a75d982f399c989366b", + "symbol": "LAYER", + "name": "Unilayer" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x4206931337dc273a630d328da6441786bfad668f", + "symbol": "DOGE", + "name": "Dogecoin" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xc32cc5b70bee4bd54aa62b9aefb91346d18821c4", + "symbol": "ITS", + "name": "IterationSyndicate" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xe0ad1806fd3e7edf6ff52fdb822432e847411033", + "symbol": "ONX", + "name": "OnX.finance" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xd084b83c305dafd76ae3e1b4e1f1fe2ecccb3988", + "symbol": "TVK", + "name": "Terra Virtua Kolect" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x364a7381a5b378ced7ab33d1cdf6ff1bf162bfd6", + "symbol": "TGX", + "name": "DeFi-X Token" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xa017ac5fac5941f95010b12570b812c974469c2c", + "symbol": "XES", + "name": "Proxeus" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0xb5585afebbb9d955da797845b3e0c41b3ff047ce", + "symbol": "Hi", + "name": "Hi" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x0e2298e3b3390e3b945a5456fbf59ecc3f55da16", + "symbol": "YAM", + "name": "YAM" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x2a3bff78b79a009976eea096a51a948a3dc00e34", + "symbol": "WILD", + "name": "Wilder" + }, + "count": 3 + }, + { + "baseCurrency": { + "address": "0x63b4f3e3fa4e438698ce330e365e831f7ccd1ef4", + "symbol": "CFi", + "name": "CyberFi Token" + }, + "count": 3 + } +] \ No newline at end of file diff --git a/gamestonk_terminal/cryptocurrency/dataframe_helpers.py b/gamestonk_terminal/cryptocurrency/dataframe_helpers.py index afc57ffb982..7e9f8b50fe5 100644 --- a/gamestonk_terminal/cryptocurrency/dataframe_helpers.py +++ b/gamestonk_terminal/cryptocurrency/dataframe_helpers.py @@ -1,6 +1,7 @@ """Dataframe helpers""" __docformat__ = "numpy" +import re from typing import Union, Any import textwrap import pandas as pd @@ -118,3 +119,21 @@ def very_long_number_formatter(num: Union[str, int, float]) -> str: return f'{formatted_num}{["", "K", "M", "B", "T"][magnitude]}' return num + + +def prettify_column_names(columns: list) -> list: + """Helper method that change column names into more human readable format. E.g. + - tradeAmount => Trade amount, + - tokenValue => Token value + - mediumGasPrice => Medium Gas Price + + Parameters + ---------- + columns: list + list of column names + + Returns + ------- + list with reformatted columns + """ + return [" ".join(re.findall(".[^A-Z]*", val)).capitalize() for val in columns] diff --git a/gamestonk_terminal/cryptocurrency/onchain/bitquery_model.py b/gamestonk_terminal/cryptocurrency/onchain/bitquery_model.py new file mode 100644 index 00000000000..9c9640fcf15 --- /dev/null +++ b/gamestonk_terminal/cryptocurrency/onchain/bitquery_model.py @@ -0,0 +1,667 @@ +"""BitQuery model""" +__docformat__ = "numpy" + +import datetime +import json +import os +from typing import Optional + +import numpy as np +from requests.exceptions import HTTPError +from requests.adapters import HTTPAdapter + +import requests +import pandas as pd +from gamestonk_terminal import config_terminal as cfg + + +class BitQueryApiKeyException(Exception): + """Bit Query Api Key Exception object""" + + def __init__(self, message: str): + super().__init__(message) + self.message = message + + def __str__(self) -> str: + return f"BitQueryApiKeyException: {self.message}" + + +class BitQueryTimeoutException(Exception): + """BitQuery Timeout Exception class""" + + +BQ_URL = "https://graphql.bitquery.io" +CURRENCIES = ["ETH", "USD", "BTC", "USDT"] +DECENTRALIZED_EXCHANGES = [ + "1inch", + "AfroDex", + "AirSwap", + "Amplbitcratic", + "Balancer", + "BestSwap", + "Bitox", + "CellSwap", + "Cellswap", + "Cofix", + "Coinchangex", + "Curve", + "DDEX", + "DUBIex", + "DecentrEx", + "DeversiFi", + "Dodo", + "ETHERCExchange", + "EtherBlockchain", + "EtherDelta", + "Ethernext", + "Ethfinex", + "FEGex", + "FFFSwap", + "Fordex", + "GUDecks", + "GUDeks", + "HiSwap", + "IDEX", + "LedgerDex", + "Matcha", + "Miniswap", + "Mooniswap", + "Oasis", + "OpenRelay", + "S.Finance", + "SakeSwap", + "SeedDex", + "SingularX", + "StarBitEx", + "SushiSwap", + "SwapX", + "SwitchDex", + "TacoSwap", + "TokenJar", + "TokenStore", + "TokenTrove", + "Tokenlon", + "TradexOne", + "Uniswap", + "ZeusSwap", + "dYdX", + "dex.blue", +] +DECENTRALIZED_EXCHANGES_MAP = {e.lower(): e for e in DECENTRALIZED_EXCHANGES} +NETWORKS = ["bsc", "ethereum", "matic"] + + +def _extract_dex_trades(data: dict) -> pd.DataFrame: + """Helper method that extracts from bitquery api response data from nested dictionary: + response = {'ethereum' : {'dexTrades' : }}. If 'dexTrades' is None, raises Exception. + + Parameters + ---------- + data: dict + response data from bitquery api. + + Returns + ------- + pd.DataFrame + normalized pandas data frame with data + """ + + dex_trades = data["ethereum"]["dexTrades"] + if not dex_trades: + raise ValueError("No data was returned in request response\n") + return pd.json_normalize(dex_trades) + + +def query_graph(url: str, query: str) -> dict: + """Helper methods for querying graphql api. [Source: https://bitquery.io/] + + Parameters + ---------- + url: str + Endpoint url + query: str + Graphql query + + Returns + ------- + dict: + Dictionary with response data + """ + + session = requests.Session() + session.mount("https://", HTTPAdapter(max_retries=5)) + headers = {"x-api-key": cfg.API_BITQUERY_KEY} + timeout = 30 + + try: + response = session.post( + url, json={"query": query}, headers=headers, timeout=timeout + ) + except requests.Timeout as e: + raise BitQueryTimeoutException( + f"BitQuery API didn't respond within {timeout} seconds.\n" + ) from e + + if response.status_code == 500: + raise HTTPError(f"Internal sever error {response.reason}") + + if not 200 <= response.status_code < 300: + raise BitQueryApiKeyException( + f"Invalid Authentication: {response.status_code}. " + f"Please visit https://bitquery.io/pricing and generate you free api key\n" + ) + try: + data = response.json() + if "error" in data: + raise ValueError(f"Invalid Response: {data['error']}\n") + except Exception as e: + raise ValueError(f"Invalid Response: {response.text}\n") from e + return data["data"] + + +def get_erc20_tokens() -> pd.DataFrame: + """Helper method that loads ~1500 most traded erc20 token. + [Source: json file] + + Returns + ------- + pd.DataFrame + ERC20 tokens with address, symbol and name + """ + file_path = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "..", "data", "erc20_coins.json" + ) + with open(file_path) as f: + data = json.load(f) + df = pd.json_normalize(data) + df.columns = ["count", "address", "symbol", "name"] + df = df[~df["symbol"].isin(["", None, np.NaN])] + return df[["name", "symbol", "address", "count"]] + + +def find_token_address(token: str) -> Optional[str]: + """Helper methods that search for ERC20 coin base on provided symbol or token address. + If erc20 token address is provided, then function checks if it's proper address and returns it back. + In other case mapping data is loaded from file (or cache), and function lookup for belonging token address. + + Parameters + ---------- + token: str + ERC20 token symbol e.g. UNI, SUSHI, ETH, WBTC or token address e.g. 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + + Returns + ------- + str or None + ERC20 token address, or None if nothing found. + """ + + if token.startswith("0x") and len(token) >= 38: + return token + + if token == "ETH": + return token + + token = "WBTC" if token == "BTC" else token + tokens_map: pd.DataFrame = get_erc20_tokens() + + found_token = tokens_map.loc[tokens_map["symbol"] == token] + if found_token.empty: + return None + if len(found_token) > 1: + return found_token.sort_values(by="count", ascending=False).iloc[0]["address"] + return found_token.iloc[0]["address"] + + +def get_dex_trades_by_exchange( + trade_amount_currency: str = "USD", limit: int = 90 +) -> pd.DataFrame: + """Get trades on Decentralized Exchanges aggregated by DEX [Source: https://graphql.bitquery.io/] + + Parameters + ---------- + trade_amount_currency: str + Currency of displayed trade amount. Default: USD + limit: int + Last n days to query data. Maximum 365 (bigger numbers can cause timeouts + on server side) + + Returns + ------- + pd.DataFrame + Trades on Decentralized Exchanges aggregated by DEX + """ + + dt = (datetime.date.today() - datetime.timedelta(min(limit, 365))).strftime( + "%Y-%m-%d" + ) + + if trade_amount_currency not in CURRENCIES: + trade_amount_currency = "USD" + + query = f""" + {{ + ethereum {{ + dexTrades(options: {{limit: 40, desc: ["count"]}} + date: {{since: "{dt}"}} + ) {{ + exchange {{ + name + }} + count + tradeAmount(in: {trade_amount_currency}) + }} + }} + }} + """ + + data = query_graph(BQ_URL, query) + + df = _extract_dex_trades(data) + df.columns = ["trades", "tradeAmount", "exchange"] + df = df[~df["exchange"].isin([None, np.NaN, ""])] + return df[["exchange", "trades", "tradeAmount"]].sort_values( + by="tradeAmount", ascending=True + ) + + +def get_dex_trades_monthly( + trade_amount_currency: str = "USD", limit: int = 90 +) -> pd.DataFrame: + """Get list of trades on Decentralized Exchanges monthly aggregated. [Source: https://graphql.bitquery.io/] + + Parameters + ---------- + trade_amount_currency: str + Currency of displayed trade amount. Default: USD + limit: int + Last n days to query data. Maximum 365 (bigger numbers can cause timeouts + on server side) + + Returns + ------- + pd.DataFrame + Trades on Decentralized Exchanges monthly aggregated + """ + + if trade_amount_currency not in CURRENCIES: + trade_amount_currency = "USD" + + dt = (datetime.date.today() - datetime.timedelta(min(limit, 365))).strftime( + "%Y-%m-%d" + ) + + query = f""" + {{ + ethereum {{ + dexTrades( + options: {{desc: ["date.year", "date.month", "count"]}} + date: {{since: "{dt}"}} + ) {{ + count + date {{ + month + year + }} + tradeAmount(in: {trade_amount_currency}) + }} + }} + }} + """ + + data = query_graph(BQ_URL, query) + if not data: + return pd.DataFrame() + + df = _extract_dex_trades(data) + df["date"] = df.apply( + lambda x: datetime.date(int(x["date.year"]), int(x["date.month"]), 1), axis=1 + ) + df.rename(columns={"count": "trades"}, inplace=True) + return df[["date", "trades", "tradeAmount"]] + + +def get_daily_dex_volume_for_given_pair( + limit: int = 100, + token: str = "UNI", + vs: str = "USDT", +) -> pd.DataFrame: + """Get daily volume for given pair [Source: https://graphql.bitquery.io/] + + Parameters + ------- + limit: int + Last n days to query data + token: str + ERC20 token symbol + vs: str + Quote currency. + + Returns + ------- + pd.DataFrame + Daily volume for given pair + """ + + dt = (datetime.date.today() - datetime.timedelta(min(limit, 365))).strftime( + "%Y-%m-%d" + ) + + base, quote = find_token_address(token), find_token_address(vs) + if not base or not quote: + raise ValueError("Provided coin or quote currency doesn't exist\n") + + query = f""" + {{ + ethereum(network: ethereum) {{ + dexTrades( + options: {{desc: ["timeInterval.day", "trades"]}} + baseCurrency: {{is: "{base}"}} + quoteCurrency: {{is: "{quote}"}} + date: {{since: "{dt}" }} + ) {{ + timeInterval {{ + day(count: 1) + }} + baseCurrency {{ + symbol + }} + quoteCurrency {{ + symbol + }} + exchange {{ + fullName + }} + trades: count + tradeAmount(in: USD) + quotePrice + maximum_price: quotePrice(calculate: maximum) + minimum_price: quotePrice(calculate: minimum) + open_price: minimum(of: block, get: quote_price) + close_price: maximum(of: block, get: quote_price) + }} + }} + }} + """ + + data = query_graph(BQ_URL, query) + if not data: + return pd.DataFrame() + + df = _extract_dex_trades(data) + df.columns = [ + "trades", + "tradeAmount", + "price", + "high", + "low", + "open", + "close", + "date", + "base", + "quote", + "exchange", + ] + return df[ + [ + "date", + "exchange", + "base", + "quote", + "open", + "high", + "low", + "close", + "tradeAmount", + "trades", + ] + ].sort_values(by="date", ascending=False) + + +def get_token_volume_on_dexes( + token: str = "UNI", + trade_amount_currency: str = "USD", +) -> pd.DataFrame: + """Get token volume on different Decentralized Exchanges. [Source: https://graphql.bitquery.io/] + + Parameters + ---------- + token: str + ERC20 token symbol. + trade_amount_currency: str + Currency to display trade amount in. + + Returns + ------- + pd.DataFrame + Token volume on Decentralized Exchanges + """ + + if trade_amount_currency not in CURRENCIES: + trade_amount_currency = "USD" + + token_address = find_token_address(token) + if token_address is None: + raise ValueError(f"Couldn't find token with symbol {token}\n") + query = f""" + {{ + ethereum {{ + dexTrades( + baseCurrency: {{is:"{token_address}"}} + ) {{ + baseCurrency{{ + symbol + }} + exchange {{ + name + fullName + }} + count + tradeAmount(in: {trade_amount_currency}) + + }} + }} + }} + + """ + + data = query_graph(BQ_URL, query) + if not data: + return pd.DataFrame() + + df = _extract_dex_trades(data)[["exchange.fullName", "tradeAmount", "count"]] + df.columns = ["exchange", "tradeAmount", "trades"] + return df[~df["exchange"].str.startswith("<")].sort_values( + by="tradeAmount", ascending=False + ) + + +def get_ethereum_unique_senders(interval: str = "day", limit: int = 90) -> pd.DataFrame: + """Get number of unique ethereum addresses which made a transaction in given time interval. + + Parameters + ---------- + interval: str + Time interval in which count unique ethereum addresses which made transaction. day, month or week. + limit: int + Number of records for data query. + + Returns + ------- + pd.DataFrame + Unique ethereum addresses which made a transaction + """ + + intervals = { + "day": 1, + "month": 30, + "week": 7, + } + + if interval not in intervals.keys(): + interval = "day" + + days = min(limit * intervals[interval], 90) + + dt = (datetime.date.today() - datetime.timedelta(days)).strftime("%Y-%m-%d") + + query = f""" + {{ + ethereum(network: ethereum) {{ + transactions(options: {{desc: "date.date"}}, date: {{since: "{dt}"}}) {{ + uniqueSenders: count(uniq: senders) + date {{ + date:startOfInterval(unit: {interval}) + }} + averageGasPrice: gasPrice(calculate: average) + mediumGasPrice: gasPrice(calculate: median) + maximumGasPrice: gasPrice(calculate: maximum) + transactions: count + }} + }} + }} + """ + + data = query_graph(BQ_URL, query) + if not data: + return pd.DataFrame() + + df = pd.DataFrame(data["ethereum"]["transactions"]) + df["date"] = df["date"].apply(lambda x: x["date"]) + return df[ + [ + "date", + "uniqueSenders", + "transactions", + "averageGasPrice", + "mediumGasPrice", + "maximumGasPrice", + ] + ] + + +def get_most_traded_pairs( + network: str = "ethereum", exchange: str = "Uniswap", limit: int = 90 +) -> pd.DataFrame: + """Get most traded crypto pairs on given decentralized exchange in chosen time period. + [Source: https://graphql.bitquery.io/] + + Parameters + ---------- + network: str + EVM network. One from list: bsc (binance smart chain), ethereum or matic + exchange: + Decentralized exchange name + limit: + Number of days taken into calculation account. + + Returns + ------- + + """ + + dt = (datetime.date.today() - datetime.timedelta(limit)).strftime("%Y-%m-%d") + exchange = DECENTRALIZED_EXCHANGES_MAP.get(exchange, "Uniswap") + query = f""" + {{ + ethereum(network: {network}){{ + dexTrades(options: {{limit: 100, desc: "tradeAmount"}}, + exchangeName: {{is: "{exchange}"}} + date: {{since: "{dt}"}}) {{ + buyCurrency {{ + symbol + }} + sellCurrency{{ + symbol + }} + trades: count + tradeAmount(in: USD) + }} + }} + }} + """ + data = query_graph(BQ_URL, query) + if not data: + return pd.DataFrame() + + df = _extract_dex_trades(data) + df.columns = ["trades", "tradeAmount", "base", "quoted"] + return df[["base", "quoted", "trades", "tradeAmount"]] + + +def get_spread_for_crypto_pair( + token: str = "WETH", vs: str = "USDT", limit: int = 30 +) -> pd.DataFrame: + """Get an average bid and ask prices, average spread for given crypto pair for chosen time period. + [Source: https://graphql.bitquery.io/] + + Parameters + ---------- + limit: int + Last n days to query data + token: str + ERC20 token symbol + vs: str + Quoted currency. + + Returns + ------- + pd.DataFrame + Average bid and ask prices, spread for given crypto pair for chosen time period + """ + + dt = (datetime.date.today() - datetime.timedelta(limit)).strftime("%Y-%m-%d") + base, quote = find_token_address(token), find_token_address(vs) + + if not base or not quote: + raise ValueError("Provided coin or quote currency doesn't exist\n") + + query = f""" + {{ + ethereum(network: ethereum){{ + dexTrades( + date: {{since:"{dt}"}} + baseCurrency: {{is: "{base}"}}, + quoteCurrency: {{is: "{quote}"}}) {{ + date {{date}} + baseCurrency {{symbol}} + baseAmount + quoteCurrency {{ + symbol + }} + quoteAmount + trades: count + quotePrice + side + }} + }} + }} + """ + data = query_graph(BQ_URL, query) + if not data: + return pd.DataFrame() + + df = _extract_dex_trades(data) + columns = ["quotePrice", "date.date", "baseCurrency.symbol", "quoteCurrency.symbol"] + bids = df.query("side == 'SELL'")[columns] + asks = df.query("side == 'BUY'")[columns] + + bids.columns = ["averageBidPrice", "date", "baseCurrency", "quoteCurrency"] + asks.columns = ["averageAskPrice", "date", "baseCurrency", "quoteCurrency"] + + daily_spread = pd.merge(asks, bids, on=["date", "baseCurrency", "quoteCurrency"]) + daily_spread["dailySpread"] = abs( + daily_spread["averageBidPrice"] - daily_spread["averageAskPrice"] + ) + return daily_spread[ + [ + "date", + "baseCurrency", + "quoteCurrency", + "dailySpread", + "averageBidPrice", + "averageAskPrice", + ] + ].sort_values(by="date", ascending=True) + + +POSSIBLE_CRYPTOS = list(get_erc20_tokens()["symbol"].unique()) diff --git a/gamestonk_terminal/cryptocurrency/onchain/bitquery_view.py b/gamestonk_terminal/cryptocurrency/onchain/bitquery_view.py new file mode 100644 index 00000000000..d83c6402a6d --- /dev/null +++ b/gamestonk_terminal/cryptocurrency/onchain/bitquery_view.py @@ -0,0 +1,398 @@ +"""The BitQuery view""" +__docformat__ = "numpy" + +import os +from tabulate import tabulate + +from gamestonk_terminal.cryptocurrency.dataframe_helpers import ( + very_long_number_formatter, + prettify_column_names, +) +from gamestonk_terminal.cryptocurrency.onchain import bitquery_model +from gamestonk_terminal.helper_funcs import export_data +from gamestonk_terminal import feature_flags as gtff + + +def display_dex_trades( + trade_amount_currency: str = "USD", + kind: str = "dex", + top: int = 20, + days: int = 90, + sortby: str = "tradeAmount", + descend: bool = False, + export: str = "", +) -> None: + """Trades on Decentralized Exchanges aggregated by DEX or Month [Source: https://graphql.bitquery.io/] + + Parameters + ---------- + kind: str + Aggregate trades by dex or time + trade_amount_currency: str + Currency of displayed trade amount. Default: USD + top: int + Number of records to display + sortby: str + Key by which to sort data + descend: bool + Flag to sort data descending + days: int + Last n days to query data. Maximum 365 (bigger numbers can cause timeouts + on server side) + export : str + Export dataframe data to csv,json,xlsx file + """ + + if kind == "time": + df = bitquery_model.get_dex_trades_monthly(trade_amount_currency, days) + df = df.sort_values(by="date", ascending=descend) + else: + df = bitquery_model.get_dex_trades_by_exchange(trade_amount_currency, days) + df = df.sort_values(by=sortby, ascending=descend) + + df_data = df.copy() + + df[["tradeAmount", "trades"]] = df[["tradeAmount", "trades"]].applymap( + lambda x: very_long_number_formatter(x) + ) + + df.columns = prettify_column_names(df.columns) + + if gtff.USE_TABULATE_DF: + print( + tabulate( + df.head(top), + headers=df.columns, + floatfmt=".2f", + showindex=False, + tablefmt="fancy_grid", + ), + "\n", + ) + else: + print(df.to_string, "\n") + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "lt", + df_data, + ) + + +def display_daily_volume_for_given_pair( + token: str = "WBTC", + vs: str = "USDT", + top: int = 20, + sortby: str = "date", + descend: bool = False, + export: str = "", +) -> None: + """Display daily volume for given pair + [Source: https://graphql.bitquery.io/] + + Parameters + ---------- + token: str + ERC20 token symbol or address + vs: str + Quote currency. + top: int + Number of records to display + sortby: str + Key by which to sort data + descend: bool + Flag to sort data descending + export : str + Export dataframe data to csv,json,xlsx file + Returns + ------- + pd.DataFrame + Token volume on different decentralized exchanges + """ + + df = bitquery_model.get_daily_dex_volume_for_given_pair( + token=token, + vs=vs, + limit=top, + ) + + if df.empty: + return + df = df.sort_values(by=sortby, ascending=descend) + + df_data = df.copy() + + df[["tradeAmount", "trades"]] = df[["tradeAmount", "trades"]].applymap( + lambda x: very_long_number_formatter(x) + ) + df.columns = prettify_column_names(df.columns) + + if gtff.USE_TABULATE_DF: + print( + tabulate( + df.head(top), + headers=df.columns, + floatfmt=".2f", + showindex=False, + tablefmt="fancy_grid", + ), + "\n", + ) + else: + print(df.to_string, "\n") + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "dvcp", + df_data, + ) + + +def display_dex_volume_for_token( + token: str = "WBTC", + trade_amount_currency: str = "USD", + top: int = 10, + sortby: str = "tradeAmount", + descend: bool = False, + export: str = "", +) -> None: + """Display token volume on different Decentralized Exchanges. [Source: https://graphql.bitquery.io/] + + Parameters + ---------- + token: str + ERC20 token symbol or address + trade_amount_currency: str + Currency of displayed trade amount. Default: USD + top: int + Number of records to display + sortby: str + Key by which to sort data + descend: bool + Flag to sort data descending + export : str + Export dataframe data to csv,json,xlsx file + Returns + ------- + pd.DataFrame + Token volume on different decentralized exchanges + """ + + df = bitquery_model.get_token_volume_on_dexes( + token=token, + trade_amount_currency=trade_amount_currency, + ).sort_values(by=sortby, ascending=descend) + + df_data = df.copy() + df[["tradeAmount", "trades"]] = df[["tradeAmount", "trades"]].applymap( + lambda x: very_long_number_formatter(x) + ) + + df.columns = prettify_column_names(df.columns) + + if gtff.USE_TABULATE_DF: + print( + tabulate( + df.head(top), + headers=df.columns, + floatfmt=".2f", + showindex=False, + tablefmt="fancy_grid", + ), + "\n", + ) + else: + print(df.to_string, "\n") + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "tv", + df_data, + ) + + +def display_ethereum_unique_senders( + interval: str = "days", + limit: int = 10, + sortby: str = "date", + descend: bool = False, + export: str = "", +) -> None: + """Display number of unique ethereum addresses which made a transaction in given time interval + [Source: https://graphql.bitquery.io/] + + Parameters + ---------- + interval: str + Time interval in which ethereum address made transaction. month, week or day + limit: int + Number of records to display. It's calculated base on provided interval. + If interval is month then calculation is made in the way: limit * 30 = time period, + in case if interval is set to week, then time period is calculated as limit * 7. + For better user experience maximum time period in days is equal to 90. + sortby: str + Key by which to sort data + descend: bool + Flag to sort data descending + export : str + Export dataframe data to csv,json,xlsx file + Returns + ------- + pd.DataFrame + Number of unique ethereum addresses which made a transaction in given time interval + """ + + df = bitquery_model.get_ethereum_unique_senders(interval, limit).sort_values( + by=sortby, ascending=descend + ) + + df[["uniqueSenders", "transactions", "maximumGasPrice"]] = df[ + ["uniqueSenders", "transactions", "maximumGasPrice"] + ].applymap(lambda x: very_long_number_formatter(x)) + + df_data = df.copy() + df.columns = prettify_column_names(df.columns) + + if gtff.USE_TABULATE_DF: + print( + tabulate( + df, + headers=df.columns, + floatfmt=".2f", + showindex=False, + tablefmt="fancy_grid", + ), + "\n", + ) + else: + print(df.to_string, "\n") + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "ueat", + df_data, + ) + + +def display_most_traded_pairs( + exchange="Uniswap", + days: int = 10, + top: int = 10, + sortby: str = "tradeAmount", + descend: bool = False, + export: str = "", +) -> None: + """Display most traded crypto pairs on given decentralized exchange in chosen time period. + [Source: https://graphql.bitquery.io/] + + Parameters + ---------- + exchange: + Decentralized exchange name + days: + Number of days taken into calculation account. + sortby: str + Key by which to sort data + descend: bool + Flag to sort data descending + export : str + Export dataframe data to csv,json,xlsx file + Returns + ------- + pd.DataFrame + Most traded crypto pairs on given decentralized exchange in chosen time period. + """ + + df = bitquery_model.get_most_traded_pairs( + exchange=exchange, limit=days + ).sort_values(by=sortby, ascending=descend) + df_data = df.copy() + df[["tradeAmount", "trades"]] = df[["tradeAmount", "trades"]].applymap( + lambda x: very_long_number_formatter(x) + ) + df.columns = prettify_column_names(df.columns) + + if gtff.USE_TABULATE_DF: + print( + tabulate( + df.head(top), + headers=df.columns, + floatfmt=".2f", + showindex=False, + tablefmt="fancy_grid", + ), + "\n", + ) + else: + print(df.to_string, "\n") + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "ttcp", + df_data, + ) + + +def display_spread_for_crypto_pair( + token="ETH", + vs="USDC", + days: int = 10, + sortby: str = "date", + descend: bool = False, + export: str = "", +) -> None: + """Display an average bid and ask prices, average spread for given crypto pair for chosen time period. + [Source: https://graphql.bitquery.io/] + + Parameters + ---------- + days: int + Last n days to query data + token: str + ERC20 token symbol + vs: str + Quoted currency. + sortby: str + Key by which to sort data + descend: bool + Flag to sort data descending + export : str + Export dataframe data to csv,json,xlsx file + + Returns + ------- + pd.DataFrame + Average bid and ask prices, spread for given crypto pair for chosen time period + """ + + df = bitquery_model.get_spread_for_crypto_pair( + token=token, vs=vs, limit=days + ).sort_values(by=sortby, ascending=descend) + + df.columns = prettify_column_names(df.columns) + + if gtff.USE_TABULATE_DF: + print( + tabulate( + df, + headers=df.columns, + floatfmt=".2f", + showindex=False, + tablefmt="fancy_grid", + ), + "\n", + ) + else: + print(df.to_string, "\n") + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "baas", + df, + ) diff --git a/gamestonk_terminal/cryptocurrency/onchain/onchain_controller.py b/gamestonk_terminal/cryptocurrency/onchain/onchain_controller.py index 1fc5ec63df6..c988868ec1b 100644 --- a/gamestonk_terminal/cryptocurrency/onchain/onchain_controller.py +++ b/gamestonk_terminal/cryptocurrency/onchain/onchain_controller.py @@ -4,6 +4,7 @@ __docformat__ = "numpy" # pylint: disable=C0302 import argparse +import difflib from typing import List from prompt_toolkit.completion import NestedCompleter @@ -17,12 +18,15 @@ from gamestonk_terminal.helper_funcs import ( check_int_range, try_except, system_clear, + EXPORT_ONLY_RAW_DATA_ALLOWED, ) from gamestonk_terminal.cryptocurrency.onchain import ( ethgasstation_view, whale_alert_view, ethplorer_view, + bitquery_view, + bitquery_model, ) @@ -64,6 +68,12 @@ class OnchainController: "prices", "address", "active", + "lt", + "dvcp", + "tv", + "ueat", + "ttcp", + "baas", ] CHOICES += CHOICES_COMMANDS @@ -205,6 +215,7 @@ class OnchainController: "to", ], ) + parser.add_argument( "--descend", action="store_false", @@ -366,6 +377,7 @@ class OnchainController: "tokenSymbol", ], ) + parser.add_argument( "--descend", action="store_false", @@ -431,6 +443,7 @@ class OnchainController: default="timestamp", choices=["timestamp", "transactionHash", "token", "value"], ) + parser.add_argument( "--descend", action="store_false", @@ -499,6 +512,7 @@ class OnchainController: "share", ], ) + parser.add_argument( "--descend", action="store_false", @@ -682,6 +696,7 @@ class OnchainController: "value", ], ) + parser.add_argument( "--descend", action="store_false", @@ -801,6 +816,7 @@ class OnchainController: "low", ], ) + parser.add_argument( "--descend", action="store_false", @@ -835,6 +851,585 @@ class OnchainController: except Exception as e: print(e) + def call_lt(self, other_args: List[str]): + """Process lt command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="lt", + description=""" + Display Trades on Decentralized Exchanges aggregated by DEX or Month + [Source: https://graphql.bitquery.io/] + """, + ) + + parser.add_argument( + "-k", + "--kind", + dest="kind", + type=str, + help="Aggregate trades by dex or time Default: dex", + default="dex", + choices=["dex", "time"], + ) + + parser.add_argument( + "-vs", + "--vs", + dest="vs", + type=str, + help="Currency of displayed trade amount.", + default="USD", + choices=bitquery_model.CURRENCIES, + ) + + parser.add_argument( + "-t", + "--top", + dest="top", + type=check_positive, + help="top N number records", + default=10, + ) + + parser.add_argument( + "-d", + "--days", + dest="days", + type=check_positive, + help="Number of days to display data for.", + default=90, + ) + + parser.add_argument( + "-s", + "--sort", + dest="sortby", + type=str, + help="Sort by given column. Default: tradeAmount. For monthly trades date.", + default="tradeAmount", + choices=["trades", "tradeAmount", "exchange"], + ) + + parser.add_argument( + "--descend", + action="store_false", + help="Flag to sort in descending order (lowest first)", + dest="descend", + default=False, + ) + + try: + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if not ns_parser: + return + + bitquery_view.display_dex_trades( + kind=ns_parser.kind, + trade_amount_currency=ns_parser.vs, + top=ns_parser.top, + days=ns_parser.days, + sortby=ns_parser.sortby, + descend=ns_parser.descend, + export=ns_parser.export, + ) + + except Exception as e: + print(e) + + def call_dvcp(self, other_args: List[str]): + """Process dvcp command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="dvcp", + description=""" + Display daily volume for given crypto pair + [Source: https://graphql.bitquery.io/] + """, + ) + + parser.add_argument( + "-c", + "--coin", + dest="coin", + type=str, + help="ERC20 token symbol or address.", + required="-h" not in other_args, + ) + + parser.add_argument( + "-t", + "--top", + dest="top", + type=check_positive, + help="top N number records", + default=10, + ) + + parser.add_argument( + "-vs", "--vs", dest="vs", type=str, help="Quote currency", default="USDT" + ) + + parser.add_argument( + "-d", + "--days", + dest="days", + type=check_positive, + help="Number of days to display data for.", + default=10, + ) + + parser.add_argument( + "-s", + "--sort", + dest="sortby", + type=str, + help="Sort by given column.", + default="date", + choices=[ + "date", + "exchange", + "base", + "quote", + "open", + "high", + "low", + "close", + "tradeAmount", + "trades", + ], + ) + + parser.add_argument( + "--descend", + action="store_false", + help="Flag to sort in descending order (lowest first)", + dest="descend", + default=False, + ) + + try: + if other_args: + if not other_args[0][0] == "-": + other_args.insert(0, "-c") + + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if not ns_parser: + return + + bitquery_view.display_daily_volume_for_given_pair( + token=ns_parser.coin, + vs=ns_parser.vs, + top=ns_parser.days, + sortby=ns_parser.sortby, + descend=ns_parser.descend, + export=ns_parser.export, + ) + + except Exception as e: + print(e) + + def call_tv(self, other_args: List[str]): + """Process tv command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="tv", + description=""" + Display token volume on different Decentralized Exchanges. + [Source: https://graphql.bitquery.io/] + """, + ) + + parser.add_argument( + "-c", + "--coin", + dest="coin", + type=str, + help="ERC20 token symbol or address.", + required="-h" not in other_args, + ) + + parser.add_argument( + "-vs", + "--vs", + dest="vs", + type=str, + help="Currency of displayed trade amount.", + default="USD", + choices=bitquery_model.CURRENCIES, + ) + + parser.add_argument( + "-t", + "--top", + dest="top", + type=check_positive, + help="top N number records", + default=10, + ) + + parser.add_argument( + "-s", + "--sort", + dest="sortby", + type=str, + help="Sort by given column.", + default="trades", + choices=["exchange", "tradeAmount", "trades"], + ) + + parser.add_argument( + "--descend", + action="store_false", + help="Flag to sort in descending order (lowest first)", + dest="descend", + default=False, + ) + + try: + if other_args: + if not other_args[0][0] == "-": + other_args.insert(0, "-c") + + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if not ns_parser: + return + + bitquery_view.display_dex_volume_for_token( + token=ns_parser.coin, + trade_amount_currency=ns_parser.vs, + top=ns_parser.top, + sortby=ns_parser.sortby, + descend=ns_parser.descend, + export=ns_parser.export, + ) + + except Exception as e: + print(e) + + def call_ueat(self, other_args: List[str]): + """Process ueat command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="ueat", + description=""" + Display number of unique ethereum addresses which made a transaction in given time interval, + [Source: https://graphql.bitquery.io/] + """, + ) + + parser.add_argument( + "-t", + "--top", + dest="top", + type=check_positive, + help="top N number records. (Maximum available time period is 90 days." + "Depending on chosen time period, top N records will be recalculated. E.g." + "For interval: month, and top: 10, period of calculation equals to 300, " + "but because of max days limit: 90, it will only return last 3 months (3 records). ", + default=10, + ) + + parser.add_argument( + "-s", + "--sort", + dest="sortby", + type=str, + help="Sort by given column.", + default="date", + choices=[ + "date", + "uniqueSenders", + "transactions", + "averageGasPrice", + "mediumGasPrice", + "maximumGasPrice", + ], + ) + + parser.add_argument( + "-i", + "--interval", + dest="interval", + type=str, + help="Time interval in which ethereum address made transaction. month, week or day. " + "Maximum time period is 90 days (3 months, 14 weeks)", + default="day", + choices=["day", "month", "week"], + ) + + parser.add_argument( + "--descend", + action="store_false", + help="Flag to sort in descending order (lowest first)", + dest="descend", + default=False, + ) + + try: + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if not ns_parser: + return + + bitquery_view.display_ethereum_unique_senders( + interval=ns_parser.interval, + limit=ns_parser.top, + sortby=ns_parser.sortby, + descend=ns_parser.descend, + export=ns_parser.export, + ) + + except Exception as e: + print(e) + + def call_ttcp(self, other_args: List[str]): + """Process ttcp command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="ttcp", + description=""" + Display most traded crypto pairs on given decentralized exchange in chosen time period. + [Source: https://graphql.bitquery.io/] + """, + ) + + parser.add_argument( + "-t", + "--top", + dest="top", + type=check_positive, + help="top N number records", + default=10, + ) + + parser.add_argument( + "-e", + "--exchange", + dest="exchange", + type=str, + help="Decentralized exchange name.", + ) + + parser.add_argument( + "-d", + "--days", + dest="days", + type=check_positive, + help="Number of days to display data for.", + default=30, + ) + + parser.add_argument( + "-s", + "--sort", + dest="sortby", + type=str, + help="Sort by given column.", + default="tradeAmount", + choices=["base", "quoted", "trades", "tradeAmount"], + ) + + parser.add_argument( + "--descend", + action="store_false", + help="Flag to sort in descending order (lowest first)", + dest="descend", + default=False, + ) + + if other_args: + if "-" not in other_args[0]: + other_args.insert(0, "-e") + + try: + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if not ns_parser: + return + + exchange = "Uniswap" + if ns_parser.exchange: + if ns_parser.exchange in bitquery_model.DECENTRALIZED_EXCHANGES: + exchange = ns_parser.exchange + else: + similar_cmd = difflib.get_close_matches( + ns_parser.exchange, + bitquery_model.DECENTRALIZED_EXCHANGES, + n=1, + cutoff=0.75, + ) + + if similar_cmd: + print(f"Replacing by '{similar_cmd[0]}'") + exchange = similar_cmd[0] + + else: + similar_cmd = difflib.get_close_matches( + ns_parser.exchange, + bitquery_model.DECENTRALIZED_EXCHANGES, + n=1, + cutoff=0.5, + ) + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?") + return + print( + f"Couldn't find any exchange with provided name: {ns_parser.exchange}. " + f"Please choose one from list: {bitquery_model.DECENTRALIZED_EXCHANGES}\n" + ) + return + else: + print("Exchange not provided setting default to Uniswap.\n") + + bitquery_view.display_most_traded_pairs( + days=ns_parser.days, + top=ns_parser.top, + exchange=exchange, + sortby=ns_parser.sortby, + descend=ns_parser.descend, + export=ns_parser.export, + ) + + except Exception as e: + print(e) + + def call_baas(self, other_args: List[str]): + """Process baas command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="baas", + description=""" + Display average bid, ask prices, spread for given crypto pair for chosen time period + [Source: https://graphql.bitquery.io/] + """, + ) + + parser.add_argument( + "-c", + "--coin", + dest="coin", + type=str, + help="ERC20 token symbol or address.", + ) + + parser.add_argument( + "-vs", "--vs", dest="vs", type=str, help="Quote currency", default="USDT" + ) + + parser.add_argument( + "-d", + "--days", + dest="days", + type=check_positive, + help="Number of days to display data for.", + default=10, + ) + + parser.add_argument( + "-s", + "--sort", + dest="sortby", + type=str, + help="Sort by given column.", + default="date", + choices=[ + "date", + "baseCurrency", + "quoteCurrency", + "dailySpread", + "averageBidPrice", + "averageAskPrice", + ], + ) + + parser.add_argument( + "--descend", + action="store_false", + help="Flag to sort in descending order (lowest first)", + dest="descend", + default=False, + ) + + try: + if other_args: + if not other_args[0][0] == "-": + other_args.insert(0, "-c") + + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if not ns_parser: + return + + if ns_parser.coin: + if ns_parser.coin in bitquery_model.POSSIBLE_CRYPTOS: + bitquery_view.display_spread_for_crypto_pair( + token=ns_parser.coin, + vs=ns_parser.vs, + days=ns_parser.days, + sortby=ns_parser.sortby, + descend=ns_parser.descend, + export=ns_parser.export, + ) + + else: + print(f"Coin '{ns_parser.coin}' does not exist.") + if ns_parser.coin.upper() == "BTC": + token = "WBTC" + else: + similar_cmd = difflib.get_close_matches( + ns_parser.coin, + bitquery_model.POSSIBLE_CRYPTOS, + n=1, + cutoff=0.75, + ) + token = similar_cmd[0] + if similar_cmd[0]: + print(f"Replacing by '{token}'") + bitquery_view.display_spread_for_crypto_pair( + token=token, + vs=ns_parser.vs, + days=ns_parser.days, + sortby=ns_parser.sortby, + descend=ns_parser.descend, + export=ns_parser.export, + ) + else: + similar_cmd = difflib.get_close_matches( + ns_parser.coin, + bitquery_model.POSSIBLE_CRYPTOS, + n=1, + cutoff=0.5, + ) + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?") + + else: + print("You didn't provide coin symbol.\n") + return + except Exception as e: + print(e) + def print_help(self): """Print help""" help_text = """ @@ -849,6 +1444,14 @@ Eth Gas Station: Whale Alert: whales check crypto wales transactions + +BitQuery: + lt last trades by dex or month + dvcp daily volume for crypto pair + tv token volume on DEXes + ueat unique ethereum addresses which made a transaction + ttcp top traded crypto pairs on given decentralized exchange + baas bid, ask prices, average spread for given crypto pair """ help_text += f"\nEthereum address: {self.address if self.address else '?'}" help_text += ( @@ -887,9 +1490,15 @@ def menu(): while True: # Get input command from user if session and gtff.USE_PROMPT_TOOLKIT: - completer = NestedCompleter.from_nested_dict( - {c: None for c in onchain_controller.CHOICES} - ) + choices: dict = {c: {} for c in onchain_controller.CHOICES} + choices["ttcp"] = {c: None for c in bitquery_model.DECENTRALIZED_EXCHANGES} + + choices["baas"]["-c"] = {c: None for c in bitquery_model.POSSIBLE_CRYPTOS} + choices["baas"]["--coin"] = { + c: None for c in bitquery_model.POSSIBLE_CRYPTOS + } + + completer = NestedCompleter.from_nested_dict(choices) an_input = session.prompt( f"{get_flair()} (crypto)>(onchain)> ", completer=completer, diff --git a/gamestonk_terminal/terminal_helper.py b/gamestonk_terminal/terminal_helper.py index a8fe63d383b..e6ead83956a 100644 --- a/gamestonk_terminal/terminal_helper.py +++ b/gamestonk_terminal/terminal_helper.py @@ -240,7 +240,27 @@ def check_api_keys(): key_dict["BINANCE"] = "Not defined" else: key_dict["BINANCE"] = "defined, not tested" - + # BitQuery keys + bitquery = cfg.API_BITQUERY_KEY + if "REPLACE_ME" in bitquery: + key_dict["BITQUERY"] = "Not defined" + else: + headers = {"x-api-key": cfg.API_BITQUERY_KEY} + query = """ + { + ethereum { + dexTrades(options: {limit: 10, desc: "count"}) { + count + protocol + }}} + """ + r = requests.post( + "https://graphql.bitquery.io", json={"query": query}, headers=headers + ) + if r.status_code == 200: + key_dict["BITQUERY"] = "defined, test passed" + else: + key_dict["BITQUERY"] = "defined, test failed" # SentimentInvestor keys si_keys = [cfg.API_SENTIMENTINVESTOR_KEY, cfg.API_SENTIMENTINVESTOR_TOKEN] if "REPLACE_ME" in si_keys: diff --git a/website/content/cryptocurrency/onchain/baas/_index.md b/website/content/cryptocurrency/onchain/baas/_index.md new file mode 100644 index 00000000000..9e0084e3909 --- /dev/null +++ b/website/content/cryptocurrency/onchain/baas/_index.md @@ -0,0 +1,23 @@ +``` +usage: baas [-c COIN] [-t TOP] [-vs VS] [-d DAYS] + [-s {date,baseCurrency,quoteCurrency,dailySpread,averageBidPrice,averageAskPrice}] + [--descend] [-h] [--export {csv,json,xlsx}] +``` + +Display average bid, ask prices, spread for given crypto pair for chosen time +period [Source: https://graphql.bitquery.io/] + +``` +optional arguments: + -c COIN, --coin COIN ERC20 token symbol or address. (default: None) + -t TOP, --top TOP top N number records (default: 10) + -vs VS, --vs VS Quote currency (default: USDT) + -d DAYS, --days DAYS Number of days to display data for. (default: 10) + -s {date,baseCurrency,quoteCurrency,dailySpread,averageBidPrice,averageAskPrice}, --sort {date,baseCurrency,quoteCurrency,dailySpread,averageBidPrice,averageAskPrice} + Sort by given column. (default: date) + --descend Flag to sort in descending order (lowest first) + (default: False) + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) +``` diff --git a/website/content/cryptocurrency/onchain/dvcp/_index.md b/website/content/cryptocurrency/onchain/dvcp/_index.md new file mode 100644 index 00000000000..818ec7a8fa6 --- /dev/null +++ b/website/content/cryptocurrency/onchain/dvcp/_index.md @@ -0,0 +1,22 @@ +``` +usage: tv [-c COIN] [-vs {ETH,USD,BTC,USDT}] [-t TOP] + [-s {exchange,tradeAmount,trades}] [--descend] [-h] + [--export {csv,json,xlsx}] +``` + +Display daily volume for given crypto pair [Source: https://graphql.bitquery.io/] + +``` +optional arguments: + -c COIN, --coin COIN ERC20 token symbol or address. (default: None) + -vs {ETH,USD,BTC,USDT}, --vs {ETH,USD,BTC,USDT} + Currency of displayed trade amount. (default: USD) + -t TOP, --top TOP top N number records (default: 10) + -s {exchange,tradeAmount,trades}, --sort {exchange,tradeAmount,trades} + Sort by given column. (default: trades) + --descend Flag to sort in descending order (lowest first) + (default: False) + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) +``` diff --git a/website/content/cryptocurrency/onchain/lt/_index.md b/website/content/cryptocurrency/onchain/lt/_index.md new file mode 100644 index 00000000000..e118e960c02 --- /dev/null +++ b/website/content/cryptocurrency/onchain/lt/_index.md @@ -0,0 +1,26 @@ +``` +usage: lt [-k {dex,time}] [-vs {ETH,USD,BTC,USDT}] [-t TOP] [-d DAYS] + [-s {trades,tradeAmount,exchange}] [--descend] [-h] + [--export {csv,json,xlsx}] +``` + +Display Trades on Decentralized Exchanges aggregated by DEX or Month [Source: https://graphql.bitquery.io/] + +``` +optional arguments: + -k {dex,time}, --kind {dex,time} + Aggregate trades by dex or time Default: dex (default: + dex) + -vs {ETH,USD,BTC,USDT}, --vs {ETH,USD,BTC,USDT} + Currency of displayed trade amount. (default: USD) + -t TOP, --top TOP top N number records (default: 10) + -d DAYS, --days DAYS Number of days to display data for. (default: 90) + -s {trades,tradeAmount,exchange}, --sort {trades,tradeAmount,exchange} + Sort by given column. Default: tradeAmount. For + monthly trades date. (default: tradeAmount) + --descend Flag to sort in descending order (lowest first) + (default: False) + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) +``` diff --git a/website/content/cryptocurrency/onchain/ttcp/_index.md b/website/content/cryptocurrency/onchain/ttcp/_index.md new file mode 100644 index 00000000000..1ca8fc41e4f --- /dev/null +++ b/website/content/cryptocurrency/onchain/ttcp/_index.md @@ -0,0 +1,28 @@ +``` +usage: ttcp [-t TOP] + [-e {1inch,afrodex,airswap,amplbitcratic,balancer,bestswap,bitox,cellswap,cofix,coinchangex,curve,ddex,dubiex,decentrex,deversifi,dodo,ethercexchange,etherblockchain,etherdelta,ethernext,ethfinex,fegex,fffswap,fordex,gudecks,gudeks,hiswap,idex,ledgerdex,mat +cha,miniswap,mooniswap,oasis,openrelay,s.finance,sakeswap,seeddex,singularx,starbitex,sushiswap,swapx,switchdex,tacoswap,tokenjar,tokenstore,tokentrove,tokenlon,tradexone,uniswap,zeusswap,dydx,dex.blue}] + [-d DAYS] [-s {base,quoted,trades,tradeAmount}] [--descend] [-h] + [--export {csv,json,xlsx}] +``` + +Display most traded crypto pairs on given decentralized exchange in chosen +time period [Source: https://graphql.bitquery.io/] + +``` +optional arguments: + -t TOP, --top TOP top N number records (default: 10) + -e {1inch,afrodex,airswap,amplbitcratic,balancer,bestswap,bitox,cellswap,cofix,coinchangex,curve,ddex,dubiex,decentrex,deversifi,dodo,ethercexchange,etherblockchain,etherdelta,ethernext,ethfinex,fegex,fffswap,fordex,gudecks,gudeks,hiswap,idex,ledgerdex,matcha,miniswa +p,mooniswap,oasis,openrelay,s.finance,sakeswap,seeddex,singularx,starbitex,sushiswap,swapx,switchdex,tacoswap,tokenjar,tokenstore,tokentrove,tokenlon,tradexone,uniswap,zeusswap,dydx,dex.blue}, --exchange {1inch,afrodex,airswap,amplbitcratic,balancer,bestswap,bitox,cell +swap,cofix,coinchangex,curve,ddex,dubiex,decentrex,deversifi,dodo,ethercexchange,etherblockchain,etherdelta,ethernext,ethfinex,fegex,fffswap,fordex,gudecks,gudeks,hiswap,idex,ledgerdex,matcha,miniswap,mooniswap,oasis,openrelay,s.finance,sakeswap,seeddex,singularx,starb +itex,sushiswap,swapx,switchdex,tacoswap,tokenjar,tokenstore,tokentrove,tokenlon,tradexone,uniswap,zeusswap,dydx,dex.blue} + Decentralized exchange name. (default: Uniswap) + -d DAYS, --days DAYS Number of days to display data for. (default: 30) + -s {base,quoted,trades,tradeAmount}, --sort {base,quoted,trades,tradeAmount} + Sort by given column. (default: tradeAmount) + --descend Flag to sort in descending order (lowest first) + (default: False) + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) +``` diff --git a/website/content/cryptocurrency/onchain/tv/_index.md b/website/content/cryptocurrency/onchain/tv/_index.md new file mode 100644 index 00000000000..b0fa25d0889 --- /dev/null +++ b/website/content/cryptocurrency/onchain/tv/_index.md @@ -0,0 +1,23 @@ +``` +usage: volt [-c COIN] [-vs {ETH,USD,BTC,USDT}] [-t TOP] + [-s {exchange,coin,tradeAmount,trades}] [--descend] [-h] + [--export {csv,json,xlsx}] +``` + +Display token volume on different Decentralized Exchanges [Source: https://graphql.bitquery.io/] + +``` +optional arguments: + -c COIN, --coin COIN ERC20 token symbol or address. (default: ETH) + -vs {ETH,USD,BTC,USDT}, --vs {ETH,USD,BTC,USDT} + Currency of displayed trade amount. (default: USD) + -t TOP, --top TOP top N number records (default: 10) + -s {exchange,coin,tradeAmount,trades}, --sort {exchange,coin,tradeAmount,trades} + Sort by given column. (default: trades) + --descend Flag to sort in descending order (lowest first) + (default: False) + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) + +``` diff --git a/website/content/cryptocurrency/onchain/ueat/_index.md b/website/content/cryptocurrency/onchain/ueat/_index.md new file mode 100644 index 00000000000..d8f5f53dcbd --- /dev/null +++ b/website/content/cryptocurrency/onchain/ueat/_index.md @@ -0,0 +1,30 @@ +``` +usage: ueat [-t TOP] + [-s {date,uniqueSenders,transactions,averageGasPrice,mediumGasPrice,maximumGasPrice}] + [-i {day,month,week}] [--descend] [-h] [--export {csv,json,xlsx}] +``` + +Display number of unique ethereum addresses which made a transaction in given +time interval [Source: https://graphql.bitquery.io/] + +``` +optional arguments: + -t TOP, --top TOP top N number records. (Maximum available time period + is 90 days.Depending on chosen time period, top N + records will be recalculated. E.g.For interval: month, + and top: 10, period of calculation equals to 300, but + because of max days limit: 90, it will only return + last 3 months (3 records). (default: 10) + -s {date,uniqueSenders,transactions,averageGasPrice,mediumGasPrice,maximumGasPrice}, --sort {date,uniqueSenders,transactions,averageGasPrice,mediumGasPrice,maximumGasPrice} + Sort by given column. (default: date) + -i {day,month,week}, --interval {day,month,week} + Time interval in which ethereum address made + transaction. month, week or day. Maximum time period + is 90 days (3 months, 14 weeks) (default: day) + --descend Flag to sort in descending order (lowest first) + (default: False) + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) + +``` diff --git a/website/data/menu/main.yml b/website/data/menu/main.yml index 033a2fe0076..9f38566b14d 100755 --- a/website/data/menu/main.yml +++ b/website/data/menu/main.yml @@ -766,6 +766,38 @@ main: sub: - name: gwei ref: "/cryptocurrency/onchain/gwei" + - name: address + ref: "/cryptocurrency/onchain/address" + - name: balance + ref: "/cryptocurrency/onchain/balance" + - name: hist + ref: "/cryptocurrency/onchain/hist" + - name: holders + ref: "/cryptocurrency/onchain/holders" + - name: info + ref: "/cryptocurrency/onchain/info" + - name: ttcp + ref: "/cryptocurrency/onchain/ttcp" + - name: prices + ref: "/cryptocurrency/onchain/prices" + - name: ueat + ref: "/cryptocurrency/onchain/ueat" + - name: baas + ref: "/cryptocurrency/onchain/baas" + - name: th + ref: "/cryptocurrency/onchain/th" + - name: top + ref: "/cryptocurrency/onchain/top" + - name: lt + ref: "/cryptocurrency/onchain/lt" + - name: tx + ref: "/cryptocurrency/onchain/tx" + - name: dvcp + ref: "/cryptocurrency/onchain/dvcp" + - name: tv + ref: "/cryptocurrency/onchain/tv" + - name: whales + ref: "/cryptocurrency/onchain/whales" - name: nft ref: "/cryptocurrency/nft" sub: