diff --git a/.eslintrc.json b/.eslintrc.json index bd602e3b..70dcee1a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,29 +4,64 @@ }, "extends": "airbnb", "parser": "@babel/eslint-parser", + "requireconfigfile": false, "plugins": [ "@babel" ], "rules": { "func-names": 0, "no-nested-ternary": 0, - "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }], + "react/jsx-filename-extension": [ + 1, + { + "extensions": [ + ".js", + ".jsx" + ] + } + ], "max-len": 0, - "arrow-parens": ["error", "always"], + "arrow-parens": [ + "error", + "always" + ], "no-underscore-dangle": 0, "operator-linebreak": 0, - "comma-dangle": ["error", { - "arrays": "always-multiline", - "objects": "always-multiline", - "imports": "always-multiline", - "exports": "always-multiline", - "functions": "never" - }], - "no-use-before-define": ["error", "nofunc"], - "no-empty": ["error", { "allowEmptyCatch": true }], + "comma-dangle": [ + "error", + { + "arrays": "always-multiline", + "objects": "always-multiline", + "imports": "always-multiline", + "exports": "always-multiline", + "functions": "never" + } + ], + "no-use-before-define": [ + "error", + "nofunc" + ], + "no-empty": [ + "error", + { + "allowEmptyCatch": true + } + ], "react/forbid-prop-types": 0, - "no-mixed-operators": ["error", { "allowSamePrecedence": true }], - "indent": ["error", 2, { "flatTernaryExpressions": true, "SwitchCase": 1 }] + "no-mixed-operators": [ + "error", + { + "allowSamePrecedence": true + } + ], + "indent": [ + "error", + 2, + { + "flatTernaryExpressions": false, + "SwitchCase": 1 + } + ] }, "settings": { "import/resolver": { diff --git a/constants/AppConstants.js b/constants/AppConstants.js index 4e627887..38274100 100644 --- a/constants/AppConstants.js +++ b/constants/AppConstants.js @@ -5,8 +5,24 @@ const BASE_API_DOMAIN = IS_DEV ? 'http://localhost:3000' : 'https://api.curve.fi const REWARD_TOKENS_REPLACE_MAP = { }; +/** + * Flip to true to force using fallback data for thegraph (fallback data ideally + * needs to be updated ahead of time if issues are predictable, e.g. planned maintenance). + * Fallback data will already be used automatically if any thegraph request is failing, + * so using that flip shouldn't be necessary at all. + */ +const USE_FALLBACK_THEGRAPH_DATA = false; + +// Flip to true in order to easily populate thegraph fallback data: each +// place that's querying thegraph will dump its output, prefixed with +// "FALLBACK_THEGRAPH_DATA_POPULATE_MODE" and the filename where to store +// this data, in order to update that filename easily. +const FALLBACK_THEGRAPH_DATA_POPULATE_MODE = false; + module.exports = { IS_DEV, REWARD_TOKENS_REPLACE_MAP, BASE_API_DOMAIN, + USE_FALLBACK_THEGRAPH_DATA, + FALLBACK_THEGRAPH_DATA_POPULATE_MODE, }; diff --git a/constants/CoinAddressCoingeckoIdMap.js b/constants/CoinAddressCoingeckoIdMap.js index 51474d64..c43bbb1e 100644 --- a/constants/CoinAddressCoingeckoIdMap.js +++ b/constants/CoinAddressCoingeckoIdMap.js @@ -79,6 +79,7 @@ export default { '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee': 'ethereum', // Native ETH '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1': 'dai', '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8': 'usd-coin', + '0xaf88d065e77c8cC2239327C5EDb3A432268e5831': 'usd-coin', '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9': 'tether', '0x82e64f49ed5ec1bc6e43dad4fc8af9bb3a2312ee': 'dai', '0x625e7708f30ca75bfd92586e17077590c60eb4cd': 'usd-coin', @@ -130,6 +131,10 @@ export default { '0x049d68029688eabf473097a2fc38ef61633a3c7a': 'tether', // fUSDT '0x1e4f97b9f9f913c46f1632781732927b9019c68b': 'curve-dao-token', // CRV '0xC931f61B1534EB21D8c11B24f3f5Ab2471d4aB50': 'binance-usd', // BUSD + '0x0ac7e2f9f78de2ccc467139d43b6f32473454dd9': 'tether', // sUSDT_BSC, base price for price inferences on eywa facto pools + '0xE35177E61d09bFDb61Ea29db92d19B5E05EdDa8f': 'usd-coin', // sUSDC_BSC, base price for price inferences on eywa facto pools + '0x88486E058865611c939D1077725F293378E7bD75': 'dai', // sDAI_BSC, base price for price inferences on eywa facto pools + '0xC4417bE9c9b3f682fd03224A4B29e01CE34602fE': 'true-usd', // sTUSD_BSC, base price for price inferences on eywa facto pools }, optimism: { '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee': 'ethereum', // Native ETH @@ -175,4 +180,12 @@ export default { '0x88eeC49252c8cbc039DCdB394c0c2BA2f1637EA0': 'tether', '0xC16B81Af351BA9e64C1a069E3Ab18c244A1E3049': 'ageur', }, + base: { + '0x4200000000000000000000000000000000000006': 'ethereum', + '0xeb466342c4d449bc9f53a865d5cb90586f405215': 'axlusdc', + '0x50c5725949a6f0c72e6c4a641f24049a917db0cb': 'dai', + '0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93': 'crvusd', + '0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b': 'tbtc', + '0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca': 'bridged-usd-coin-base', + }, }; diff --git a/constants/Web3.js b/constants/Web3.js index d3550685..d48ff3b5 100644 --- a/constants/Web3.js +++ b/constants/Web3.js @@ -5,8 +5,9 @@ const DECIMALS_WEI = 1e18; const DECIMALS_GWEI = 1e9; const MAX_UINT256 = BN(2).pow(256).minus(1); +const RPC_URL = `https://lb.drpc.org/ogrpc?network=ethereum&dkey=${process.env.DRPC_API_KEY}`; // const RPC_URL = `https://eth.llamarpc.com/rpc/${process.env.LLAMANODES_API_KEY}`; -const RPC_URL = `https://eth-mainnet.alchemyapi.io/v2/${process.env.ALCHEMY_API_KEY_ETHEREUM}`; +// const RPC_URL = `https://eth-mainnet.alchemyapi.io/v2/${process.env.ALCHEMY_API_KEY_ETHEREUM}`; const RPC_BACKUP_URL = `https://eth-mainnet.alchemyapi.io/v2/${process.env.ALCHEMY_API_KEY_ETHEREUM}`; const RPC_URL_BSC = 'https://bsc-dataseed.binance.org/'; diff --git a/constants/abis/AggregatorStablePrice.json b/constants/abis/AggregatorStablePrice.json new file mode 100644 index 00000000..3fed7927 --- /dev/null +++ b/constants/abis/AggregatorStablePrice.json @@ -0,0 +1,272 @@ +[ + { + "name": "AddPricePair", + "inputs": [ + { + "name": "n", + "type": "uint256", + "indexed": false + }, + { + "name": "pool", + "type": "address", + "indexed": false + }, + { + "name": "is_inverse", + "type": "bool", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "RemovePricePair", + "inputs": [ + { + "name": "n", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "MovePricePair", + "inputs": [ + { + "name": "n_from", + "type": "uint256", + "indexed": false + }, + { + "name": "n_to", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "SetAdmin", + "inputs": [ + { + "name": "admin", + "type": "address", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "stateMutability": "nonpayable", + "type": "constructor", + "inputs": [ + { + "name": "stablecoin", + "type": "address" + }, + { + "name": "sigma", + "type": "uint256" + }, + { + "name": "admin", + "type": "address" + } + ], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "set_admin", + "inputs": [ + { + "name": "_admin", + "type": "address" + } + ], + "outputs": [] + }, + { + "stateMutability": "view", + "type": "function", + "name": "sigma", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "stablecoin", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "add_price_pair", + "inputs": [ + { + "name": "_pool", + "type": "address" + } + ], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_price_pair", + "inputs": [ + { + "name": "n", + "type": "uint256" + } + ], + "outputs": [] + }, + { + "stateMutability": "view", + "type": "function", + "name": "ema_tvl", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256[]" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "price", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "price_w", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "price_pairs", + "inputs": [ + { + "name": "arg0", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "components": [ + { + "name": "pool", + "type": "address" + }, + { + "name": "is_inverse", + "type": "bool" + } + ] + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "last_timestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "last_tvl", + "inputs": [ + { + "name": "arg0", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "TVL_MA_TIME", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "last_price", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "admin", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address" + } + ] + } +] diff --git a/constants/abis/factory_crypto_swap.json b/constants/abis/factory_crypto_swap.json new file mode 100644 index 00000000..8787c45c --- /dev/null +++ b/constants/abis/factory_crypto_swap.json @@ -0,0 +1,1367 @@ +[ + { + "name": "TokenExchange", + "inputs": [ + { + "name": "buyer", + "type": "address", + "indexed": true + }, + { + "name": "sold_id", + "type": "uint256", + "indexed": false + }, + { + "name": "tokens_sold", + "type": "uint256", + "indexed": false + }, + { + "name": "bought_id", + "type": "uint256", + "indexed": false + }, + { + "name": "tokens_bought", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "AddLiquidity", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true + }, + { + "name": "token_amounts", + "type": "uint256[2]", + "indexed": false + }, + { + "name": "fee", + "type": "uint256", + "indexed": false + }, + { + "name": "token_supply", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "RemoveLiquidity", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true + }, + { + "name": "token_amounts", + "type": "uint256[2]", + "indexed": false + }, + { + "name": "token_supply", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "RemoveLiquidityOne", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true + }, + { + "name": "token_amount", + "type": "uint256", + "indexed": false + }, + { + "name": "coin_index", + "type": "uint256", + "indexed": false + }, + { + "name": "coin_amount", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "CommitNewParameters", + "inputs": [ + { + "name": "deadline", + "type": "uint256", + "indexed": true + }, + { + "name": "admin_fee", + "type": "uint256", + "indexed": false + }, + { + "name": "mid_fee", + "type": "uint256", + "indexed": false + }, + { + "name": "out_fee", + "type": "uint256", + "indexed": false + }, + { + "name": "fee_gamma", + "type": "uint256", + "indexed": false + }, + { + "name": "allowed_extra_profit", + "type": "uint256", + "indexed": false + }, + { + "name": "adjustment_step", + "type": "uint256", + "indexed": false + }, + { + "name": "ma_half_time", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "NewParameters", + "inputs": [ + { + "name": "admin_fee", + "type": "uint256", + "indexed": false + }, + { + "name": "mid_fee", + "type": "uint256", + "indexed": false + }, + { + "name": "out_fee", + "type": "uint256", + "indexed": false + }, + { + "name": "fee_gamma", + "type": "uint256", + "indexed": false + }, + { + "name": "allowed_extra_profit", + "type": "uint256", + "indexed": false + }, + { + "name": "adjustment_step", + "type": "uint256", + "indexed": false + }, + { + "name": "ma_half_time", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "RampAgamma", + "inputs": [ + { + "name": "initial_A", + "type": "uint256", + "indexed": false + }, + { + "name": "future_A", + "type": "uint256", + "indexed": false + }, + { + "name": "initial_gamma", + "type": "uint256", + "indexed": false + }, + { + "name": "future_gamma", + "type": "uint256", + "indexed": false + }, + { + "name": "initial_time", + "type": "uint256", + "indexed": false + }, + { + "name": "future_time", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "StopRampA", + "inputs": [ + { + "name": "current_A", + "type": "uint256", + "indexed": false + }, + { + "name": "current_gamma", + "type": "uint256", + "indexed": false + }, + { + "name": "time", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "ClaimAdminFee", + "inputs": [ + { + "name": "admin", + "type": "address", + "indexed": true + }, + { + "name": "tokens", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "stateMutability": "nonpayable", + "type": "constructor", + "inputs": [ + { + "name": "_weth", + "type": "address" + } + ], + "outputs": [] + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "function", + "name": "exchange", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "exchange", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "exchange", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + }, + { + "name": "receiver", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "exchange_underlying", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "exchange_underlying", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + }, + { + "name": "receiver", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "exchange_extended", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + }, + { + "name": "sender", + "type": "address" + }, + { + "name": "receiver", + "type": "address" + }, + { + "name": "cb", + "type": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "add_liquidity", + "inputs": [ + { + "name": "amounts", + "type": "uint256[2]" + }, + { + "name": "min_mint_amount", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "add_liquidity", + "inputs": [ + { + "name": "amounts", + "type": "uint256[2]" + }, + { + "name": "min_mint_amount", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "add_liquidity", + "inputs": [ + { + "name": "amounts", + "type": "uint256[2]" + }, + { + "name": "min_mint_amount", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + }, + { + "name": "receiver", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity", + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "min_amounts", + "type": "uint256[2]" + } + ], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity", + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "min_amounts", + "type": "uint256[2]" + }, + { + "name": "use_eth", + "type": "bool" + } + ], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity", + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "min_amounts", + "type": "uint256[2]" + }, + { + "name": "use_eth", + "type": "bool" + }, + { + "name": "receiver", + "type": "address" + } + ], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity_one_coin", + "inputs": [ + { + "name": "token_amount", + "type": "uint256" + }, + { + "name": "i", + "type": "uint256" + }, + { + "name": "min_amount", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity_one_coin", + "inputs": [ + { + "name": "token_amount", + "type": "uint256" + }, + { + "name": "i", + "type": "uint256" + }, + { + "name": "min_amount", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity_one_coin", + "inputs": [ + { + "name": "token_amount", + "type": "uint256" + }, + { + "name": "i", + "type": "uint256" + }, + { + "name": "min_amount", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + }, + { + "name": "receiver", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "claim_admin_fees", + "inputs": [], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "ramp_A_gamma", + "inputs": [ + { + "name": "future_A", + "type": "uint256" + }, + { + "name": "future_gamma", + "type": "uint256" + }, + { + "name": "future_time", + "type": "uint256" + } + ], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "stop_ramp_A_gamma", + "inputs": [], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "commit_new_parameters", + "inputs": [ + { + "name": "_new_mid_fee", + "type": "uint256" + }, + { + "name": "_new_out_fee", + "type": "uint256" + }, + { + "name": "_new_admin_fee", + "type": "uint256" + }, + { + "name": "_new_fee_gamma", + "type": "uint256" + }, + { + "name": "_new_allowed_extra_profit", + "type": "uint256" + }, + { + "name": "_new_adjustment_step", + "type": "uint256" + }, + { + "name": "_new_ma_half_time", + "type": "uint256" + } + ], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "apply_new_parameters", + "inputs": [], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "revert_new_parameters", + "inputs": [], + "outputs": [] + }, + { + "stateMutability": "view", + "type": "function", + "name": "get_dy", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "calc_token_amount", + "inputs": [ + { + "name": "amounts", + "type": "uint256[2]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "calc_withdraw_one_coin", + "inputs": [ + { + "name": "token_amount", + "type": "uint256" + }, + { + "name": "i", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "lp_price", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "A", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "gamma", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "fee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "get_virtual_price", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "price_oracle", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "A", + "type": "uint256" + }, + { + "name": "gamma", + "type": "uint256" + }, + { + "name": "mid_fee", + "type": "uint256" + }, + { + "name": "out_fee", + "type": "uint256" + }, + { + "name": "allowed_extra_profit", + "type": "uint256" + }, + { + "name": "fee_gamma", + "type": "uint256" + }, + { + "name": "adjustment_step", + "type": "uint256" + }, + { + "name": "admin_fee", + "type": "uint256" + }, + { + "name": "ma_half_time", + "type": "uint256" + }, + { + "name": "initial_price", + "type": "uint256" + }, + { + "name": "_token", + "type": "address" + }, + { + "name": "_coins", + "type": "address[2]" + }, + { + "name": "_precisions", + "type": "uint256" + } + ], + "outputs": [] + }, + { + "stateMutability": "view", + "type": "function", + "name": "token", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "coins", + "inputs": [ + { + "name": "arg0", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "price_scale", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "last_prices", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "last_prices_timestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "initial_A_gamma", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "future_A_gamma", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "initial_A_gamma_time", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "future_A_gamma_time", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "allowed_extra_profit", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "future_allowed_extra_profit", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "fee_gamma", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "future_fee_gamma", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "adjustment_step", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "future_adjustment_step", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "ma_half_time", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "future_ma_half_time", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "mid_fee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "out_fee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "admin_fee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "future_mid_fee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "future_out_fee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "future_admin_fee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "balances", + "inputs": [ + { + "name": "arg0", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "D", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "factory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "xcp_profit", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "xcp_profit_a", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "virtual_price", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "admin_actions_deadline", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + } +] diff --git a/constants/abis/factory_tricrypto_swap.json b/constants/abis/factory_tricrypto_swap.json new file mode 100644 index 00000000..ed6e4c97 --- /dev/null +++ b/constants/abis/factory_tricrypto_swap.json @@ -0,0 +1,1797 @@ +[ + { + "name": "Transfer", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true + }, + { + "name": "receiver", + "type": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true + }, + { + "name": "spender", + "type": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "TokenExchange", + "inputs": [ + { + "name": "buyer", + "type": "address", + "indexed": true + }, + { + "name": "sold_id", + "type": "uint256", + "indexed": false + }, + { + "name": "tokens_sold", + "type": "uint256", + "indexed": false + }, + { + "name": "bought_id", + "type": "uint256", + "indexed": false + }, + { + "name": "tokens_bought", + "type": "uint256", + "indexed": false + }, + { + "name": "fee", + "type": "uint256", + "indexed": false + }, + { + "name": "packed_price_scale", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "AddLiquidity", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true + }, + { + "name": "token_amounts", + "type": "uint256[3]", + "indexed": false + }, + { + "name": "fee", + "type": "uint256", + "indexed": false + }, + { + "name": "token_supply", + "type": "uint256", + "indexed": false + }, + { + "name": "packed_price_scale", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "RemoveLiquidity", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true + }, + { + "name": "token_amounts", + "type": "uint256[3]", + "indexed": false + }, + { + "name": "token_supply", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "RemoveLiquidityOne", + "inputs": [ + { + "name": "provider", + "type": "address", + "indexed": true + }, + { + "name": "token_amount", + "type": "uint256", + "indexed": false + }, + { + "name": "coin_index", + "type": "uint256", + "indexed": false + }, + { + "name": "coin_amount", + "type": "uint256", + "indexed": false + }, + { + "name": "approx_fee", + "type": "uint256", + "indexed": false + }, + { + "name": "packed_price_scale", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "CommitNewParameters", + "inputs": [ + { + "name": "deadline", + "type": "uint256", + "indexed": true + }, + { + "name": "mid_fee", + "type": "uint256", + "indexed": false + }, + { + "name": "out_fee", + "type": "uint256", + "indexed": false + }, + { + "name": "fee_gamma", + "type": "uint256", + "indexed": false + }, + { + "name": "allowed_extra_profit", + "type": "uint256", + "indexed": false + }, + { + "name": "adjustment_step", + "type": "uint256", + "indexed": false + }, + { + "name": "ma_time", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "NewParameters", + "inputs": [ + { + "name": "mid_fee", + "type": "uint256", + "indexed": false + }, + { + "name": "out_fee", + "type": "uint256", + "indexed": false + }, + { + "name": "fee_gamma", + "type": "uint256", + "indexed": false + }, + { + "name": "allowed_extra_profit", + "type": "uint256", + "indexed": false + }, + { + "name": "adjustment_step", + "type": "uint256", + "indexed": false + }, + { + "name": "ma_time", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "RampAgamma", + "inputs": [ + { + "name": "initial_A", + "type": "uint256", + "indexed": false + }, + { + "name": "future_A", + "type": "uint256", + "indexed": false + }, + { + "name": "initial_gamma", + "type": "uint256", + "indexed": false + }, + { + "name": "future_gamma", + "type": "uint256", + "indexed": false + }, + { + "name": "initial_time", + "type": "uint256", + "indexed": false + }, + { + "name": "future_time", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "StopRampA", + "inputs": [ + { + "name": "current_A", + "type": "uint256", + "indexed": false + }, + { + "name": "current_gamma", + "type": "uint256", + "indexed": false + }, + { + "name": "time", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "name": "ClaimAdminFee", + "inputs": [ + { + "name": "admin", + "type": "address", + "indexed": true + }, + { + "name": "tokens", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false, + "type": "event" + }, + { + "stateMutability": "nonpayable", + "type": "constructor", + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_coins", + "type": "address[3]" + }, + { + "name": "_math", + "type": "address" + }, + { + "name": "_weth", + "type": "address" + }, + { + "name": "_salt", + "type": "bytes32" + }, + { + "name": "packed_precisions", + "type": "uint256" + }, + { + "name": "packed_A_gamma", + "type": "uint256" + }, + { + "name": "packed_fee_params", + "type": "uint256" + }, + { + "name": "packed_rebalancing_params", + "type": "uint256" + }, + { + "name": "packed_prices", + "type": "uint256" + } + ], + "outputs": [] + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "function", + "name": "exchange", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "exchange", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "exchange", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + }, + { + "name": "receiver", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "exchange_underlying", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "exchange_underlying", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + }, + { + "name": "receiver", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "exchange_extended", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + }, + { + "name": "min_dy", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + }, + { + "name": "sender", + "type": "address" + }, + { + "name": "receiver", + "type": "address" + }, + { + "name": "cb", + "type": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "add_liquidity", + "inputs": [ + { + "name": "amounts", + "type": "uint256[3]" + }, + { + "name": "min_mint_amount", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "add_liquidity", + "inputs": [ + { + "name": "amounts", + "type": "uint256[3]" + }, + { + "name": "min_mint_amount", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "payable", + "type": "function", + "name": "add_liquidity", + "inputs": [ + { + "name": "amounts", + "type": "uint256[3]" + }, + { + "name": "min_mint_amount", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + }, + { + "name": "receiver", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity", + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "min_amounts", + "type": "uint256[3]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[3]" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity", + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "min_amounts", + "type": "uint256[3]" + }, + { + "name": "use_eth", + "type": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[3]" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity", + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "min_amounts", + "type": "uint256[3]" + }, + { + "name": "use_eth", + "type": "bool" + }, + { + "name": "receiver", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[3]" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity", + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "min_amounts", + "type": "uint256[3]" + }, + { + "name": "use_eth", + "type": "bool" + }, + { + "name": "receiver", + "type": "address" + }, + { + "name": "claim_admin_fees", + "type": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[3]" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity_one_coin", + "inputs": [ + { + "name": "token_amount", + "type": "uint256" + }, + { + "name": "i", + "type": "uint256" + }, + { + "name": "min_amount", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity_one_coin", + "inputs": [ + { + "name": "token_amount", + "type": "uint256" + }, + { + "name": "i", + "type": "uint256" + }, + { + "name": "min_amount", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "remove_liquidity_one_coin", + "inputs": [ + { + "name": "token_amount", + "type": "uint256" + }, + { + "name": "i", + "type": "uint256" + }, + { + "name": "min_amount", + "type": "uint256" + }, + { + "name": "use_eth", + "type": "bool" + }, + { + "name": "receiver", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "claim_admin_fees", + "inputs": [], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "increaseAllowance", + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_add_value", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "decreaseAllowance", + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_sub_value", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + }, + { + "name": "_deadline", + "type": "uint256" + }, + { + "name": "_v", + "type": "uint8" + }, + { + "name": "_r", + "type": "bytes32" + }, + { + "name": "_s", + "type": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "fee_receiver", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "calc_token_amount", + "inputs": [ + { + "name": "amounts", + "type": "uint256[3]" + }, + { + "name": "deposit", + "type": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "get_dy", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dx", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "get_dx", + "inputs": [ + { + "name": "i", + "type": "uint256" + }, + { + "name": "j", + "type": "uint256" + }, + { + "name": "dy", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "lp_price", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "get_virtual_price", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "price_oracle", + "inputs": [ + { + "name": "k", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "last_prices", + "inputs": [ + { + "name": "k", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "price_scale", + "inputs": [ + { + "name": "k", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "fee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "calc_withdraw_one_coin", + "inputs": [ + { + "name": "token_amount", + "type": "uint256" + }, + { + "name": "i", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "calc_token_fee", + "inputs": [ + { + "name": "amounts", + "type": "uint256[3]" + }, + { + "name": "xp", + "type": "uint256[3]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "A", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "gamma", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "mid_fee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "out_fee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "fee_gamma", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "allowed_extra_profit", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "adjustment_step", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "ma_time", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "precisions", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256[3]" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "fee_calc", + "inputs": [ + { + "name": "xp", + "type": "uint256[3]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "DOMAIN_SEPARATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "ramp_A_gamma", + "inputs": [ + { + "name": "future_A", + "type": "uint256" + }, + { + "name": "future_gamma", + "type": "uint256" + }, + { + "name": "future_time", + "type": "uint256" + } + ], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "stop_ramp_A_gamma", + "inputs": [], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "commit_new_parameters", + "inputs": [ + { + "name": "_new_mid_fee", + "type": "uint256" + }, + { + "name": "_new_out_fee", + "type": "uint256" + }, + { + "name": "_new_fee_gamma", + "type": "uint256" + }, + { + "name": "_new_allowed_extra_profit", + "type": "uint256" + }, + { + "name": "_new_adjustment_step", + "type": "uint256" + }, + { + "name": "_new_ma_time", + "type": "uint256" + } + ], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "apply_new_parameters", + "inputs": [], + "outputs": [] + }, + { + "stateMutability": "nonpayable", + "type": "function", + "name": "revert_new_parameters", + "inputs": [], + "outputs": [] + }, + { + "stateMutability": "view", + "type": "function", + "name": "WETH20", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "MATH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "coins", + "inputs": [ + { + "name": "arg0", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "factory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "last_prices_timestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "initial_A_gamma", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "initial_A_gamma_time", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "future_A_gamma", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "future_A_gamma_time", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "balances", + "inputs": [ + { + "name": "arg0", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "D", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "xcp_profit", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "xcp_profit_a", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "virtual_price", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "packed_rebalancing_params", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "packed_fee_params", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "ADMIN_FEE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "admin_actions_deadline", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "version", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "arg0", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "arg0", + "type": "address" + }, + { + "name": "arg1", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "nonces", + "inputs": [ + { + "name": "arg0", + "type": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256" + } + ] + }, + { + "stateMutability": "view", + "type": "function", + "name": "salt", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ] + } +] diff --git a/constants/configs/configs.js b/constants/configs/configs.js index ffc0856f..fcae9c32 100644 --- a/constants/configs/configs.js +++ b/constants/configs/configs.js @@ -1,5 +1,6 @@ import WEB3_CONSTANTS from 'constants/Web3'; import { CaseInsensitiveMap } from 'utils/Array'; +import { lc } from 'utils/String'; import { ZERO_ADDRESS } from 'utils/Web3'; const configs = { @@ -43,6 +44,8 @@ const configs = { ['0xAbc533EbCDdeD41215C46ee078C5818B5b0A252F'.toLowerCase(), 'metabtcbalances-sbtc2'], ['0x33bB0e62d5e8C688E645Dd46DFb48Cd613250067'.toLowerCase(), 'metausd-fraxusdc'], ['0x2EB24483Ef551dA247ab87Cf18e1Cc980073032D'.toLowerCase(), 'metausdbalances-fraxusdc'], + ['0xF9B62b61d108232Ef0C9DD143bb3c22c7D4A715a'.toLowerCase(), 'metausd-fraxusdp'], + ['0xB172AC2Fe440B5dA74Dc460e5E9d96bc2BF6261F'.toLowerCase(), 'metausdbalances-fraxusdp'], ['0x5F890841f657d90E081bAbdB532A05996Af79Fe6'.toLowerCase(), 'v1metausd'], ['0x2f956eee002b0debd468cf2e0490d1aec65e027f'.toLowerCase(), 'v1metabtc'], ['0x66442B0C5260B92cAa9c234ECf2408CBf6b19a6f'.toLowerCase(), 'tricrypto-1'], @@ -55,7 +58,13 @@ const configs = { getFactoryCrvusdRegistryAddress: async () => '0x4F8846Ae9380B90d2E71D5e3D042dff3E7ebb40d', getFactoryTricryptoRegistryAddress: async () => '0x0c0e5f2ff0ff18a3be9b835635039256dc4b4963', graphEndpoint: `https://api.thegraph.com/subgraphs/name/convex-community/volume-mainnet`, - DISABLED_POOLS_ADDRESSES: [].map((a) => a.toLowerCase()), + DISABLED_POOLS_ADDRESSES: [].map(lc), + BROKEN_POOLS_ADDRESSES: [ + '0x8301ae4fc9c624d1d396cbdaa1ed877821d7c511', + '0xc4c319e2d4d66cca4464c0c2b32c9bd23ebe784e', + '0xc897b98272aa23714464ea2a0bd5180f1b8c0025', + '0x9848482da3ee3076165ce6497eda906e66bb85c5', + ].map(lc), }, polygon: { poolsBaseUrlOld: 'https://polygon.curve.fi/', @@ -66,7 +75,8 @@ const configs = { nativeCurrencyCoingeckoId: 'matic-network', platformCoingeckoId: 'polygon-pos', nativeAssetErc20WrapperId: 'wmatic', - rpcUrl: `https://polygon-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY_POLYGON}`, + // rpcUrl: `https://polygon-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY_POLYGON}`, + rpcUrl: `https://polygon.llamarpc.com/rpc/${process.env.LLAMANODES_API_KEY}`, multicallAddress: '0x3eF6A01A0f81D6046290f3e2A8c5b843e738E604', multicall2Address: '0x275617327c958bD06b5D6b871E7f491D76113dd8', getFactoryRegistryAddress: async () => '0x722272d36ef0da72ff51c5a65db7b870e2e8d4ee', @@ -108,7 +118,7 @@ const configs = { '0x1197Ae7F43695Be80127365b494E8BF850f4752A', // Broken pool '0x40caB7C05fc1686e198C8d6d6aA4aaCF77BE8590', // Broken pool '0x64FFf0e27c223097c824f9d9278eFD5B55c3430e', // Broken pool - ].map((a) => a.toLowerCase()), + ].map(lc), approxBlocksPerDay: 40000, // https://polygonscan.com/chart/blocks graphEndpoint: 'https://api.thegraph.com/subgraphs/name/convex-community/volume-matic', }, @@ -121,7 +131,7 @@ const configs = { nativeCurrencyCoingeckoId: 'fantom', platformCoingeckoId: 'fantom', nativeAssetErc20WrapperId: 'wftm', - rpcUrl: 'https://fantom-mainnet.gateway.pokt.network/v1/lb/62759259ea1b320039c9e7ac', + rpcUrl: `https://lb.drpc.org/ogrpc?network=fantom&dkey=${process.env.DRPC_API_KEY}`, multicallAddress: '0xb828c456600857abd4ed6c32facc607bd0464f4f', multicall2Address: '0xD98e3dBE5950Ca8Ce5a4b59630a5652110403E5c', getFactoryRegistryAddress: async () => '0x686d67265703d1f124c45e33d47d794c566889ba', @@ -154,7 +164,7 @@ const configs = { ['0x5B5CFE992AdAC0C9D48E05854B2d91C73a003858', '0x2db0E83599a91b508Ac268a6197b8B14F5e72840'], // meta btc ['0x0fa949783947Bf6c1b171DB13AEACBB488845B3f', '0xD02a30d33153877BC20e5721ee53DeDEE0422B2F'], // meta usd2 ]), - DISABLED_POOLS_ADDRESSES: [].map((a) => a.toLowerCase()), + DISABLED_POOLS_ADDRESSES: [].map(lc), approxBlocksPerDay: 95000, // https://ftmscan.com/chart/blocks graphEndpoint: 'https://api.thegraph.com/subgraphs/name/convex-community/volume-fantom' }, @@ -171,6 +181,7 @@ const configs = { multicallAddress: '0x5b5cfe992adac0c9d48e05854b2d91c73a003858', multicall2Address: '0x5b5cfe992adac0c9d48e05854b2d91c73a003858', getFactoryRegistryAddress: async () => '0xb17b674D9c5CB2e441F8e196a2f048A81355d031', + getFactoryTricryptoRegistryAddress: async () => '0xbC0797015fcFc47d9C1856639CaE50D0e69FbEE8', getCryptoRegistryAddress: async () => '0x0E9fBb167DF83EdE3240D6a5fa5d40c6C6851e15', factoryImplementationAddressMap: new Map([ ['0x54e8A25d0Ac0E4945b697C80b8372445FEA17A62'.toLowerCase(), 'plain2basic'], @@ -191,12 +202,13 @@ const configs = { ['0x3edE9b145F82e9e46C03f8A8F67B77aEE847b632'.toLowerCase(), 'metausdbalances-factory-v2-41'], ['0x094d12e5b541784701FD8d65F11fc0598FBC6332'.toLowerCase(), 'metabtc'], ['0xF1f85a74AD6c64315F85af52d3d46bF715236ADc'.toLowerCase(), 'metabtcbalances'], + ['0xd7E72f3615aa65b92A4DBdC211E296a35512988B'.toLowerCase(), 'tricrypto-1'], ]), BASE_POOL_LP_TO_GAUGE_LP_MAP: new Map([ ['0x7f90122bf0700f9e7e1f688fe926940e8839f353', '0xbF7E49483881C76487b0989CD7d9A8239B20CA41'], // meta usd ['0x3E01dD8a5E1fb3481F0F589056b428Fc308AF0Fb', '0xC2b1DF84112619D190193E48148000e3990Bf627'], // meta btc ]), - DISABLED_POOLS_ADDRESSES: [].map((a) => a.toLowerCase()), + DISABLED_POOLS_ADDRESSES: [].map(lc), graphEndpoint: 'https://api.thegraph.com/subgraphs/name/convex-community/volume-arbitrum', }, avalanche: { @@ -241,7 +253,7 @@ const configs = { CRYPTO_POOLS_WITH_BASE_POOLS: new CaseInsensitiveMap([ ['0xB755B949C126C04e0348DD881a5cF55d424742B2', '0x7f90122BF0700F9E7e1F688fe926940E8839F353'], // atricrypto<>aave ]), - DISABLED_POOLS_ADDRESSES: [].map((a) => a.toLowerCase()), + DISABLED_POOLS_ADDRESSES: [].map(lc), graphEndpoint: 'https://api.thegraph.com/subgraphs/name/convex-community/volume-avalanche', approxBlocksPerDay: 43000, }, @@ -280,7 +292,7 @@ const configs = { // BASE_POOL_LP_TO_GAUGE_LP_MAP: new Map([ // ['0x1337BedC9D22ecbe766dF105c9623922A27963EC', '0x5b5cfe992adac0c9d48e05854b2d91c73a003858'], // no gauge yet but will need to be added // ]) - DISABLED_POOLS_ADDRESSES: [].map((a) => a.toLowerCase()), + DISABLED_POOLS_ADDRESSES: [].map(lc), approxBlocksPerDay: 43000, // https://optimistic.etherscan.io/chart/blocks graphEndpoint: 'https://api.thegraph.com/subgraphs/name/convex-community/volume-optimism', }, @@ -293,10 +305,10 @@ const configs = { nativeCurrencyCoingeckoId: 'xdai', platformCoingeckoId: 'xdai', nativeAssetErc20WrapperId: 'wxdai', // Used by crypto facto, since it handles wrapped native as native - rpcUrl: 'https://rpc.gnosis.gateway.fm', + rpcUrl: 'https://rpc.ankr.com/gnosis', multicallAddress: '0xb5b692a88bdfc81ca69dcb1d924f59f0413a602a', multicall2Address: '0xFAa296891cA6CECAF2D86eF5F7590316d0A17dA0', - DISABLED_POOLS_ADDRESSES: [].map((a) => a.toLowerCase()), + DISABLED_POOLS_ADDRESSES: [].map(lc), approxBlocksPerDay: 16900, getFactoryRegistryAddress: async () => '0xD19Baeadc667Cf2015e395f2B08668Ef120f41F5', getCryptoRegistryAddress: async () => '0x8A4694401bE8F8FCCbC542a3219aF1591f87CE17', @@ -330,7 +342,7 @@ const configs = { rpcUrl: 'https://mainnet.aurora.dev', multicallAddress: '0xace58a26b8Db90498eF0330fDC9C2655db0C45E2', multicall2Address: '0xace58a26b8Db90498eF0330fDC9C2655db0C45E2', - DISABLED_POOLS_ADDRESSES: [].map((a) => a.toLowerCase()), + DISABLED_POOLS_ADDRESSES: [].map(lc), approxBlocksPerDay: 72000, // https://aurorascan.dev/chart/blocks getFactoryRegistryAddress: async () => ZERO_ADDRESS, getCryptoRegistryAddress: async () => ZERO_ADDRESS, @@ -348,7 +360,7 @@ const configs = { rpcUrl: 'https://rpc.s0.t.hmny.io', multicallAddress: '0x3E01dD8a5E1fb3481F0F589056b428Fc308AF0Fb', multicall2Address: '0x3E01dD8a5E1fb3481F0F589056b428Fc308AF0Fb', - DISABLED_POOLS_ADDRESSES: [].map((a) => a.toLowerCase()), + DISABLED_POOLS_ADDRESSES: [].map(lc), approxBlocksPerDay: 43200, getCryptoRegistryAddress: async () => '', // Has one crypto pool but no crypto registry }, @@ -361,7 +373,7 @@ const configs = { nativeCurrencyCoingeckoId: 'moonbeam', platformCoingeckoId: 'moonbeam', nativeAssetErc20WrapperId: 'wGLMR', // Used by crypto facto, since it handles wrapped native as native - rpcUrl: 'https://moonbeam.api.onfinality.io/public', + rpcUrl: 'https://moonbeam.public.blastapi.io', multicallAddress: '0x1337BedC9D22ecbe766dF105c9623922A27963EC', multicall2Address: '0x1337BedC9D22ecbe766dF105c9623922A27963EC', getFactoryRegistryAddress: async () => '0x4244eB811D6e0Ef302326675207A95113dB4E1F8', @@ -380,7 +392,7 @@ const configs = { ['0xe8269B33E47761f552E1a3070119560d5fa8bBD6'.toLowerCase(), 'plain4optimized'], ]), BASE_POOL_LP_TO_GAUGE_LP_MAP: new Map([]), - DISABLED_POOLS_ADDRESSES: [].map((a) => a.toLowerCase()), + DISABLED_POOLS_ADDRESSES: [].map(lc), approxBlocksPerDay: 7000, // https://moonscan.io/chart/blocks graphEndpoint: 'https://api.thegraph.com/subgraphs/name/convex-community/volume-moonbeam', }, @@ -394,6 +406,7 @@ const configs = { platformCoingeckoId: 'kava', nativeAssetErc20WrapperId: 'wrapped-kava', // Used by crypto facto, since it handles wrapped native as native rpcUrl: 'https://evm.kava.io', + noArchivalAlternateRpcUrl: 'https://kava-rpc.gateway.pokt.network', multicallAddress: '0x7ED7bBd8C454a1B0D9EdD939c45a81A03c20131C', multicall2Address: '0x30A62aA52Fa099C4B227869EB6aeaDEda054d121', getFactoryRegistryAddress: async () => '0x40bc62805471eF53DdD5C5cF99ed3d9e5aa81b48', @@ -412,7 +425,7 @@ const configs = { ['0x509495DFEEc3a53aCb2F60669985d868131Ad9a5'.toLowerCase(), 'plain4optimized'], ]), BASE_POOL_LP_TO_GAUGE_LP_MAP: new Map([]), - DISABLED_POOLS_ADDRESSES: [].map((a) => a.toLowerCase()), + DISABLED_POOLS_ADDRESSES: [].map(lc), approxBlocksPerDay: 13500, // https://explorer.kava.io/ }, celo: { @@ -444,9 +457,110 @@ const configs = { ['0xA73b02a97B45604cd9f0BBAA153eCfe01f409350'.toLowerCase(), 'plain4optimized'], ]), BASE_POOL_LP_TO_GAUGE_LP_MAP: new Map([]), - DISABLED_POOLS_ADDRESSES: [].map((a) => a.toLowerCase()), + DISABLED_POOLS_ADDRESSES: [].map(lc), approxBlocksPerDay: 17280, // https://celoscan.io/chart/blocks graphEndpoint: 'https://api.thegraph.com/subgraphs/name/convex-community/volume-celo', }, + zkevm: { + hasNoMainRegistry: true, // No main registry deployed nor address provider + poolsBaseUrlOld: null, + poolsBaseUrl: null, + shortId: 'zkevm', + nativeCurrencySymbol: 'ETH', + chainId: 1101, + nativeCurrencyCoingeckoId: 'ethereum', + platformCoingeckoId: 'polygon-zkevm', + nativeAssetErc20WrapperId: 'weth', // Used by crypto facto, since it handles wrapped native as native + rpcUrl: 'https://zkevm-rpc.com', + multicallAddress: '0xcA11bde05977b3631167028862bE2a173976CA11', + multicall2Address: '0xcA11bde05977b3631167028862bE2a173976CA11', + getFactoryRegistryAddress: async () => '0xCDC481031E23AEd8CbBe6e07A638298a790D445a', + factoryImplementationAddressMap: new Map([ + ['0xDec8C0e31A66ed2eEf7ed54155647c9abcf49b9F'.toLowerCase(), 'plain2basic'], + ['0x6842E0412AC1c00464dc48961330156a07268d14'.toLowerCase(), 'plain2balances'], + ['0x9fAe78C4bBB649deB7b2295dDB8A03adA7eB660F'.toLowerCase(), 'plain2eth'], + ['0xfCE359115dFe1533a2458650123F86C454BC0213'.toLowerCase(), 'plain2optimized'], + ['0xD19Baeadc667Cf2015e395f2B08668Ef120f41F5'.toLowerCase(), 'plain3basic'], + ['0x04e39EF8332e979Cf8e4f8891E64934FF65F231b'.toLowerCase(), 'plain3balances'], + ['0xC9438d8928486bD9621D326002F4672bF684187A'.toLowerCase(), 'plain3eth'], + ['0x2b70A5B878665FfDB4A06Ba40a264d6c70f68F4B'.toLowerCase(), 'plain3optimized'], + ['0x7Bb707085905c9D80854652809A1ba8480C11789'.toLowerCase(), 'plain4basic'], + ['0xec9cEBE650E181079576C1b6d0d2e092B1EdfF13'.toLowerCase(), 'plain4balances'], + ['0xe8269B33E47761f552E1a3070119560d5fa8bBD6'.toLowerCase(), 'plain4eth'], + ['0x114C4042B11a2b16F58Fe1BFe847589a122F678a'.toLowerCase(), 'plain4optimized'], + ]), + BASE_POOL_LP_TO_GAUGE_LP_MAP: new Map([]), + DISABLED_POOLS_ADDRESSES: [].map(lc), + approxBlocksPerDay: 50000, // https://zkevm.polygonscan.com/chart/blocks + graphEndpoint: undefined, // Not supported by TheGraph's hosted service + }, + zksync: { + hasNoMainRegistry: true, // No main registry deployed nor address provider + poolsBaseUrlOld: null, + poolsBaseUrl: null, + shortId: 'zksync', + nativeCurrencySymbol: 'ETH', + chainId: 324, + nativeCurrencyCoingeckoId: 'ethereum', + platformCoingeckoId: 'zksync', + nativeAssetErc20WrapperId: 'weth', // Used by crypto facto, since it handles wrapped native as native + rpcUrl: 'https://mainnet.era.zksync.io', + multicallAddress: '0xF9cda624FBC7e059355ce98a31693d299FACd963', + multicall2Address: '0xF9cda624FBC7e059355ce98a31693d299FACd963', + getFactoryRegistryAddress: async () => '0xAF5261eD780fd5b80CF6E206b6BF90CbB97F511B', + factoryImplementationAddressMap: new Map([ + ['0x7c2a205C52361410233540008f7095dEF5915843'.toLowerCase(), 'plain2basic'], + ['0xEF04fC6b95b1658AfdFd527aF9b947cd7BD46bde'.toLowerCase(), 'plain2balances'], + ['0x4887ef1a68f30364a25a8b0bAA13EeeA7eeBE574'.toLowerCase(), 'plain2eth'], + ['0x044f8F31078c0CB898f25fff3286cE905C18434e'.toLowerCase(), 'plain2optimized'], + ['0x2e6De7148Afc6e4B1ee766D070DDeff0C84831a5'.toLowerCase(), 'plain3basic'], + ['0x5D18b28C052Bb0C1573d90Ea055b13048026d83F'.toLowerCase(), 'plain3balances'], + ['0x9707Bbf96eBB136B67788aa7E46d771Ec18895f4'.toLowerCase(), 'plain3eth'], + ['0xb274f2cdCff70A0bac146e9Ca5a8a28f59a3f812'.toLowerCase(), 'plain3optimized'], + ['0x30eb3F0EF60993584e8dD231dF7539db31800555'.toLowerCase(), 'plain4basic'], + ['0x3D21E268d6A526948e978ad1595052c949927e54'.toLowerCase(), 'plain4balances'], + ['0xD46aed59fBd5eB6c134b1AFb364240bb62dA0451'.toLowerCase(), 'plain4eth'], + ['0xE80AeF1a4782eA7b7f9Ad9F0c2ed9343861934e3'.toLowerCase(), 'plain4optimized'], + ]), + BASE_POOL_LP_TO_GAUGE_LP_MAP: new Map([]), + DISABLED_POOLS_ADDRESSES: [].map(lc), + approxBlocksPerDay: 70000, // Very approx from list of blocks on https://explorer.zksync.io/blocks + graphEndpoint: undefined, // Not supported by TheGraph's hosted service + }, + base: { + hasNoMainRegistry: true, // No main registry deployed nor address provider + poolsBaseUrlOld: null, + poolsBaseUrl: null, + shortId: 'base', + nativeCurrencySymbol: 'ETH', + chainId: 8453, + nativeCurrencyCoingeckoId: 'ethereum', + platformCoingeckoId: 'base', + nativeAssetErc20WrapperId: 'weth', // Used by crypto facto, since it handles wrapped native as native + rpcUrl: `https://lb.drpc.org/ogrpc?network=base&dkey=${process.env.DRPC_API_KEY}`, + multicallAddress: '0xca11bde05977b3631167028862be2a173976ca11', + multicall2Address: '0xca11bde05977b3631167028862be2a173976ca11', + getFactoryRegistryAddress: async () => '0x3093f9B57A428F3EB6285a589cb35bEA6e78c336', + getFactoryCryptoRegistryAddress: async () => '0x5EF72230578b3e399E6C6F4F6360edF95e83BBfd', + getFactoryTricryptoRegistryAddress: async () => '0xA5961898870943c68037F6848d2D866Ed2016bcB', + factoryImplementationAddressMap: new Map([ + ['0xD166EEdf272B860E991d331B71041799379185D5'.toLowerCase(), 'plain2basic'], + ['0x5C627d6925e448Ae418BC8a45d56B31fe5009Bea'.toLowerCase(), 'plain2balances'], + ['0x22D710931F01c1681Ca1570Ff016eD42EB7b7c2a'.toLowerCase(), 'plain2eth'], + ['0xA50d9a424A14aF0b9e7e9243dc1597d977f6cB09'.toLowerCase(), 'plain2optimized'], + ['0xeD49979026DC44DC7E83b1471794ec9b2a365Ea2'.toLowerCase(), 'plain3basic'], + ['0x0Cc51c9786f3777a6d50961CEBb2BB6E69ec5e07'.toLowerCase(), 'plain3balances'], + ['0x0a31527a8dE2Ee97BBD8cCE14Db8E8826a0b6C4f'.toLowerCase(), 'plain3eth'], + ['0x1086F023146f9026A9Bb22983CE866813C59518A'.toLowerCase(), 'plain3optimized'], + ['0x1621E58d36EB5Ef26F9768Ebe9DB77181b1f5a02'.toLowerCase(), 'plain4basic'], + ['0x2FdDeDF2D842f23da2B81b9144e75cEcb691Bf19'.toLowerCase(), 'plain4balances'], + ['0x50E09Ee7080b32aef3e92346891dD2DD389B5fAf'.toLowerCase(), 'plain4eth'], + ['0x44d9B3f4EE15AC81FEb918501fca0ddc9d83C976'.toLowerCase(), 'plain4optimized'], + ]), + BASE_POOL_LP_TO_GAUGE_LP_MAP: new Map([]), + DISABLED_POOLS_ADDRESSES: [].map(lc), + approxBlocksPerDay: 43000, // Very approx from list of blocks on https://basescan.org/blocks + graphEndpoint: undefined, // Not supported by TheGraph's hosted service https://thegraph.com/docs/en/developing/supported-networks/ + }, }; export default configs; diff --git a/constants/pools-zaps/avalanche.json b/constants/pools-zaps/avalanche.json index 25475532..dde40452 100644 --- a/constants/pools-zaps/avalanche.json +++ b/constants/pools-zaps/avalanche.json @@ -1,10 +1,13 @@ { - "implementations": { - "v1metausd": "0x001e3ba199b4ff4b5b6e97acd96dafc0e2e4156e", - "metausd": "0x001e3ba199b4ff4b5b6e97acd96dafc0e2e4156e", - "metausdbalances": "0x001e3ba199b4ff4b5b6e97acd96dafc0e2e4156e" - }, - "pools": { - "0xb755b949c126c04e0348dd881a5cf55d424742b2": "0x58e57ca18b7a47112b877e31929798cd3d703b0f" - } -} \ No newline at end of file + "implementations": { + "v1metausd": "0x001e3ba199b4ff4b5b6e97acd96dafc0e2e4156e", + "metausd": "0x001e3ba199b4ff4b5b6e97acd96dafc0e2e4156e", + "metausdbalances": "0x001e3ba199b4ff4b5b6e97acd96dafc0e2e4156e", + "metabtc": "0xEeB3DDBcc4174e0b3fd1C13aD462b95D11Ef42C3", + "metabtcbalances": "0xEeB3DDBcc4174e0b3fd1C13aD462b95D11Ef42C3" + }, + "pools": { + "0xb755b949c126c04e0348dd881a5cf55d424742b2": "0x58e57ca18b7a47112b877e31929798cd3d703b0f", + "0x204f0620e7e7f07b780535711884835977679bba": "0x9f2Fa7709B30c75047980a0d70A106728f0Ef2db" + } +} diff --git a/constants/pools-zaps/ethereum.json b/constants/pools-zaps/ethereum.json index 8980ed87..8c914d6c 100644 --- a/constants/pools-zaps/ethereum.json +++ b/constants/pools-zaps/ethereum.json @@ -1,50 +1,52 @@ { - "implementations": { - "v1metausd": "0xa79828df1850e8a3a3064576f380d90aecdd3359", - "metausd": "0xa79828df1850e8a3a3064576f380d90aecdd3359", - "metausdbalances": "0xa79828df1850e8a3a3064576f380d90aecdd3359", - "metausd-fraxusdc": "0x08780fb7e580e492c1935bee4fa5920b94aa95da", - "metausdbalances-fraxusdc": "0x08780fb7e580e492c1935bee4fa5920b94aa95da", - "v1metabtc": "0x7abdbaf29929e7f8621b757d2a7c04d78d633834", - "metabtc": "0x7abdbaf29929e7f8621b757d2a7c04d78d633834", - "metabtcbalances": "0x7abdbaf29929e7f8621b757d2a7c04d78d633834", - "metabtc-sbtc2": "0xa2d40edbf76c6c0701ba8899e2d059798eba628e", - "metabtcbalances-sbtc2": "0xa2d40edbf76c6c0701ba8899e2d059798eba628e", - "metacrypto": "0x5de4ef4879f4fe3bbadf2227d2ac5d0e2d76c895", - "metacrypto-3pool": "0x97adc08fa1d849d2c48c5dcc1dab568b169b0267" - }, - "pools": { - "0xa2b47e3d5c44877cca798226b7b8118f9bfb7a56": "0xeb21209ae4c2c9ff2a86aca31e123764a3b6bc06", - "0x52ea46506b9cc5ef470c5bf89f17dc28bb35d85c": "0xac795d2c97e60df6a99ff1c814727302fd747a80", - "0x06364f10b501e868329afbc005b3492902d6c763": "0xa50ccc70b6a011cffddf45057e39679379187287", - "0x45f783cce6b7ff23b2ab2d70e416cdb7d6055f51": "0xbbc81d23ea2c3ec7e56d39296f0cbb648873a5d3", - "0x79a8c46dea5ada233abaffd40f3a0a2b1e5a4f27": "0xb6c057591e073249f2d9d88ba59a46cfc9b59edb", - "0xa5407eae9ba41422680e2e00537571bcc53efbfd": "0xfcba3e75865d2d561be8d220616520c171f12851", - "0x4f062658eaaf2c1ccf8c8e36d6824cdf41167956": "0x64448b78561690b70e17cbe8029a3e5c1bb7136e", - "0x3ef6a01a0f81d6046290f3e2a8c5b843e738e604": "0x09672362833d8f703d5395ef3252d4bfa51c15ca", - "0x3e01dd8a5e1fb3481f0f589056b428fc308af0fb": "0xf1f85a74ad6c64315f85af52d3d46bf715236adc", - "0x0f9cb53ebe405d49a0bbdbd291a65ff571bc83e1": "0x094d12e5b541784701fd8d65f11fc0598fbc6332", - "0xe7a24ef0c5e95ffb0f6684b813a78f2a3ad7d171": "0x1de7f0866e2c4adac7b457c58cc25c8688cda1f2", - "0x8474ddbe98f5aa3179b3b3f5942d724afcdec9f6": "0x803a2b40c5a9bb2b86dd630b274fa2a9202874c2", - "0xc18cc39da8b11da8c3541c598ee022258f9744da": "0xbe175115bf33e12348ff77ccfee4726866a0fbd5", - "0xc25099792e9349c7dd09759744ea681c7de2cb66": "0xaa82ca713d94bba7a89ceab55314f9effeddc78c", - "0x8038c01a0390a8c547446a0b2c18fc9aefecc10c": "0x61e10659fe3aa93d036d099405224e4ac24996d0", - "0x7f55dde206dbad629c080068923b36fe9d6bdbef": "0x11f419adabbff8d595e7d5b223eee3863bb3902c", - "0x071c661b4deefb59e2a3ddb20db036821eee8f4b": "0xc45b2eee6e09ca176ca3bb5f7eee7c47bf93c756", - "0xd81da8d904b52208541bade1bd6595d8a251f8dd": "0xd5bcf53e2c81e1991570f33fa881c49eea570c8d", - "0x890f4e345b1daed0367a877a1612f86a1f86985f": "0xb0a0716841f2fc03fba72a891b8bb13584f52f2d", - "0x42d7025938bec20b69cbae5a77421082407f053a": "0x3c8caee4e09296800f8d29a68fa3837e2dae4940", - "0xecd5e75afb02efa118af914515d6521aabd189f1": "0xa79828df1850e8a3a3064576f380d90aecdd3359", - "0xd632f22692fac7611d2aa1c0d552930d43caed3b": "0xa79828df1850e8a3a3064576f380d90aecdd3359", - "0xed279fdd11ca84beef15af5d39bb4d4bee23f0ca": "0xa79828df1850e8a3a3064576f380d90aecdd3359", - "0x4807862aa8b2bf68830e4c8dc86d0e9a998e085a": "0xa79828df1850e8a3a3064576f380d90aecdd3359", - "0x43b4fdfd4ff969587185cdb6f0bd875c5fc83f8c": "0xa79828df1850e8a3a3064576f380d90aecdd3359", - "0x80466c64868e1ab14a1ddf27a676c3fcbe638fe5": "0x331af2e331bd619defaa5dac6c038f53fcf9f785", - "0x5a6a4d54456819380173272a5e8e9b9904bdf41b": "0xa79828df1850e8a3a3064576f380d90aecdd3359", - "0xd51a44d3fae010294c616388b506acda1bfaae46": "0x3993d34e7e99abf6b6f367309975d1360222d446", - "0x9838eccc42659fa8aa7daf2ad134b53984c9427b": "0x5d0f47b32fdd343bfa74ce221808e2abe4a53827", - "0x618788357d0ebd8a37e763adab3bc575d54c2c7d": "0xcb636b81743bb8a7f1e355debb7d33b07009cccc", - "0xadcfcf9894335dc340f6cd182afa45999f45fc44": "0xc5fa220347375ac4f91f9e4a4aab362f22801504", - "0xe84f5b1582ba325fdf9ce6b0c1f087ccfc924e54": "0xd446a98f88e1d053d1f64986e3ed083bb1ab7e5a" - } -} \ No newline at end of file + "implementations": { + "v1metausd": "0xa79828df1850e8a3a3064576f380d90aecdd3359", + "metausd": "0xa79828df1850e8a3a3064576f380d90aecdd3359", + "metausdbalances": "0xa79828df1850e8a3a3064576f380d90aecdd3359", + "metausd-fraxusdc": "0x08780fb7e580e492c1935bee4fa5920b94aa95da", + "metausdbalances-fraxusdc": "0x08780fb7e580e492c1935bee4fa5920b94aa95da", + "metausd-fraxusdp": "0x63B709d2118Ba0389ee75A131d1F9a473e06afbD", + "metausdbalances-fraxusdp": "0x63B709d2118Ba0389ee75A131d1F9a473e06afbD", + "v1metabtc": "0x7abdbaf29929e7f8621b757d2a7c04d78d633834", + "metabtc": "0x7abdbaf29929e7f8621b757d2a7c04d78d633834", + "metabtcbalances": "0x7abdbaf29929e7f8621b757d2a7c04d78d633834", + "metabtc-sbtc2": "0xa2d40edbf76c6c0701ba8899e2d059798eba628e", + "metabtcbalances-sbtc2": "0xa2d40edbf76c6c0701ba8899e2d059798eba628e", + "metacrypto": "0x5de4ef4879f4fe3bbadf2227d2ac5d0e2d76c895", + "metacrypto-3pool": "0x97adc08fa1d849d2c48c5dcc1dab568b169b0267" + }, + "pools": { + "0xa2b47e3d5c44877cca798226b7b8118f9bfb7a56": "0xeb21209ae4c2c9ff2a86aca31e123764a3b6bc06", + "0x52ea46506b9cc5ef470c5bf89f17dc28bb35d85c": "0xac795d2c97e60df6a99ff1c814727302fd747a80", + "0x06364f10b501e868329afbc005b3492902d6c763": "0xa50ccc70b6a011cffddf45057e39679379187287", + "0x45f783cce6b7ff23b2ab2d70e416cdb7d6055f51": "0xbbc81d23ea2c3ec7e56d39296f0cbb648873a5d3", + "0x79a8c46dea5ada233abaffd40f3a0a2b1e5a4f27": "0xb6c057591e073249f2d9d88ba59a46cfc9b59edb", + "0xa5407eae9ba41422680e2e00537571bcc53efbfd": "0xfcba3e75865d2d561be8d220616520c171f12851", + "0x4f062658eaaf2c1ccf8c8e36d6824cdf41167956": "0x64448b78561690b70e17cbe8029a3e5c1bb7136e", + "0x3ef6a01a0f81d6046290f3e2a8c5b843e738e604": "0x09672362833d8f703d5395ef3252d4bfa51c15ca", + "0x3e01dd8a5e1fb3481f0f589056b428fc308af0fb": "0xf1f85a74ad6c64315f85af52d3d46bf715236adc", + "0x0f9cb53ebe405d49a0bbdbd291a65ff571bc83e1": "0x094d12e5b541784701fd8d65f11fc0598fbc6332", + "0xe7a24ef0c5e95ffb0f6684b813a78f2a3ad7d171": "0x1de7f0866e2c4adac7b457c58cc25c8688cda1f2", + "0x8474ddbe98f5aa3179b3b3f5942d724afcdec9f6": "0x803a2b40c5a9bb2b86dd630b274fa2a9202874c2", + "0xc18cc39da8b11da8c3541c598ee022258f9744da": "0xbe175115bf33e12348ff77ccfee4726866a0fbd5", + "0xc25099792e9349c7dd09759744ea681c7de2cb66": "0xaa82ca713d94bba7a89ceab55314f9effeddc78c", + "0x8038c01a0390a8c547446a0b2c18fc9aefecc10c": "0x61e10659fe3aa93d036d099405224e4ac24996d0", + "0x7f55dde206dbad629c080068923b36fe9d6bdbef": "0x11f419adabbff8d595e7d5b223eee3863bb3902c", + "0x071c661b4deefb59e2a3ddb20db036821eee8f4b": "0xc45b2eee6e09ca176ca3bb5f7eee7c47bf93c756", + "0xd81da8d904b52208541bade1bd6595d8a251f8dd": "0xd5bcf53e2c81e1991570f33fa881c49eea570c8d", + "0x890f4e345b1daed0367a877a1612f86a1f86985f": "0xb0a0716841f2fc03fba72a891b8bb13584f52f2d", + "0x42d7025938bec20b69cbae5a77421082407f053a": "0x3c8caee4e09296800f8d29a68fa3837e2dae4940", + "0xecd5e75afb02efa118af914515d6521aabd189f1": "0xa79828df1850e8a3a3064576f380d90aecdd3359", + "0xd632f22692fac7611d2aa1c0d552930d43caed3b": "0xa79828df1850e8a3a3064576f380d90aecdd3359", + "0xed279fdd11ca84beef15af5d39bb4d4bee23f0ca": "0xa79828df1850e8a3a3064576f380d90aecdd3359", + "0x4807862aa8b2bf68830e4c8dc86d0e9a998e085a": "0xa79828df1850e8a3a3064576f380d90aecdd3359", + "0x43b4fdfd4ff969587185cdb6f0bd875c5fc83f8c": "0xa79828df1850e8a3a3064576f380d90aecdd3359", + "0x80466c64868e1ab14a1ddf27a676c3fcbe638fe5": "0x331af2e331bd619defaa5dac6c038f53fcf9f785", + "0x5a6a4d54456819380173272a5e8e9b9904bdf41b": "0xa79828df1850e8a3a3064576f380d90aecdd3359", + "0xd51a44d3fae010294c616388b506acda1bfaae46": "0x3993d34e7e99abf6b6f367309975d1360222d446", + "0x9838eccc42659fa8aa7daf2ad134b53984c9427b": "0x5d0f47b32fdd343bfa74ce221808e2abe4a53827", + "0x618788357d0ebd8a37e763adab3bc575d54c2c7d": "0xcb636b81743bb8a7f1e355debb7d33b07009cccc", + "0xadcfcf9894335dc340f6cd182afa45999f45fc44": "0xc5fa220347375ac4f91f9e4a4aab362f22801504", + "0xe84f5b1582ba325fdf9ce6b0c1f087ccfc924e54": "0xd446a98f88e1d053d1f64986e3ed083bb1ab7e5a" + } +} diff --git a/constants/pools-zaps/xdai.json b/constants/pools-zaps/xdai.json index 13c0979c..f28bb5f1 100644 --- a/constants/pools-zaps/xdai.json +++ b/constants/pools-zaps/xdai.json @@ -1,11 +1,12 @@ { - "implementations": { - "v1metausd": "0x87c067fac25f123554a0e76596bf28cfa37fd5e9", - "metausd": "0x87c067fac25f123554a0e76596bf28cfa37fd5e9", - "metausdbalances": "0x87c067fac25f123554a0e76596bf28cfa37fd5e9" - }, - "pools": { - "0x85ba9dfb4a3e4541420fc75be02e2b42042d7e46": "0xdf6eb52c4a9d7d5964b918c50d47a643fd7d3d4c", - "0x056c6c5e684cec248635ed86033378cc444459b0": "0xe3fff29d4dc930ebb787fecd49ee5963dadf60b6" - } -} \ No newline at end of file + "implementations": { + "v1metausd": "0x87c067fac25f123554a0e76596bf28cfa37fd5e9", + "metausd": "0x87c067fac25f123554a0e76596bf28cfa37fd5e9", + "metausdbalances": "0x87c067fac25f123554a0e76596bf28cfa37fd5e9" + }, + "pools": { + "0x85ba9dfb4a3e4541420fc75be02e2b42042d7e46": "0xdf6eb52c4a9d7d5964b918c50d47a643fd7d3d4c", + "0x5633e00994896d0f472926050ecb32e38bef3e65": "0xF182926A64C0A19234E7E1FCDfE772aA7A1CA351", + "0x056c6c5e684cec248635ed86033378cc444459b0": "0xe3fff29d4dc930ebb787fecd49ee5963dadf60b6" + } +} diff --git a/endpoints.md b/endpoints.md index 44ee6712..257d71be 100644 --- a/endpoints.md +++ b/endpoints.md @@ -1,5 +1,6 @@ ## Table of Contents + - [getPlatforms](#getplatforms) - [getPools](#getpools) - [getETHprice](#getethprice) - [getFactoryTVL](#getfactorytvl) @@ -14,6 +15,18 @@ Last generation time of an endpoint can be found in the `generatedTimeMs` property. +### getPlatforms + +Returns platforms that Curve is deployed on, and which pool registries are available on each platform. +Useful to then query pools (see [`getPools`](#getpools) below) + +``` +GET /api/getPlatforms +``` + +**View**: +[getPlatforms](https://api.curve.fi/api/getPlatforms) + ### getPools Retrieves all pools for any registry on any chain where Curve is deployed. @@ -29,38 +42,12 @@ GET /api/getPools// **View**: -*This is the list of all deployed registries on all chains, as of June 14, 2023* +Example endpoints available: -- https://api.curve.fi/api/getPools/ethereum/main -- https://api.curve.fi/api/getPools/ethereum/crypto -- https://api.curve.fi/api/getPools/ethereum/factory -- https://api.curve.fi/api/getPools/ethereum/factory-crypto - https://api.curve.fi/api/getPools/ethereum/factory-crvusd -- https://api.curve.fi/api/getPools/ethereum/factory-tricrypto -- https://api.curve.fi/api/getPools/polygon/main -- https://api.curve.fi/api/getPools/polygon/crypto -- https://api.curve.fi/api/getPools/polygon/factory - https://api.curve.fi/api/getPools/polygon/factory-crypto -- https://api.curve.fi/api/getPools/fantom/main -- https://api.curve.fi/api/getPools/fantom/crypto -- https://api.curve.fi/api/getPools/fantom/factory -- https://api.curve.fi/api/getPools/fantom/factory-crypto -- https://api.curve.fi/api/getPools/fantom/factory-eywa -- https://api.curve.fi/api/getPools/arbitrum/main -- https://api.curve.fi/api/getPools/arbitrum/crypto -- https://api.curve.fi/api/getPools/arbitrum/factory -- https://api.curve.fi/api/getPools/avalanche/main -- https://api.curve.fi/api/getPools/avalanche/crypto -- https://api.curve.fi/api/getPools/avalanche/factory -- https://api.curve.fi/api/getPools/optimism/main -- https://api.curve.fi/api/getPools/optimism/crypto -- https://api.curve.fi/api/getPools/optimism/factory -- https://api.curve.fi/api/getPools/xdai/main -- https://api.curve.fi/api/getPools/xdai/crypto -- https://api.curve.fi/api/getPools/xdai/factory - -This endpoint returns *all* pools from all these registries, in exactly the same shape, except for the fact that each pool object will also contain a `blockchainId` prop. -For each pool object in the endpoints above, the `id` prop is unique. For each pool object in this single "all pools" endpoint, the combination of props `blockchainId` and `id` is unique. + +For each pool object in the endpoints above, the `id` prop is unique. ### getETHprice ``` @@ -224,39 +211,3 @@ NONE "rawFees": 23928.77840856761 //fees for the week in USD } ``` - -### getApys - -*Note: deprecated on June 11, 2022; data is old and incomplete, please use other endpoints* - -``` -GET /api/getApys -GET /api/getApys?address=0xADDRESS -``` -Returns all types of APYs for all Curve pools (base APY from trading fees, CRV APY from CRV distribution, and any additional rewards the pool may have) - -**View**: -[getApys](https://api.curve.fi/api/getApys) - -**Parameters:** -- `address` (optional): address to use to calculate CRV boosts and APYs; if no address is provided, the baseline boost value (`1`) is used - - -**Response :** - -``` -"data": { - "apys": { - "saave": { - "baseApy": "2.21", - "crvApy": 4.430468225441863, - "crvBoost":1, - "additionalRewards": [ - { "name": "STKAAVE", "apy": 0.6132910288661984 } - ], - "crvPrice": 1.38 - }, - … - } -} -``` diff --git a/now.json b/now.json index a77fe3ca..f2dbb2ce 100644 --- a/now.json +++ b/now.json @@ -11,28 +11,46 @@ "headers": [ { "source": "/(.*)", - "headers" : [ + "headers": [ { - "key" : "Vary", - "value" : "Accept-Encoding" + "key": "Vary", + "value": "Accept-Encoding" }, { - "key" : "X-Content-Type-Options", - "value" : "nosniff" + "key": "X-Content-Type-Options", + "value": "nosniff" }, { - "key" : "X-Frame-Options", - "value" : "DENY" + "key": "X-Frame-Options", + "value": "DENY" }, { - "key" : "X-XSS-Protection", - "value" : "1; mode=block" + "key": "X-XSS-Protection", + "value": "1; mode=block" }, - { "key": "Access-Control-Allow-Credentials", "value": "true" }, - { "key": "Access-Control-Allow-Origin", "value": "*" }, - { "key": "Access-Control-Allow-Methods", "value": "GET,OPTIONS,PATCH,DELETE,POST,PUT" }, - { "key": "Access-Control-Allow-Headers", "value": "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version" } + { + "key": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + }, + { + "key": "Access-Control-Allow-Methods", + "value": "GET,OPTIONS,PATCH,DELETE,POST,PUT" + }, + { + "key": "Access-Control-Allow-Headers", + "value": "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version" + } ] } - ] + ], + "functions": { + "pages/api/**/*.js": { + "memory": 3008, + "maxDuration": 900 + } + } } diff --git a/package-lock.json b/package-lock.json index 12d20d2a..cf18fa04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,13 +8,14 @@ "name": "curve-api", "version": "0.1.0", "dependencies": { + "@curvefi/stablecoin-api": "^1.3.7", "axios": "^0.21.2", "big-number": "^2.0.0", "bignumber.js": "^9.0.1", "exponential-backoff": "^3.1.0", "form-urlencoded": "^6.0.4", "graphql": "^15.5.1", - "graphql-request": "^3.4.0", + "graphql-request": "^6.1.0", "lodash.groupby": "^4.6.0", "lodash.partition": "^4.6.0", "lodash.uniq": "^4.5.0", @@ -585,6 +586,19 @@ "node": ">=6.9.0" } }, + "node_modules/@curvefi/stablecoin-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@curvefi/stablecoin-api/-/stablecoin-api-1.3.7.tgz", + "integrity": "sha512-AmJwwHXmWuZYsnkmF2d/dnTEorm1VZp693eNRS7aubTKE6gCk71qXY3c2Hz4a60hRtHadGprbLpsxxsDVlxgOA==", + "dependencies": { + "@ethersproject/networks": "^5.5.0", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "ethcall": "^4.2.5", + "ethers": "^5.4.6", + "memoizee": "^0.4.15" + } + }, "node_modules/@eslint/eslintrc": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", @@ -645,9 +659,9 @@ } }, "node_modules/@ethersproject/abstract-provider": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.10.tgz", - "integrity": "sha512-OSReY5iz94iIaPlRvLiJP8YVIvQLx4aUvMMnHWSaA/vTU8QHZmgNlt4OBdYV1+aFY8Xl+VRYiWBHq72ZDKXXCQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", "funding": [ { "type": "individual", @@ -659,19 +673,19 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/networks": "^5.0.7", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/transactions": "^5.0.9", - "@ethersproject/web": "^5.0.12" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" } }, "node_modules/@ethersproject/abstract-signer": { - "version": "5.0.14", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.14.tgz", - "integrity": "sha512-JztBwVO7o5OHLh2vyjordlS4/1EjRyaECtc8vPdXTF1i4dXN+J0coeRoPN6ZFbBvi/YbaB6br2fvqhst1VQD/g==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", "funding": [ { "type": "individual", @@ -683,17 +697,17 @@ } ], "dependencies": { - "@ethersproject/abstract-provider": "^5.0.8", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7" + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, "node_modules/@ethersproject/address": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.11.tgz", - "integrity": "sha512-Et4GBdD8/tsBGjCEOKee9upN29qjL5kbRcmJifb4Penmiuh9GARXL2/xpXvEp5EW+EIW/rfCHFJrkYBgoQFQBw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", "funding": [ { "type": "individual", @@ -705,17 +719,17 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/rlp": "^5.0.7" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" } }, "node_modules/@ethersproject/base64": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.9.tgz", - "integrity": "sha512-37RBz5LEZ9SlTNGiWCYFttnIN9J7qVs9Xo2EbqGqDH5LfW9EIji66S+YDMpXVo1zWDax1FkEldAoatxHK2gfgA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", "funding": [ { "type": "individual", @@ -727,13 +741,13 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.0.9" + "@ethersproject/bytes": "^5.7.0" } }, - "node_modules/@ethersproject/bignumber": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.15.tgz", - "integrity": "sha512-MTADqnyacvdRwtKh7o9ujwNDSM1SDJjYDMYAzjIgjoi9rh6TY4suMbhCa3i2vh3SUXiXSICyTI8ui+NPdrZ9Lw==", + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", "funding": [ { "type": "individual", @@ -745,20 +759,34 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "bn.js": "^4.4.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, - "node_modules/@ethersproject/bignumber/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } }, "node_modules/@ethersproject/bytes": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.11.tgz", - "integrity": "sha512-D51plLYY5qF05AsoVQwIZVLqlBkaTPVHVP/1WmmBIWyHB0cRW0C9kh0kx5Exo51rB63Hk8PfHxc7SmpoaQFEyg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", "funding": [ { "type": "individual", @@ -770,13 +798,58 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.0.8" + "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/constants": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.10.tgz", - "integrity": "sha512-OSo8jxkHLDXieCy8bgOFR7lMfgPxEzKvSDdP+WAWHCDM8+orwch0B6wzkTmiQFgryAtIctrBt5glAdJikZ3hGw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts/node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", "funding": [ { "type": "individual", @@ -788,13 +861,76 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.0.13" + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, "node_modules/@ethersproject/hash": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.12.tgz", - "integrity": "sha512-kn4QN+fhNFbUgX3XZTZUaQixi0oyfIEY+hfW+KtkHu+rq7dV76oAIvaLEEynu1/4npOL38E4X4YI42gGZk+C0Q==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", "funding": [ { "type": "individual", @@ -806,20 +942,25 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.0.10", - "@ethersproject/address": "^5.0.9", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/strings": "^5.0.8" + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" } }, "node_modules/@ethersproject/keccak256": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.9.tgz", - "integrity": "sha512-zhdUTj6RGtCJSgU+bDrWF6cGbvW453LoIC1DSNWrTlXzC7WuH4a+EiPrgc7/kNoRxerKuA/cxYlI8GwNtVtDlw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", "funding": [ { "type": "individual", @@ -831,19 +972,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.0.9", - "js-sha3": "0.5.7" + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" } }, - "node_modules/@ethersproject/keccak256/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - }, "node_modules/@ethersproject/logger": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.10.tgz", - "integrity": "sha512-0y2T2NqykDrbPM3Zw9RSbPkDOxwChAL8detXaom76CfYoGxsOnRP/zTX8OUAV+x9LdwzgbWvWmeXrc0M7SuDZw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", "funding": [ { "type": "individual", @@ -856,9 +992,9 @@ ] }, "node_modules/@ethersproject/networks": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.9.tgz", - "integrity": "sha512-L8+VCQwArBLGkxZb/5Ns/OH/OxP38AcaveXIxhUTq+VWpXYjrObG3E7RDQIKkUx1S1IcQl/UWTz5w4DK0UitJg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", "funding": [ { "type": "individual", @@ -870,13 +1006,107 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.0.8" + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" } }, "node_modules/@ethersproject/properties": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.9.tgz", - "integrity": "sha512-ZCjzbHYTw+rF1Pn8FDCEmx3gQttwIHcm/6Xee8g/M3Ga3SfW4tccNMbs5zqnBH0E4RoOPaeNgyg1O68TaF0tlg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", "funding": [ { "type": "individual", @@ -888,13 +1118,14 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.0.8" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/rlp": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.9.tgz", - "integrity": "sha512-ns1U7ZMVeruUW6JXc4om+1w3w4ynHN/0fpwmeNTsAjwGKoF8SAUgue6ylKpHKWSti2idx7jDxbn8hNNFHk67CA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", "funding": [ { "type": "individual", @@ -906,14 +1137,34 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" } }, "node_modules/@ethersproject/signing-key": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.11.tgz", - "integrity": "sha512-Jfcru/BGwdkXhLxT+8WCZtFy7LL0TPFZw05FAb5asxB/MyVsEfNdNxGDtjVE9zXfmRSPe/EusXYY4K7wcygOyQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", "funding": [ { "type": "individual", @@ -925,16 +1176,41 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "elliptic": "6.5.4" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, "node_modules/@ethersproject/strings": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.10.tgz", - "integrity": "sha512-KAeoS1tZ9/5ECXiIZA6S6hywbD0so2VmuW+Wfyo5EDXeyZ6Na1nxTPhTnW7voQmjbeYJffCrOc0qLFJeylyg7w==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", "funding": [ { "type": "individual", @@ -946,15 +1222,61 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/constants": "^5.0.8", - "@ethersproject/logger": "^5.0.8" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/transactions": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.11.tgz", - "integrity": "sha512-ftsRvR9+gQp7L63F6+XmstvsZ4w8GtWvQB08e/zB+oB86Fnhq8+i/tkgpJplSHC8I/qgiCisva+M3u2GVhDFPA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", "funding": [ { "type": "individual", @@ -966,21 +1288,49 @@ } ], "dependencies": { - "@ethersproject/address": "^5.0.9", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/constants": "^5.0.8", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/rlp": "^5.0.7", - "@ethersproject/signing-key": "^5.0.8" + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, "node_modules/@ethersproject/web": { - "version": "5.0.14", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.14.tgz", - "integrity": "sha512-QpTgplslwZ0Sp9oKNLoRuS6TKxnkwfaEk3gr7zd7XLF8XBsYejsrQO/03fNfnMx/TAT/RR6WEw/mbOwpRSeVRA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", "funding": [ { "type": "individual", @@ -992,11 +1342,19 @@ } ], "dependencies": { - "@ethersproject/base64": "^5.0.7", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/strings": "^5.0.8" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@jridgewell/gen-mapping": { @@ -1270,6 +1628,16 @@ "@types/node": "*" } }, + "node_modules/abi-coder": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/abi-coder/-/abi-coder-4.1.1.tgz", + "integrity": "sha512-CVEKpbWSIrb6JxLPsAuXrrtL8ml2MnEEcINgxOp7gR2u4GUFEKO4e0raAD1+c6UdFJ2QtX2NRoYol9k1B3TxHw==", + "dependencies": { + "@ethersproject/abi": "^5.0.0", + "@ethersproject/keccak256": "^5.0.0", + "@ethersproject/strings": "^5.0.0" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -1303,6 +1671,11 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1582,6 +1955,11 @@ "tweetnacl": "^0.14.3" } }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/big-number": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/big-number/-/big-number-2.0.0.tgz", @@ -1606,9 +1984,9 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "node_modules/body-parser": { "version": "1.20.1", @@ -3162,6 +3540,24 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, + "node_modules/ethcall": { + "version": "4.8.13", + "resolved": "https://registry.npmjs.org/ethcall/-/ethcall-4.8.13.tgz", + "integrity": "sha512-kpD000saTfBDoQn5g8gqTJhjGinWnAPkAwyYCN8SsGCUgjZxTMtEVwA+soo4ii/uyRYKMDeFFVk866GqU0jerA==", + "dependencies": { + "@ethersproject/abi": "^5.0.0", + "@ethersproject/bytes": "^5.0.0", + "@ethersproject/contracts": "^5.0.0", + "@ethersproject/providers": "^5.0.0", + "@types/node": "^18.6.3", + "abi-coder": "^4.0.0" + } + }, + "node_modules/ethcall/node_modules/@types/node": { + "version": "18.17.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.11.tgz", + "integrity": "sha512-r3hjHPBu+3LzbGBa8DHnr/KAeTEEOrahkcL+cZc4MaBMTM+mk8LtXR+zw+nqfjuDZZzYTYgTcpHuP+BEQk069g==" + }, "node_modules/ethereum-bloom-filters": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.9.tgz", @@ -3227,6 +3623,79 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, + "node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, "node_modules/ethjs-unit": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", @@ -3345,17 +3814,6 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "node_modules/extract-files": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", - "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==", - "engines": { - "node": "^10.17.0 || ^12.0.0 || >= 13.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/jaydenseric" - } - }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -3670,29 +4128,15 @@ } }, "node_modules/graphql-request": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.4.0.tgz", - "integrity": "sha512-acrTzidSlwAj8wBNO7Q/UQHS8T+z5qRGquCQRv9J1InwR01BBWV9ObnoE+JS5nCCEj8wSGS0yrDXVDoRiKZuOg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", + "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", "dependencies": { - "cross-fetch": "^3.0.6", - "extract-files": "^9.0.0", - "form-data": "^3.0.0" + "@graphql-typed-document-node/core": "^3.2.0", + "cross-fetch": "^3.1.5" }, "peerDependencies": { - "graphql": "14.x || 15.x" - } - }, - "node_modules/graphql-request/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "graphql": "14 - 16" } }, "node_modules/har-schema": { @@ -7553,6 +7997,19 @@ } } }, + "@curvefi/stablecoin-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@curvefi/stablecoin-api/-/stablecoin-api-1.3.7.tgz", + "integrity": "sha512-AmJwwHXmWuZYsnkmF2d/dnTEorm1VZp693eNRS7aubTKE6gCk71qXY3c2Hz4a60hRtHadGprbLpsxxsDVlxgOA==", + "requires": { + "@ethersproject/networks": "^5.5.0", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "ethcall": "^4.2.5", + "ethers": "^5.4.6", + "memoizee": "^0.4.15" + } + }, "@eslint/eslintrc": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", @@ -7604,194 +8061,392 @@ } }, "@ethersproject/abstract-provider": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.10.tgz", - "integrity": "sha512-OSReY5iz94iIaPlRvLiJP8YVIvQLx4aUvMMnHWSaA/vTU8QHZmgNlt4OBdYV1+aFY8Xl+VRYiWBHq72ZDKXXCQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", "requires": { - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/networks": "^5.0.7", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/transactions": "^5.0.9", - "@ethersproject/web": "^5.0.12" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" } }, "@ethersproject/abstract-signer": { - "version": "5.0.14", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.14.tgz", - "integrity": "sha512-JztBwVO7o5OHLh2vyjordlS4/1EjRyaECtc8vPdXTF1i4dXN+J0coeRoPN6ZFbBvi/YbaB6br2fvqhst1VQD/g==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", "requires": { - "@ethersproject/abstract-provider": "^5.0.8", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7" + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, "@ethersproject/address": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.11.tgz", - "integrity": "sha512-Et4GBdD8/tsBGjCEOKee9upN29qjL5kbRcmJifb4Penmiuh9GARXL2/xpXvEp5EW+EIW/rfCHFJrkYBgoQFQBw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", "requires": { - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/rlp": "^5.0.7" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" } }, "@ethersproject/base64": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.9.tgz", - "integrity": "sha512-37RBz5LEZ9SlTNGiWCYFttnIN9J7qVs9Xo2EbqGqDH5LfW9EIji66S+YDMpXVo1zWDax1FkEldAoatxHK2gfgA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", "requires": { - "@ethersproject/bytes": "^5.0.9" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, "@ethersproject/bignumber": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.15.tgz", - "integrity": "sha512-MTADqnyacvdRwtKh7o9ujwNDSM1SDJjYDMYAzjIgjoi9rh6TY4suMbhCa3i2vh3SUXiXSICyTI8ui+NPdrZ9Lw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", "requires": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "bn.js": "^4.4.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" } }, "@ethersproject/bytes": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.11.tgz", - "integrity": "sha512-D51plLYY5qF05AsoVQwIZVLqlBkaTPVHVP/1WmmBIWyHB0cRW0C9kh0kx5Exo51rB63Hk8PfHxc7SmpoaQFEyg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", "requires": { - "@ethersproject/logger": "^5.0.8" + "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/constants": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.10.tgz", - "integrity": "sha512-OSo8jxkHLDXieCy8bgOFR7lMfgPxEzKvSDdP+WAWHCDM8+orwch0B6wzkTmiQFgryAtIctrBt5glAdJikZ3hGw==", - "requires": { - "@ethersproject/bignumber": "^5.0.13" + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "requires": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + } } }, "@ethersproject/hash": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.12.tgz", - "integrity": "sha512-kn4QN+fhNFbUgX3XZTZUaQixi0oyfIEY+hfW+KtkHu+rq7dV76oAIvaLEEynu1/4npOL38E4X4YI42gGZk+C0Q==", - "requires": { - "@ethersproject/abstract-signer": "^5.0.10", - "@ethersproject/address": "^5.0.9", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/strings": "^5.0.8" + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" } }, "@ethersproject/keccak256": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.9.tgz", - "integrity": "sha512-zhdUTj6RGtCJSgU+bDrWF6cGbvW453LoIC1DSNWrTlXzC7WuH4a+EiPrgc7/kNoRxerKuA/cxYlI8GwNtVtDlw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", "requires": { - "@ethersproject/bytes": "^5.0.9", - "js-sha3": "0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - } + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" } }, "@ethersproject/logger": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.10.tgz", - "integrity": "sha512-0y2T2NqykDrbPM3Zw9RSbPkDOxwChAL8detXaom76CfYoGxsOnRP/zTX8OUAV+x9LdwzgbWvWmeXrc0M7SuDZw==" + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" }, "@ethersproject/networks": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.9.tgz", - "integrity": "sha512-L8+VCQwArBLGkxZb/5Ns/OH/OxP38AcaveXIxhUTq+VWpXYjrObG3E7RDQIKkUx1S1IcQl/UWTz5w4DK0UitJg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", "requires": { - "@ethersproject/logger": "^5.0.8" + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" } }, "@ethersproject/properties": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.9.tgz", - "integrity": "sha512-ZCjzbHYTw+rF1Pn8FDCEmx3gQttwIHcm/6Xee8g/M3Ga3SfW4tccNMbs5zqnBH0E4RoOPaeNgyg1O68TaF0tlg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + }, + "dependencies": { + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} + } + } + }, + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", "requires": { - "@ethersproject/logger": "^5.0.8" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/rlp": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.9.tgz", - "integrity": "sha512-ns1U7ZMVeruUW6JXc4om+1w3w4ynHN/0fpwmeNTsAjwGKoF8SAUgue6ylKpHKWSti2idx7jDxbn8hNNFHk67CA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", "requires": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" } }, "@ethersproject/signing-key": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.11.tgz", - "integrity": "sha512-Jfcru/BGwdkXhLxT+8WCZtFy7LL0TPFZw05FAb5asxB/MyVsEfNdNxGDtjVE9zXfmRSPe/EusXYY4K7wcygOyQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", "requires": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "elliptic": "6.5.4" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, "@ethersproject/strings": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.10.tgz", - "integrity": "sha512-KAeoS1tZ9/5ECXiIZA6S6hywbD0so2VmuW+Wfyo5EDXeyZ6Na1nxTPhTnW7voQmjbeYJffCrOc0qLFJeylyg7w==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", "requires": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/constants": "^5.0.8", - "@ethersproject/logger": "^5.0.8" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/transactions": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.11.tgz", - "integrity": "sha512-ftsRvR9+gQp7L63F6+XmstvsZ4w8GtWvQB08e/zB+oB86Fnhq8+i/tkgpJplSHC8I/qgiCisva+M3u2GVhDFPA==", - "requires": { - "@ethersproject/address": "^5.0.9", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/constants": "^5.0.8", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/rlp": "^5.0.7", - "@ethersproject/signing-key": "^5.0.8" + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, "@ethersproject/web": { - "version": "5.0.14", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.14.tgz", - "integrity": "sha512-QpTgplslwZ0Sp9oKNLoRuS6TKxnkwfaEk3gr7zd7XLF8XBsYejsrQO/03fNfnMx/TAT/RR6WEw/mbOwpRSeVRA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", "requires": { - "@ethersproject/base64": "^5.0.7", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/strings": "^5.0.8" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, + "@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "requires": {} + }, "@jridgewell/gen-mapping": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", @@ -7949,6 +8604,16 @@ "@types/node": "*" } }, + "abi-coder": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/abi-coder/-/abi-coder-4.1.1.tgz", + "integrity": "sha512-CVEKpbWSIrb6JxLPsAuXrrtL8ml2MnEEcINgxOp7gR2u4GUFEKO4e0raAD1+c6UdFJ2QtX2NRoYol9k1B3TxHw==", + "requires": { + "@ethersproject/abi": "^5.0.0", + "@ethersproject/keccak256": "^5.0.0", + "@ethersproject/strings": "^5.0.0" + } + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -7971,6 +8636,11 @@ "dev": true, "requires": {} }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -8186,6 +8856,11 @@ "tweetnacl": "^0.14.3" } }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "big-number": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/big-number/-/big-number-2.0.0.tgz", @@ -8207,9 +8882,9 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "body-parser": { "version": "1.20.1", @@ -9479,6 +10154,26 @@ } } }, + "ethcall": { + "version": "4.8.13", + "resolved": "https://registry.npmjs.org/ethcall/-/ethcall-4.8.13.tgz", + "integrity": "sha512-kpD000saTfBDoQn5g8gqTJhjGinWnAPkAwyYCN8SsGCUgjZxTMtEVwA+soo4ii/uyRYKMDeFFVk866GqU0jerA==", + "requires": { + "@ethersproject/abi": "^5.0.0", + "@ethersproject/bytes": "^5.0.0", + "@ethersproject/contracts": "^5.0.0", + "@ethersproject/providers": "^5.0.0", + "@types/node": "^18.6.3", + "abi-coder": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "18.17.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.11.tgz", + "integrity": "sha512-r3hjHPBu+3LzbGBa8DHnr/KAeTEEOrahkcL+cZc4MaBMTM+mk8LtXR+zw+nqfjuDZZzYTYgTcpHuP+BEQk069g==" + } + } + }, "ethereum-bloom-filters": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.9.tgz", @@ -9544,6 +10239,61 @@ } } }, + "ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "requires": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + } + } + }, "ethjs-unit": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", @@ -9655,11 +10405,6 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extract-files": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", - "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==" - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -9905,25 +10650,12 @@ "integrity": "sha512-FeTRX67T3LoE3LWAxxOlW2K3Bz+rMYAC18rRguK4wgXaTZMiJwSUwDmPFo3UadAKbzirKIg5Qy+sNJXbpPRnQw==" }, "graphql-request": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.4.0.tgz", - "integrity": "sha512-acrTzidSlwAj8wBNO7Q/UQHS8T+z5qRGquCQRv9J1InwR01BBWV9ObnoE+JS5nCCEj8wSGS0yrDXVDoRiKZuOg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", + "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", "requires": { - "cross-fetch": "^3.0.6", - "extract-files": "^9.0.0", - "form-data": "^3.0.0" - }, - "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } + "@graphql-typed-document-node/core": "^3.2.0", + "cross-fetch": "^3.1.5" } }, "har-schema": { diff --git a/package.json b/package.json index 10271c70..2b992060 100644 --- a/package.json +++ b/package.json @@ -8,13 +8,14 @@ "start": "next start" }, "dependencies": { + "@curvefi/stablecoin-api": "^1.3.7", "axios": "^0.21.2", "big-number": "^2.0.0", "bignumber.js": "^9.0.1", "exponential-backoff": "^3.1.0", "form-urlencoded": "^6.0.4", "graphql": "^15.5.1", - "graphql-request": "^3.4.0", + "graphql-request": "^6.1.0", "lodash.groupby": "^4.6.0", "lodash.partition": "^4.6.0", "lodash.uniq": "^4.5.0", diff --git a/pages/api/getAllGauges.js b/pages/api/getAllGauges.js index 981f3b9e..28502b65 100644 --- a/pages/api/getAllGauges.js +++ b/pages/api/getAllGauges.js @@ -26,8 +26,8 @@ import GAUGE_ABI from '../../constants/abis/example_gauge_2.json'; import META_REGISTRY_ABI from '../../constants/abis/meta-registry.json'; /* eslint-disable object-curly-spacing, object-curly-newline, quote-props, quotes, key-spacing, comma-spacing */ -const GAUGE_IS_ROOT_GAUGE_ABI = [{"stateMutability":"view","type":"function","name":"bridger","inputs":[],"outputs":[{"name":"","type":"address"}]}]; -const GAUGE_IS_ROOT_GAUGE_2_ABI = [{"stateMutability":"view","type":"function","name":"emissions","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2778}]; +const GAUGE_IS_ROOT_GAUGE_ABI = [{ "stateMutability": "view", "type": "function", "name": "bridger", "inputs": [], "outputs": [{ "name": "", "type": "address" }] }]; +const GAUGE_IS_ROOT_GAUGE_2_ABI = [{ "stateMutability": "view", "type": "function", "name": "emissions", "inputs": [], "outputs": [{ "name": "", "type": "uint256" }], "gas": 2778 }]; /* eslint-enable object-curly-spacing, object-curly-newline, quote-props, quotes, key-spacing, comma-spacing */ const SIDECHAINS_WITH_FACTORY_GAUGES = [ @@ -40,6 +40,7 @@ const SIDECHAINS_WITH_FACTORY_GAUGES = [ 'moonbeam', 'kava', 'celo', + 'base', ]; const lc = (str) => str.toLowerCase(); @@ -83,6 +84,7 @@ const getPoolShortName = (pool) => { }; export default fn(async ({ blockchainId } = {}) => { + console.log('getAllGauges CALL', blockchainId) const chainsToQuery = SIDECHAINS_WITH_FACTORY_GAUGES; const blockchainIds = [ 'ethereum', @@ -396,11 +398,22 @@ export default fn(async ({ blockchainId } = {}) => { hasCrv, areCrvRewardsStuckInBridge, rewardsNeedNudging, + isKilled, }) => { const pool = getPoolByLpTokenAddress(swap_token, blockchainId); const name = getPoolName(pool); const shortName = getPoolShortName(pool); + const isSupersededByOtherGauge = blockchainFactoGauges.some((factoGauge) => ( + factoGauge.gauge !== gauge && + factoGauge.blockchainId === blockchainId && + factoGauge.swap === swap && + !factoGauge.isKilled && + factoGauge.hasCrv && + (isKilled || !hasCrv) + )); + if (isSupersededByOtherGauge) return null; // Ignore this gauge, a prefered one exists + return [ name, { poolUrls: pool.poolUrls, @@ -422,6 +435,7 @@ export default fn(async ({ blockchainId } = {}) => { inflation_rate, }, hasNoCrv: !hasCrv, + is_killed: isKilled, lpTokenPrice, ...(blockchainId !== 'ethereum' ? { gaugeStatus: { @@ -431,7 +445,7 @@ export default fn(async ({ blockchainId } = {}) => { } : {}), }, ]; - }) + }).filter((o) => o !== null) )))), }; diff --git a/pages/api/getAllPoolsVolume/index.js b/pages/api/getAllPoolsVolume/index.js index e2497235..69e5aa45 100644 --- a/pages/api/getAllPoolsVolume/index.js +++ b/pages/api/getAllPoolsVolume/index.js @@ -3,12 +3,25 @@ import { fn } from 'utils/api'; export default fn(async ({ blockchainId }) => { if (typeof blockchainId === 'undefined') blockchainId = 'ethereum'; // Default value - const { data: { totalVolume, cryptoShare } } = await (await fetch(`https://api.curve.fi/api/getSubgraphData/${blockchainId}`)).json(); + const { success, data } = await (await fetch(`https://api.curve.fi/api/getSubgraphData/${blockchainId}`)).json(); - return { - totalVolume, - cryptoShare - }; + if (success) { + const { totalVolume, cryptoShare } = data; + + return { + totalVolume, + cryptoShare + }; + } else { + // Fallback for chains without subgraph available; this won't be necessary anymore once we've moved + // to curve-prices for all chains + const { data } = await (await fetch(`https://api.curve.fi/api/getFactoryAPYs-${blockchainId}`)).json(); + + return { + totalVolume: data.totalVolume, + cryptoShare: undefined, + }; + } }, { maxAge: 10 * 60, // 10m }); diff --git a/pages/api/getApys.js b/pages/api/getApys.js deleted file mode 100644 index db0e5aa2..00000000 --- a/pages/api/getApys.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Note: this endpoint is deprecated, its data is stale and incomplete - */ - -import getAPY from 'utils/data/getAPY'; -import getCRVAPY from 'utils/data/getCRVAPY'; -import getMainPoolsGaugeRewards from 'pages/api/getMainPoolsGaugeRewards'; -import { arrayToHashmap } from 'utils/Array'; -import pools from 'constants/pools'; -import { fn } from '../../utils/api'; - -export default fn(async ({ address }) => { - const getGauges = (await import('pages/api/getAllGauges')).default; - const gaugesData = await getGauges.straightCall({ blockchainId: 'ethereum' }); - - const [ - mainPoolsGaugeRewards, - { weeklyApy: baseApys }, - { CRVAPYs: crvApys, boosts, CRVprice: crvPrice }, - ] = await Promise.all([ - getMainPoolsGaugeRewards.straightCall(gaugesData), - getAPY(), - getCRVAPY(address || '0x0000000000000000000000000000000000000000'), - ]); - - return arrayToHashmap(pools.map((pool, index) => [pool.id, { - baseApy: baseApys[index], - crvApy: crvApys[pool.id], - crvBoost: boosts[pool.id], - additionalRewards: ( - pool.addresses.gauge ? ( - mainPoolsGaugeRewards[pool.addresses.gauge.toLowerCase()]?.map(({ symbol, apy }) => ({ - name: symbol, - apy, - })) || [] - ) : [] - ), - crvPrice, - }])); -}, { - maxAge: 10 * 60, // 10m -}); diff --git a/pages/api/getBaseApys/[blockchainId].js b/pages/api/getBaseApys/[blockchainId].js new file mode 100644 index 00000000..3481e943 --- /dev/null +++ b/pages/api/getBaseApys/[blockchainId].js @@ -0,0 +1,203 @@ +/** + * This endpoint returns all base apy data for curve pools on each chain. + */ +const lc = (str) => str.toLowerCase(); + +import { fn } from 'utils/api'; +import Web3 from 'web3'; +import BN from 'bignumber.js'; +import groupBy from 'lodash.groupby'; +import configs from 'constants/configs'; +import { flattenArray, sumBN } from 'utils/Array'; +import { sequentialPromiseMap } from 'utils/Async'; +import { multiCall } from 'utils/Calls'; +import { getNowTimestamp } from 'utils/Date'; +import getAllCurvePoolsData from 'utils/data/curve-pools-data'; +import factorypool3Abi from 'constants/abis/factory_swap.json'; +import factorypool3BaseTricryptoAbi from 'constants/abis/factory_tricrypto_swap.json'; +import factorypool3BaseCryptoAbi from 'constants/abis/factory_crypto_swap.json'; +import { uintToBN } from 'utils/Web3'; + +const isCryptoPool = ({ registryId }) => registryId.includes('crypto'); + +// xcp_profit and xcp_profit_a can return '0' when queried for a crypto pool with no activity, whether +// at an older block or at the latest block: this makes returned data default to the proper initial value. +const safeXcpProfit = (xcpProfit) => Number(xcpProfit) === 0 ? 1e18 : xcpProfit + +export default fn(async ({ blockchainId }) => { + const config = configs[blockchainId]; + + const web3 = new Web3(config.rpcUrl); + const networkSettings = { + web3, + multicall2Address: config.multicall2Address, + }; + + if (typeof config === 'undefined') { + throw new Error(`Endpoint "getVolumes" not available for "${blockchainId}"`); + } + + const timestampDayOld = getNowTimestamp() - 86400; + const timestampWeekOld = getNowTimestamp() - (7 * 86400); + + + const [ + allPools, + { height: blockNumberDayOld }, + { height: blockNumberWeekOld }, + ] = await Promise.all([ + getAllCurvePoolsData([blockchainId]), + (await fetch(`https://coins.llama.fi/block/${blockchainId}/${timestampDayOld}`)).json(), + (await fetch(`https://coins.llama.fi/block/${blockchainId}/${timestampWeekOld}`)).json(), + ]); + + const getPoolByAddress = (address) => ( + allPools.find((pool) => (lc(pool.address) === lc(address))) + ); + + const [ + weekOldData, + dayOldData, + currentData, + ] = await sequentialPromiseMap([blockNumberWeekOld, blockNumberDayOld, undefined], async (blockNumber) => ( + groupBy(await multiCall(flattenArray(allPools.map((pool) => { + const poolAbi = ( + pool.registryId === 'factory-tricrypto' ? factorypool3BaseTricryptoAbi : + pool.registryId.includes('crypto') ? factorypool3BaseCryptoAbi : + factorypool3Abi + ); + + return [ + ...(isCryptoPool(pool) ? [{ + address: pool.address, + abi: poolAbi, + methodName: 'xcp_profit', + metaData: { type: 'xcpProfit', pool }, + networkSettings: { + ...networkSettings, + blockNumber, + }, + superSettings: { + fallbackValue: 1e18, + }, + }, { + address: pool.address, + abi: poolAbi, + methodName: 'xcp_profit_a', + metaData: { type: 'xcpProfitA', pool }, + networkSettings: { + ...networkSettings, + blockNumber, + }, + superSettings: { + fallbackValue: 1e18, + }, + }] : [{ + address: pool.address, + abi: poolAbi, + methodName: 'get_virtual_price', + metaData: { type: 'virtualPrice', pool }, + networkSettings: { + ...networkSettings, + blockNumber, + }, + superSettings: { + fallbackValue: 1e18, + }, + }]), + ]; + }))), 'metaData.pool.address') + )); + + const baseApys = allPools.map((pool) => { + const weekOldPoolData = groupBy(weekOldData[pool.address], 'metaData.type'); + const dayOldPoolData = groupBy(dayOldData[pool.address], 'metaData.type'); + const currentPoolData = groupBy(currentData[pool.address], 'metaData.type'); + + if (!dayOldPoolData || !currentPoolData) return null; + + let latestDailyApyPcent; + let latestWeeklyApyPcent; + + /** + * Calculate base daily and weekly apys + */ + if (isCryptoPool(pool)) { + const { xcpProfit: [{ data: unsafeXcpProfit }], xcpProfitA: [{ data: unsafeXcpProfitA }] } = currentPoolData; + const { xcpProfit: [{ data: unsafeXcpProfitDayOld }], xcpProfitA: [{ data: unsafeXcpProfitADayOld }] } = dayOldPoolData; + const { xcpProfit: [{ data: unsafeXcpProfitWeekOld }], xcpProfitA: [{ data: unsafeXcpProfitAWeekOld }] } = weekOldPoolData; + + const xcpProfit = safeXcpProfit(unsafeXcpProfit); + const xcpProfitA = safeXcpProfit(unsafeXcpProfitA); + const xcpProfitDayOld = safeXcpProfit(unsafeXcpProfitDayOld); + const xcpProfitADayOld = safeXcpProfit(unsafeXcpProfitADayOld); + const xcpProfitWeekOld = safeXcpProfit(unsafeXcpProfitWeekOld); + const xcpProfitAWeekOld = safeXcpProfit(unsafeXcpProfitAWeekOld); + + const currentProfit = ((xcpProfit / 2) + (xcpProfitA / 2) + 1e18) / 2; + const dayOldProfit = ((xcpProfitDayOld / 2) + (xcpProfitADayOld / 2) + 1e18) / 2; + const weekOldProfit = ((xcpProfitWeekOld / 2) + (xcpProfitAWeekOld / 2) + 1e18) / 2; + const rateDaily = (currentProfit - dayOldProfit) / dayOldProfit; + const rateWeekly = (currentProfit - weekOldProfit) / weekOldProfit; + + latestDailyApyPcent = ((rateDaily + 1) ** (365 / 1) - 1) * 100; + latestWeeklyApyPcent = ((rateWeekly + 1) ** (365 / 7) - 1) * 100; + + /** + * Note: this doesn't take into account a special case where a crypto pool uses + * a base pool lp as one of its underlying assets. There's currently only one + * pool doing this, on Avalanche, and at the time of writing it's not receiving + * enough volume to warrant additional complexity in this code. For future reference + * if this becomes needed again, search `CRYPTO_POOLS_WITH_BASE_POOLS` in curve-api. + */ + } else { + const { virtualPrice: [{ data: virtualPrice }] } = currentPoolData; + const { virtualPrice: [{ data: virtualPriceDayOld }] } = dayOldPoolData; + const { virtualPrice: [{ data: virtualPriceweekOld }] } = weekOldPoolData; + + const rateDaily = (virtualPrice - virtualPriceDayOld) / virtualPriceDayOld; + const rateWeekly = (virtualPrice - virtualPriceweekOld) / virtualPriceweekOld; + + latestDailyApyPcent = ((rateDaily + 1) ** (365 / 1) - 1) * 100; + latestWeeklyApyPcent = ((rateWeekly + 1) ** (365 / 7) - 1) * 100; + } + + /** + * Add additional ETH staking APY to pools containing ETH LSDs + */ + const { usesRateOracle, coins, usdTotal } = pool; + const needsAdditionalLsdAssetApy = ( + !usesRateOracle && + coins.some(({ ethLsdApy }) => typeof ethLsdApy !== 'undefined') + ); + + if (needsAdditionalLsdAssetApy && usdTotal > 0) { + const additionalApysPcentFromLsds = coins.map(({ + ethLsdApy, + poolBalance, + decimals, + usdPrice, + }) => { + if (typeof ethLsdApy === 'undefined' || usdPrice === null || usdPrice === 0) return 0; + + const assetUsdTotal = uintToBN(poolBalance, decimals).times(usdPrice); + const assetProportionInPool = assetUsdTotal.div(usdTotal); + + return assetProportionInPool.times(ethLsdApy).times(100); + }); + + latestDailyApyPcent = BN(latestDailyApyPcent).plus(sumBN(additionalApysPcentFromLsds)); + latestWeeklyApyPcent = BN(latestWeeklyApyPcent).plus(sumBN(additionalApysPcentFromLsds)); + } + + return { + address: pool.address, + latestDailyApyPcent: BN(latestDailyApyPcent).dp(2).toNumber(), + latestWeeklyApyPcent: BN(latestWeeklyApyPcent).dp(2).toNumber(), + }; + }).filter((o) => o !== null); + + return { baseApys }; +}, { + maxAge: 60, +}); diff --git a/pages/api/getCrvCircSupply.js b/pages/api/getCrvCircSupply.js index 5067ce18..ce14ba19 100644 --- a/pages/api/getCrvCircSupply.js +++ b/pages/api/getCrvCircSupply.js @@ -17,5 +17,5 @@ export default fn(async () => { }; }, { maxAge: 60 * 60, // 1h - name: 'getAllGauges', + name: 'getCrvCircSupply', }); diff --git a/pages/api/getCrvusdTotalSupply.js b/pages/api/getCrvusdTotalSupply.js new file mode 100644 index 00000000..5816debe --- /dev/null +++ b/pages/api/getCrvusdTotalSupply.js @@ -0,0 +1,16 @@ +import { fn } from 'utils/api'; +import crvusd from "@curvefi/stablecoin-api"; +import configs from 'constants/configs'; + +export default fn(async () => { + await crvusd.init('JsonRpc', { url: configs.ethereum.rpcUrl, privateKey: '' }, { gasPrice: 0, maxFeePerGas: 0, maxPriorityFeePerGas: 0, chainId: 1 }); + + const crvusdTotalSupply = await crvusd.totalSupply(); + + return { + crvusdTotalSupply, + }; +}, { + maxAge: 5 * 60, // 5m + name: 'getCrvusdTotalSupply', +}); diff --git a/pages/api/getFactoGauges/index.js b/pages/api/getFactoGauges/index.js index c49201c2..a1170532 100644 --- a/pages/api/getFactoGauges/index.js +++ b/pages/api/getFactoGauges/index.js @@ -9,8 +9,9 @@ import sideChainRootGauge from 'constants/abis/sidechain-root-gauge.json'; import gaugeControllerAbi from 'constants/abis/gauge_controller.json'; import factorypool3Abi from 'constants/abis/factory_swap.json'; import { multiCall } from 'utils/Calls'; +import { lc } from 'utils/String'; import { arrayToHashmap, arrayOfIncrements, flattenArray } from 'utils/Array'; -import getPools from 'pages/api/getPools'; +import getAllCurvePoolsData from 'utils/data/curve-pools-data'; import configs from 'constants/configs'; import getFactoryV2SidechainGaugeRewards from 'utils/data/getFactoryV2SidechainGaugeRewards'; @@ -76,10 +77,7 @@ export default fn(async ({ blockchainId }) => { methodName: 'is_killed', }))); - const gaugeList = unfilteredGaugeList.filter((address, index) => { - const isKilled = gaugesKilledInfo[index]; - return !isKilled; - }); + const gaugeList = unfilteredGaugeList; const weekSeconds = 86400 * 7; const nowTs = +Date.now() / 1000; @@ -197,58 +195,15 @@ export default fn(async ({ blockchainId }) => { }; }); - const hasCryptoPools = !!config.getCryptoRegistryAddress; - const hasFactoPools = !!config.getFactoryRegistryAddress; - const hasFactoCryptoPools = !!config.getFactoryCryptoRegistryAddress; - const [ - stablePools, - cryptoPools, - factoPools, - factoCryptoPools, - ] = await Promise.all([( - (await getPools.straightCall({ blockchainId, registryId: 'main', preventQueryingFactoData: true })).poolData - ), ( - hasCryptoPools ? - (await getPools.straightCall({ blockchainId, registryId: 'crypto', preventQueryingFactoData: true })).poolData : - [] - ), ( - hasFactoPools ? - (await getPools.straightCall({ blockchainId, registryId: 'factory', preventQueryingFactoData: true })).poolData : - [] - ), ( - hasFactoCryptoPools ? - (await getPools.straightCall({ blockchainId, registryId: 'factory-crypto', preventQueryingFactoData: true })).poolData : - [] - )]); + const allPools = await getAllCurvePoolsData([blockchainId]); const gaugesDataWithPoolAddressAndType = gaugesData.map((gaugeData) => { - const poolInMainRegistry = stablePools.find(({ lpTokenAddress, address }) => ( - lpTokenAddress === gaugeData.lpTokenAddress || - address === gaugeData.lpTokenAddress - )); - const poolInCryptoRegistry = cryptoPools.find(({ lpTokenAddress, address }) => ( - lpTokenAddress === gaugeData.lpTokenAddress || - address === gaugeData.lpTokenAddress - )); - const poolInCryptoFactoRegistry = factoCryptoPools.find(({ lpTokenAddress, address }) => ( - lpTokenAddress === gaugeData.lpTokenAddress || - address === gaugeData.lpTokenAddress + const pool = allPools.find(({ lpTokenAddress, address }) => ( + lc(lpTokenAddress) === lc(gaugeData.lpTokenAddress) || + lc(address) === lc(gaugeData.lpTokenAddress) )); - const poolInStableFactoRegistry = factoPools.find(({ lpTokenAddress, address }) => ( - lpTokenAddress === gaugeData.lpTokenAddress || - address === gaugeData.lpTokenAddress - )); - - if ( - typeof poolInMainRegistry === 'undefined' && - typeof poolInCryptoRegistry === 'undefined' && - typeof poolInCryptoFactoRegistry === 'undefined' && - typeof poolInStableFactoRegistry === 'undefined' - ) { - return null; - } - const pool = (poolInMainRegistry || poolInCryptoRegistry || poolInCryptoFactoRegistry || poolInStableFactoRegistry); + if (typeof pool === 'undefined') return null; return { ...gaugeData, @@ -257,7 +212,8 @@ export default fn(async ({ blockchainId }) => { pool.usdTotal / (pool.totalSupply / 1e18) ), - type: ((poolInCryptoFactoRegistry || poolInCryptoRegistry) ? 'crypto' : 'stable'), + type: ((pool.registryId === 'main' || pool.registryId === 'factory') ? 'stable' : 'crypto'), + registryId: pool.registryId, }; }).filter((o) => o !== null); @@ -326,6 +282,7 @@ export default fn(async ({ blockchainId }) => { Number(inflationRate) === 0 && !rewardsNeedNudging ), + isKilled: gaugesKilledInfo[unfilteredGaugeList.findIndex((gaugeAddress) => lc(gaugeAddress) === lc(address))], }; }); diff --git a/pages/api/getFactoGaugesCrvRewards/index.js b/pages/api/getFactoGaugesCrvRewards/index.js index 1fc42574..3b60e394 100644 --- a/pages/api/getFactoGaugesCrvRewards/index.js +++ b/pages/api/getFactoGaugesCrvRewards/index.js @@ -9,6 +9,7 @@ import getFactoGauges from 'pages/api/getFactoGauges'; import getPools from 'pages/api/getPools'; import configs from 'constants/configs'; import { lc } from 'utils/String'; +import getAllCurvePoolsData from 'utils/data/curve-pools-data'; const NON_STANDARD_OUTDATED_GAUGES = [ 'celo-0x4969e38b8d37fc42a1897295Ea6d7D0b55944497', @@ -20,15 +21,7 @@ export default fn(async ({ blockchainId }) => { const config = configs[blockchainId]; const { gauges } = await getFactoGauges.straightCall({ blockchainId }); - const { poolData: mainPoolData } = await getPools.straightCall({ blockchainId, registryId: 'main' }); - const { poolData: cryptoPoolData } = await getPools.straightCall({ blockchainId, registryId: 'crypto' }); - const { poolData: factoStablePoolData } = await getPools.straightCall({ blockchainId, registryId: 'factory' }); - const { poolData: factoCryptoPoolData } = ( - config.getFactoryCryptoRegistryAddress ? - await getPools.straightCall({ blockchainId, registryId: 'factory-crypto' }) : - { poolData: [] } - ); - const poolData = [...mainPoolData, ...cryptoPoolData, ...factoStablePoolData, ...factoCryptoPoolData]; + const poolData = await getAllCurvePoolsData([blockchainId]); const sideChainGauges = gauges.filter(({ side_chain: isSideChain, @@ -68,7 +61,7 @@ export default fn(async ({ blockchainId }) => { const apy = ( areCrvRewardsStuckInBridge ? 0 : - ((rate / 1e18) * (86400 * 365) / gaugeUsdValue * 0.4 * crvPrice * 100) + ((rate / 1e18) * (86400 * 365) / gaugeUsdValue * 0.4 * crvPrice * 100) ); return { diff --git a/pages/api/getFactoryAPYs-base.js b/pages/api/getFactoryAPYs-base.js new file mode 100644 index 00000000..8bad4a15 --- /dev/null +++ b/pages/api/getFactoryAPYs-base.js @@ -0,0 +1,258 @@ +/** + * Custom implementation because reliance on `getFactoryAPYs/_sidechains` implies + * two requirements: (1) need for thegraph to support the chain, and (2) need for + * a uniswap fork to be running on that chain for the subgraph to use as an + * external oracle where needed. + * Moonbeam satisfies (1) but not (2), so it uses a suboptimal custom setup for now. + */ + +import Web3 from 'web3'; +import BigNumber from 'big-number'; +import { BASE_API_DOMAIN } from 'constants/AppConstants'; + +import getPoolsFn from 'pages/api/getPools'; +import configs from 'constants/configs'; +import { fn } from 'utils/api'; +import getAllCurvePoolsData from 'utils/data/curve-pools-data'; +import registryAbi from 'constants/abis/factory_registry.json'; +import multicallAbi from 'constants/abis/multicall.json'; +import factorypool3Abi from 'constants/abis/factory_swap.json'; +import factorypool3BaseTricryptoAbi from 'constants/abis/factory_tricrypto_swap.json'; +import factorypool3BaseCryptoAbi from 'constants/abis/factory_crypto_swap.json'; +import groupBy from 'lodash.groupby'; +import { multiCall } from 'utils/Calls'; + +const web3 = new Web3(configs.base.rpcUrl); +const networkSettings = { + web3, + multicall2Address: configs.base.multicall2Address, +}; + +export default fn(async (query) => { + const config = configs.base; + const version = 2 + + let registryAddress = await config.getFactoryRegistryAddress(); + let multicallAddress = config.multicallAddress; + let registry = new web3.eth.Contract(registryAbi, registryAddress); + let multicall = new web3.eth.Contract(multicallAbi, multicallAddress) + const poolData = await getAllCurvePoolsData(['base']); + let poolDetails = []; + let totalVolume = 0 + let totalVolumeUsd = 0; + + const latest = await web3.eth.getBlockNumber() + const DAY_BLOCKS_24H = config.approxBlocksPerDay; + let DAY_BLOCKS = DAY_BLOCKS_24H + + await Promise.all( + poolData.map(async (pool, index) => { + const lpTokenUsdPrice = pool.usdTotal / (pool.totalSupply / 1e18); + + const poolAbi = ( + pool.registryId === 'factory-tricrypto' ? factorypool3BaseTricryptoAbi : + pool.registryId === 'factory-crypto' ? factorypool3BaseCryptoAbi : + factorypool3Abi + ); + let poolContract = new web3.eth.Contract(poolAbi, pool.address) + + + + const isCryptoPool = ( + pool.registryId === 'factory-tricrypto' || + pool.registryId === 'factory-crypto' + ); + + let apy; + let vPriceFetch; + + const oneDayOldBlockNumber = latest - DAY_BLOCKS; + if (isCryptoPool) { + const { + xcpProfit: [{ data: xcpProfitDayOld }], + xcpProfitA: [{ data: xcpProfitADayOld }], + } = groupBy(await multiCall([{ + address: pool.address, + abi: poolAbi, + methodName: 'xcp_profit', + metaData: { type: 'xcpProfit' }, + networkSettings: { + ...networkSettings, + blockNumber: oneDayOldBlockNumber, + }, + superSettings: { + fallbackValue: 1e18, + }, + }, { + address: pool.address, + abi: poolAbi, + methodName: 'xcp_profit_a', + metaData: { type: 'xcpProfitA' }, + networkSettings: { + ...networkSettings, + blockNumber: oneDayOldBlockNumber, + }, + superSettings: { + fallbackValue: 1e18, + }, + }]), 'metaData.type'); + + const { + xcpProfit: [{ data: xcpProfit }], + xcpProfitA: [{ data: xcpProfitA }], + virtualPrice: [{ data: virtualPrice }], + } = groupBy(await multiCall([{ + address: pool.address, + abi: poolAbi, + methodName: 'xcp_profit', + metaData: { type: 'xcpProfit' }, + networkSettings, + superSettings: { + fallbackValue: 1e18, + }, + }, { + address: pool.address, + abi: poolAbi, + methodName: 'xcp_profit_a', + metaData: { type: 'xcpProfitA' }, + networkSettings, + superSettings: { + fallbackValue: 1e18, + }, + }, { + address: pool.address, + abi: poolAbi, + methodName: 'get_virtual_price', + metaData: { type: 'virtualPrice' }, + networkSettings, + superSettings: { + fallbackValue: 1e18, + }, + }]), 'metaData.type'); + + const currentProfit = ((xcpProfit / 2) + (xcpProfitA / 2) + 1e18) / 2; + const dayOldProfit = ((xcpProfitDayOld / 2) + (xcpProfitADayOld / 2) + 1e18) / 2; + const rateDaily = (currentProfit - dayOldProfit) / dayOldProfit; + + const latestDailyApy = ((rateDaily + 1) ** 365 - 1) * 100; + apy = latestDailyApy; + + vPriceFetch = virtualPrice; + } else { + let vPriceOldFetch; + let vPriceOldFetchFailed = false; + try { + vPriceOldFetch = await poolContract.methods.get_virtual_price().call('', oneDayOldBlockNumber) + } catch (e) { + console.error(`Couldn't fetch get_virtual_price for block ${oneDayOldBlockNumber}: ${e.toString()}`); + vPriceOldFetchFailed = true; + vPriceOldFetch = 1 * (10 ** 18) + } + + try { + vPriceFetch = await poolContract.methods.get_virtual_price().call() + } catch (e) { + vPriceFetch = 1 * (10 ** 18) + } + + let vPrice = vPriceOldFetchFailed ? vPriceFetch : vPriceOldFetch + let vPriceNew = vPriceFetch + + apy = (vPriceNew - vPrice) / vPrice * 100 * 365 + } + + + const eventName = 'TokenExchangeUnderlying'; + const eventName2 = 'TokenExchange'; + + const isMetaPool = ( + pool.implementation?.startsWith('v1metausd') || + pool.implementation?.startsWith('metausd') || + pool.implementation?.startsWith('v1metabtc') || + pool.implementation?.startsWith('metabtc') + ); + + let decimals = ( + version === 1 ? [pool.token.decimals, 18, 18, 18] : + (version === 2 && isMetaPool) ? pool.underlyingDecimals : + pool.decimals + ); + let volume = 0; + let volumeUsd = 0; + + if (pool.registryId !== 'factory-tricrypto' && pool.registryId !== 'factory-crypto') { + let events = await poolContract.getPastEvents(eventName, { + filter: {}, // Using an array means OR: e.g. 20 or 23 + fromBlock: oneDayOldBlockNumber, + toBlock: 'latest' + }) + + events.map((trade) => { + + let t = trade.returnValues['tokens_bought'] / 10 ** decimals[trade.returnValues['bought_id']] + volume += t; + volumeUsd += (t * pool.coins[Number(trade.returnValues['bought_id'])].usdPrice); + + }) + } else { + let events = await poolContract.getPastEvents(eventName2, { + filter: {}, // Using an array means OR: e.g. 20 or 23 + fromBlock: oneDayOldBlockNumber, + toBlock: 'latest' + }) + + events.map((trade) => { + + let t = trade.returnValues['tokens_bought'] / 10 ** decimals[trade.returnValues['bought_id']] + volume += t; + volumeUsd += (t * pool.coins[Number(trade.returnValues['bought_id'])].usdPrice); + + }) + } + + if (version == '2' && pool.registryId !== 'factory-tricrypto' && pool.registryId !== 'factory-crypto') { + let events2 = await poolContract.getPastEvents(eventName2, { + filter: {}, // Using an array means OR: e.g. 20 or 23 + fromBlock: oneDayOldBlockNumber, + toBlock: 'latest' + }) + + events2.map((trade) => { + let t = trade.returnValues[2] / 10 ** decimals[trade.returnValues[1]] + volume += t; + volumeUsd += (t * pool.coins[Number(trade.returnValues[1])].usdPrice); + }) + } + + // Since we don't fetch blocks for the entirety of the past 24 hours, + // we multiply the split volume accordingly + const correctedVolume = volume * (DAY_BLOCKS_24H / DAY_BLOCKS); + const correctedVolumeUsd = volumeUsd * (DAY_BLOCKS_24H / DAY_BLOCKS); + + let apyFormatted = `${apy.toFixed(2)}%` + totalVolume += correctedVolume + totalVolumeUsd += correctedVolumeUsd + + let p = { + index, + 'poolAddress': pool.address, + 'poolSymbol': version === 1 ? pool.token.symbol : pool.symbol, + apyFormatted, + apy, + 'virtualPrice': vPriceFetch, + volume: (correctedVolumeUsd / lpTokenUsdPrice) || 0, // lp volume + totalVolumeUsd: correctedVolumeUsd, + 'pool.registryId': pool.registryId, + 'pool.id': pool.id, + } + poolDetails.push(p) + }) + ) + + poolDetails.sort((a, b) => (a.index > b.index) ? 1 : ((b.index > a.index) ? -1 : 0)) + + return { poolDetails, totalVolumeUsd, latest }; + +}, { + maxAge: 30, // 30s +}); diff --git a/pages/api/getFactoryAPYs-kava.js b/pages/api/getFactoryAPYs-kava.js index e8c2ee06..b860b472 100644 --- a/pages/api/getFactoryAPYs-kava.js +++ b/pages/api/getFactoryAPYs-kava.js @@ -7,26 +7,25 @@ */ import Web3 from 'web3'; -import BigNumber from 'big-number'; -import { BASE_API_DOMAIN } from 'constants/AppConstants'; import getPoolsFn from 'pages/api/getPools'; import configs from 'constants/configs'; import { fn } from 'utils/api'; -import registryAbi from 'constants/abis/factory_registry.json'; -import multicallAbi from 'constants/abis/multicall.json'; import factorypool3Abi from 'constants/abis/factory_swap.json'; +/** + * The official rpc url evm.kava.io has trouble retrieving past pool virtual prices, + * so we use another rpc for this specific purpose. The official rpc gives access + * to past logs though, which most other free rpcs do not, so we still use the + * official rpc for other purposes. + */ const web3 = new Web3(configs.kava.rpcUrl); +const web3NoArchival = new Web3(configs.kava.noArchivalAlternateRpcUrl); export default fn(async (query) => { const config = configs.kava; const version = 2 - let registryAddress = await config.getFactoryRegistryAddress(); - let multicallAddress = config.multicallAddress; - let registry = new web3.eth.Contract(registryAbi, registryAddress); - let multicall = new web3.eth.Contract(multicallAbi, multicallAddress) let res = await getPoolsFn.straightCall({ blockchainId: 'kava', registryId: 'factory' }) let poolDetails = []; let totalVolume = 0 @@ -38,33 +37,38 @@ export default fn(async (query) => { await Promise.all( res.poolData.map(async (pool, index) => { - let poolContract = new web3.eth.Contract(factorypool3Abi, pool.address) + const poolContractForVpriceFetching = new web3NoArchival.eth.Contract(factorypool3Abi, pool.address) + const poolContract = new web3.eth.Contract(factorypool3Abi, pool.address) let vPriceOldFetch; let vPriceOldFetchFailed = false; + let vPriceOldFetchFailedBecauseBlockPruned = false; + try { - vPriceOldFetch = await poolContract.methods.get_virtual_price().call('', latest - DAY_BLOCKS) + vPriceOldFetch = await poolContractForVpriceFetching.methods.get_virtual_price().call('', latest - DAY_BLOCKS) } catch (e) { + console.log('error', e, e.message) vPriceOldFetchFailed = true; - vPriceOldFetch = 1 * (10 ** 18) + vPriceOldFetch = 1 * (10 ** 18) + + if (!e.message.includes('execution reverted')) vPriceOldFetchFailedBecauseBlockPruned = true; } - const testPool = pool.address const eventName = 'TokenExchangeUnderlying'; const eventName2 = 'TokenExchange'; - console.log(latest - DAY_BLOCKS, latest, 'blocks') + // console.log(latest - DAY_BLOCKS, latest, 'blocks') const isMetaPool = ( - pool.implementation?.startsWith('v1metausd') || - pool.implementation?.startsWith('metausd') || - pool.implementation?.startsWith('v1metabtc') || - pool.implementation?.startsWith('metabtc') + pool.implementation?.startsWith('v1metausd') || + pool.implementation?.startsWith('metausd') || + pool.implementation?.startsWith('v1metabtc') || + pool.implementation?.startsWith('metabtc') ); let decimals = ( - version === 1 ? [pool.token.decimals, 18, 18, 18] : - (version === 2 && isMetaPool) ? pool.underlyingDecimals : - pool.decimals + version === 1 ? [pool.token.decimals, 18, 18, 18] : + (version === 2 && isMetaPool) ? pool.underlyingDecimals : + pool.decimals ); let volume = 0; @@ -83,16 +87,16 @@ export default fn(async (query) => { if (version == '2') { - let events2 = await poolContract.getPastEvents(eventName2, { - filter: {}, // Using an array means OR: e.g. 20 or 23 - fromBlock: latest - DAY_BLOCKS, - toBlock: 'latest' - }) + let events2 = await poolContract.getPastEvents(eventName2, { + filter: {}, // Using an array means OR: e.g. 20 or 23 + fromBlock: latest - DAY_BLOCKS, + toBlock: 'latest' + }) - events2.map((trade) => { - let t = trade.returnValues[2] / 10 ** decimals[trade.returnValues[1]] - volume += t - }) + events2.map((trade) => { + let t = trade.returnValues[2] / 10 ** decimals[trade.returnValues[1]] + volume += t + }) } @@ -103,9 +107,9 @@ export default fn(async (query) => { let vPriceFetch try { - vPriceFetch = await poolContract.methods.get_virtual_price().call() + vPriceFetch = await poolContractForVpriceFetching.methods.get_virtual_price().call() } catch (e) { - vPriceFetch = 1 * (10 ** 18) + vPriceFetch = 1 * (10 ** 18) } let vPrice = vPriceOldFetchFailed ? vPriceFetch : vPriceOldFetch @@ -115,19 +119,20 @@ export default fn(async (query) => { totalVolume += correctedVolume let p = { - index, - 'poolAddress' : pool.address, - 'poolSymbol' : version === 1 ? pool.token.symbol : pool.symbol, - apyFormatted, - apy, - 'virtualPrice':vPriceFetch, - volume: correctedVolume, + index, + 'poolAddress': pool.address, + 'poolSymbol': version === 1 ? pool.token.symbol : pool.symbol, + apyFormatted, + apy, + 'virtualPrice': vPriceFetch, + volume: correctedVolume, + failedFetching24hOldVprice: vPriceOldFetchFailedBecauseBlockPruned, } poolDetails.push(p) }) ) - poolDetails.sort((a,b) => (a.index > b.index) ? 1 : ((b.index > a.index) ? -1 : 0)) + poolDetails.sort((a, b) => (a.index > b.index) ? 1 : ((b.index > a.index) ? -1 : 0)) return { poolDetails, totalVolume, latest }; diff --git a/pages/api/getFactoryAPYs-zkevm.js b/pages/api/getFactoryAPYs-zkevm.js new file mode 100644 index 00000000..6999d912 --- /dev/null +++ b/pages/api/getFactoryAPYs-zkevm.js @@ -0,0 +1,137 @@ +/** + * Custom implementation because reliance on `getFactoryAPYs/_sidechains` implies + * two requirements: (1) need for thegraph to support the chain, and (2) need for + * a uniswap fork to be running on that chain for the subgraph to use as an + * external oracle where needed. + * Moonbeam satisfies (1) but not (2), so it uses a suboptimal custom setup for now. + */ + +import Web3 from 'web3'; +import BigNumber from 'big-number'; +import { BASE_API_DOMAIN } from 'constants/AppConstants'; + +import getPoolsFn from 'pages/api/getPools'; +import configs from 'constants/configs'; +import { fn } from 'utils/api'; +import registryAbi from 'constants/abis/factory_registry.json'; +import multicallAbi from 'constants/abis/multicall.json'; +import factorypool3Abi from 'constants/abis/factory_swap.json'; + +const web3 = new Web3(configs.zkevm.rpcUrl); + +export default fn(async (query) => { + const config = configs.zkevm; + const version = 2 + + let registryAddress = await config.getFactoryRegistryAddress(); + let multicallAddress = config.multicallAddress; + let registry = new web3.eth.Contract(registryAbi, registryAddress); + let multicall = new web3.eth.Contract(multicallAbi, multicallAddress) + let res = await getPoolsFn.straightCall({ blockchainId: 'zkevm', registryId: 'factory' }) + let poolDetails = []; + let totalVolume = 0 + + const latest = await web3.eth.getBlockNumber() + const DAY_BLOCKS_24H = config.approxBlocksPerDay; + let DAY_BLOCKS = DAY_BLOCKS_24H + + await Promise.all( + res.poolData.map(async (pool, index) => { + + let poolContract = new web3.eth.Contract(factorypool3Abi, pool.address) + + let vPriceOldFetch; + let vPriceOldFetchFailed = false; + try { + vPriceOldFetch = await poolContract.methods.get_virtual_price().call('', latest - DAY_BLOCKS) + } catch (e) { + console.error(`Couldn't fetch get_virtual_price for block ${latest - DAY_BLOCKS}: ${e.toString()}`); + vPriceOldFetchFailed = true; + vPriceOldFetch = 1 * (10 ** 18) + } + const testPool = pool.address + const eventName = 'TokenExchangeUnderlying'; + const eventName2 = 'TokenExchange'; + + + console.log(latest - DAY_BLOCKS, latest, 'blocks') + const isMetaPool = ( + pool.implementation?.startsWith('v1metausd') || + pool.implementation?.startsWith('metausd') || + pool.implementation?.startsWith('v1metabtc') || + pool.implementation?.startsWith('metabtc') + ); + + let decimals = ( + version === 1 ? [pool.token.decimals, 18, 18, 18] : + (version === 2 && isMetaPool) ? pool.underlyingDecimals : + pool.decimals + ); + let volume = 0; + + let events = await poolContract.getPastEvents(eventName, { + filter: {}, // Using an array means OR: e.g. 20 or 23 + fromBlock: latest - DAY_BLOCKS, + toBlock: 'latest' + }) + + events.map((trade) => { + + let t = trade.returnValues['tokens_bought'] / 10 ** decimals[trade.returnValues['bought_id']] + volume += t + + }) + + + if (version == '2') { + let events2 = await poolContract.getPastEvents(eventName2, { + filter: {}, // Using an array means OR: e.g. 20 or 23 + fromBlock: latest - DAY_BLOCKS, + toBlock: 'latest' + }) + + events2.map((trade) => { + let t = trade.returnValues[2] / 10 ** decimals[trade.returnValues[1]] + volume += t + }) + + + } + + // Since we don't fetch blocks for the entirety of the past 24 hours, + // we multiply the split volume accordingly + const correctedVolume = volume * (DAY_BLOCKS_24H / DAY_BLOCKS); + + let vPriceFetch + try { + vPriceFetch = await poolContract.methods.get_virtual_price().call() + } catch (e) { + vPriceFetch = 1 * (10 ** 18) + } + + let vPrice = vPriceOldFetchFailed ? vPriceFetch : vPriceOldFetch + let vPriceNew = vPriceFetch + let apy = (vPriceNew - vPrice) / vPrice * 100 * 365 + let apyFormatted = `${apy.toFixed(2)}%` + totalVolume += correctedVolume + + let p = { + index, + 'poolAddress': pool.address, + 'poolSymbol': version === 1 ? pool.token.symbol : pool.symbol, + apyFormatted, + apy, + 'virtualPrice': vPriceFetch, + volume: correctedVolume, + } + poolDetails.push(p) + }) + ) + + poolDetails.sort((a, b) => (a.index > b.index) ? 1 : ((b.index > a.index) ? -1 : 0)) + + return { poolDetails, totalVolume, latest }; + +}, { + maxAge: 30, // 30s +}); diff --git a/pages/api/getFactoryAPYs-zksync.js b/pages/api/getFactoryAPYs-zksync.js new file mode 100644 index 00000000..130e1fed --- /dev/null +++ b/pages/api/getFactoryAPYs-zksync.js @@ -0,0 +1,137 @@ +/** + * Custom implementation because reliance on `getFactoryAPYs/_sidechains` implies + * two requirements: (1) need for thegraph to support the chain, and (2) need for + * a uniswap fork to be running on that chain for the subgraph to use as an + * external oracle where needed. + * Moonbeam satisfies (1) but not (2), so it uses a suboptimal custom setup for now. + */ + +import Web3 from 'web3'; +import BigNumber from 'big-number'; +import { BASE_API_DOMAIN } from 'constants/AppConstants'; + +import getPoolsFn from 'pages/api/getPools'; +import configs from 'constants/configs'; +import { fn } from 'utils/api'; +import registryAbi from 'constants/abis/factory_registry.json'; +import multicallAbi from 'constants/abis/multicall.json'; +import factorypool3Abi from 'constants/abis/factory_swap.json'; + +const web3 = new Web3(configs.zksync.rpcUrl); + +export default fn(async (query) => { + const config = configs.zksync; + const version = 2 + + let registryAddress = await config.getFactoryRegistryAddress(); + let multicallAddress = config.multicallAddress; + let registry = new web3.eth.Contract(registryAbi, registryAddress); + let multicall = new web3.eth.Contract(multicallAbi, multicallAddress) + let res = await getPoolsFn.straightCall({ blockchainId: 'zksync', registryId: 'factory' }) + let poolDetails = []; + let totalVolume = 0 + + const latest = await web3.eth.getBlockNumber() + const DAY_BLOCKS_24H = config.approxBlocksPerDay; + let DAY_BLOCKS = DAY_BLOCKS_24H + + await Promise.all( + res.poolData.map(async (pool, index) => { + + let poolContract = new web3.eth.Contract(factorypool3Abi, pool.address) + + let vPriceOldFetch; + let vPriceOldFetchFailed = false; + try { + vPriceOldFetch = await poolContract.methods.get_virtual_price().call('', latest - DAY_BLOCKS) + } catch (e) { + console.error(`Couldn't fetch get_virtual_price for block ${latest - DAY_BLOCKS}: ${e.toString()}`); + vPriceOldFetchFailed = true; + vPriceOldFetch = 1 * (10 ** 18) + } + const testPool = pool.address + const eventName = 'TokenExchangeUnderlying'; + const eventName2 = 'TokenExchange'; + + + console.log(latest - DAY_BLOCKS, latest, 'blocks') + const isMetaPool = ( + pool.implementation?.startsWith('v1metausd') || + pool.implementation?.startsWith('metausd') || + pool.implementation?.startsWith('v1metabtc') || + pool.implementation?.startsWith('metabtc') + ); + + let decimals = ( + version === 1 ? [pool.token.decimals, 18, 18, 18] : + (version === 2 && isMetaPool) ? pool.underlyingDecimals : + pool.decimals + ); + let volume = 0; + + let events = await poolContract.getPastEvents(eventName, { + filter: {}, // Using an array means OR: e.g. 20 or 23 + fromBlock: latest - DAY_BLOCKS, + toBlock: 'latest' + }) + + events.map((trade) => { + + let t = trade.returnValues['tokens_bought'] / 10 ** decimals[trade.returnValues['bought_id']] + volume += t + + }) + + + if (version == '2') { + let events2 = await poolContract.getPastEvents(eventName2, { + filter: {}, // Using an array means OR: e.g. 20 or 23 + fromBlock: latest - DAY_BLOCKS, + toBlock: 'latest' + }) + + events2.map((trade) => { + let t = trade.returnValues[2] / 10 ** decimals[trade.returnValues[1]] + volume += t + }) + + + } + + // Since we don't fetch blocks for the entirety of the past 24 hours, + // we multiply the split volume accordingly + const correctedVolume = volume * (DAY_BLOCKS_24H / DAY_BLOCKS); + + let vPriceFetch + try { + vPriceFetch = await poolContract.methods.get_virtual_price().call() + } catch (e) { + vPriceFetch = 1 * (10 ** 18) + } + + let vPrice = vPriceOldFetchFailed ? vPriceFetch : vPriceOldFetch + let vPriceNew = vPriceFetch + let apy = (vPriceNew - vPrice) / vPrice * 100 * 365 + let apyFormatted = `${apy.toFixed(2)}%` + totalVolume += correctedVolume + + let p = { + index, + 'poolAddress': pool.address, + 'poolSymbol': version === 1 ? pool.token.symbol : pool.symbol, + apyFormatted, + apy, + 'virtualPrice': vPriceFetch, + volume: correctedVolume, + } + poolDetails.push(p) + }) + ) + + poolDetails.sort((a, b) => (a.index > b.index) ? 1 : ((b.index > a.index) ? -1 : 0)) + + return { poolDetails, totalVolume, latest }; + +}, { + maxAge: 30, // 30s +}); diff --git a/pages/api/getFactoryAPYs/ethereum.js b/pages/api/getFactoryAPYs/ethereum.js index 254352d9..45a4081a 100644 --- a/pages/api/getFactoryAPYs/ethereum.js +++ b/pages/api/getFactoryAPYs/ethereum.js @@ -17,143 +17,143 @@ import { sum } from 'utils/Array'; const web3 = new Web3(WEB3_CONSTANTS.RPC_URL); export default fn(async ({ version }) => { - version = ( - version === 'crypto' ? 'crypto' : + version = ( + version === 'crypto' ? 'crypto' : Number(version) === 2 ? 2 : - 1 - ); + 1 + ); - let registryAddress = await getFactoryRegistry(); - let multicallAddress = await getMultiCall() - let registry = new web3.eth.Contract(registryAbi, registryAddress); - let multicall = new web3.eth.Contract(multicallAbi, multicallAddress) + let registryAddress = await getFactoryRegistry(); + let multicallAddress = await getMultiCall() + let registry = new web3.eth.Contract(registryAbi, registryAddress); + let multicall = new web3.eth.Contract(multicallAbi, multicallAddress) - const factoryPoolsApiEndpoint = ( - version === 1 ? 'getFactoryPools' : + const factoryPoolsApiEndpoint = ( + version === 1 ? 'getFactoryPools' : version === 2 ? 'getFactoryV2Pools' : - version === 'crypto' ? 'getPools/ethereum/factory-crypto' : - undefined - ); - const { data: { poolData } } = await (await fetch(`https://api.curve.fi/api/${factoryPoolsApiEndpoint}`)).json() - - let poolDetails = []; - let totalVolume = 0 - - if (version === 1) { - const latest = await web3.eth.getBlockNumber(); - await Promise.all( - poolData.map(async (pool, index) => { - - let poolContract = new web3.eth.Contract(factorypool3Abi, pool.address) - let DAY_BLOCKS = 6550 - - const testPool = pool.address - const eventName = 'TokenExchangeUnderlying'; - const eventName2 = 'TokenExchange'; - - const isMetaPool = ( - pool.implementation?.startsWith('v1metausd') || - pool.implementation?.startsWith('metausd') || - pool.implementation?.startsWith('v1metabtc') || - pool.implementation?.startsWith('metabtc') - ); - - let decimals = [pool.token.decimals, 18, 18, 18]; - let volume = 0; - - let vPriceFetch = 1 * (10 ** 18) - try { - vPriceFetch = await poolContract.methods.get_virtual_price().call() - } catch (e) { - vPriceFetch = 1 * (10 ** 18) - } - - let rateDaily; - let rateWeekly; - - let vPriceDayOldFetch; - let vPriceWeekOldFetch; - try { - vPriceDayOldFetch = await poolContract.methods.get_virtual_price().call('', latest - DAY_BLOCKS) - } catch (e) { - vPriceDayOldFetch = 1 * (10 ** 18) - DAY_BLOCKS = 1; - } - try { - vPriceWeekOldFetch = await poolContract.methods.get_virtual_price().call('', latest - (DAY_BLOCKS * 7)) - } catch (e) { - vPriceWeekOldFetch = vPriceDayOldFetch - } - - rateDaily = (vPriceFetch - vPriceDayOldFetch) / vPriceDayOldFetch; - rateWeekly = (vPriceFetch - vPriceWeekOldFetch) / vPriceWeekOldFetch; - - const apy = (((1 + rateDaily) ** 365) - 1) * 100; - const apyWeekly = (((1 + rateWeekly) ** (365 / 7)) - 1) * 100; - - let events = await poolContract.getPastEvents(eventName, { - filter: {}, // Using an array means OR: e.g. 20 or 23 - fromBlock: latest - DAY_BLOCKS, - toBlock: 'latest' - }) - events.map(async (trade) => { - - let t = trade.returnValues['tokens_bought'] / 10 ** decimals[trade.returnValues['bought_id']] - volume += t - - // if (t > 1000000) { - // console.log('$',t, trade.transactionHash) - // } - }) - - const apyFormatted = `${apy.toFixed(2)}%` - totalVolume += volume - let p = { - index, - 'poolAddress' : pool.address, - 'poolSymbol' : version === 1 ? pool.token.symbol : pool.symbol, - apyFormatted, - apy, - apyWeekly, - 'virtualPrice':vPriceFetch, - volume, - } - poolDetails.push(p) - }) - ) - } else { - const { data: { poolList: poolsStats } } = await (await fetch('https://api.curve.fi/api/getSubgraphData/ethereum')).json(); - poolData.forEach((pool, index) => { - const lcSwapAddress = pool.address.toLowerCase(); - const poolStats = poolsStats.find(({ address }) => address.toLowerCase() === lcSwapAddress); - - if (!poolStats) { - const errorMessage = `Couldn't find pool address ${pool.address} in subgraph stats data`; - - if (IS_DEV) throw new Error(errorMessage); - else console.error(errorMessage); + version === 'crypto' ? 'getPools/ethereum/factory-crypto' : + undefined + ); + const { data: { poolData } } = await (await fetch(`https://api.curve.fi/api/${factoryPoolsApiEndpoint}`)).json() + + let poolDetails = []; + let totalVolume = 0 + + if (version === 1) { + const latest = await web3.eth.getBlockNumber(); + await Promise.all( + poolData.map(async (pool, index) => { + + let poolContract = new web3.eth.Contract(factorypool3Abi, pool.address) + let DAY_BLOCKS = 6550 + + const testPool = pool.address + const eventName = 'TokenExchangeUnderlying'; + const eventName2 = 'TokenExchange'; + + const isMetaPool = ( + pool.implementation?.startsWith('v1metausd') || + pool.implementation?.startsWith('metausd') || + pool.implementation?.startsWith('v1metabtc') || + pool.implementation?.startsWith('metabtc') + ); + + let decimals = [pool.token.decimals, 18, 18, 18]; + let volume = 0; + + let vPriceFetch = 1 * (10 ** 18) + try { + vPriceFetch = await poolContract.methods.get_virtual_price().call() + } catch (e) { + vPriceFetch = 1 * (10 ** 18) + } + + let rateDaily; + let rateWeekly; + + let vPriceDayOldFetch; + let vPriceWeekOldFetch; + try { + vPriceDayOldFetch = await poolContract.methods.get_virtual_price().call('', latest - DAY_BLOCKS) + } catch (e) { + vPriceDayOldFetch = 1 * (10 ** 18) + DAY_BLOCKS = 1; } + try { + vPriceWeekOldFetch = await poolContract.methods.get_virtual_price().call('', latest - (DAY_BLOCKS * 7)) + } catch (e) { + vPriceWeekOldFetch = vPriceDayOldFetch + } + + rateDaily = (vPriceFetch - vPriceDayOldFetch) / vPriceDayOldFetch; + rateWeekly = (vPriceFetch - vPriceWeekOldFetch) / vPriceWeekOldFetch; + + const apy = (((1 + rateDaily) ** 365) - 1) * 100; + const apyWeekly = (((1 + rateWeekly) ** (365 / 7)) - 1) * 100; - poolDetails.push({ + let events = await poolContract.getPastEvents(eventName, { + filter: {}, // Using an array means OR: e.g. 20 or 23 + fromBlock: latest - DAY_BLOCKS, + toBlock: 'latest' + }) + events.map(async (trade) => { + + let t = trade.returnValues['tokens_bought'] / 10 ** decimals[trade.returnValues['bought_id']] + volume += t + + // if (t > 1000000) { + // console.log('$',t, trade.transactionHash) + // } + }) + + const apyFormatted = `${apy.toFixed(2)}%` + totalVolume += volume + let p = { index, - poolAddress: pool.address, - poolSymbol: pool.symbol, - apyFormatted: `${poolStats.latestDailyApy.toFixed(2)}%`, - apy: poolStats.latestDailyApy, - apyWeekly: poolStats.latestWeeklyApy, - virtualPrice: poolStats.virtualPrice, - volume: version === 2 ? poolStats.rawVolume : poolStats.volumeUSD, // Facto pools historically have usd volume there, keeping this inconsistency to avoid breakage - ...(version === 2 ? { usdVolume: poolStats.volumeUSD } : {}), // Attach usd volume for facto pools - }); + 'poolAddress': pool.address, + 'poolSymbol': version === 1 ? pool.token.symbol : pool.symbol, + apyFormatted, + apy, + apyWeekly, + 'virtualPrice': vPriceFetch, + volume, + } + poolDetails.push(p) + }) + ) + } else { + const { data: { poolList: poolsStats } } = await (await fetch('https://api.curve.fi/api/getSubgraphData/ethereum')).json(); + poolData.forEach((pool, index) => { + const lcSwapAddress = pool.address.toLowerCase(); + const poolStats = poolsStats.find(({ address }) => address.toLowerCase() === lcSwapAddress); + + if (!poolStats) { + const errorMessage = `Couldn't find pool address ${pool.address} in subgraph stats data`; + + if (IS_DEV) throw new Error(errorMessage); + else console.error(errorMessage); + } + + poolDetails.push({ + index, + poolAddress: pool.address, + poolSymbol: pool.symbol, + apyFormatted: `${poolStats.latestDailyApy.toFixed(2)}%`, + apy: poolStats.latestDailyApy, + apyWeekly: poolStats.latestWeeklyApy, + virtualPrice: poolStats.virtualPrice, + volume: version === 2 ? poolStats.rawVolume : poolStats.volumeUSD, // Facto pools historically have usd volume there, keeping this inconsistency to avoid breakage + ...(version === 2 ? { usdVolume: poolStats.volumeUSD } : {}), // Attach usd volume for facto pools }); + }); - totalVolume = sum(poolDetails.map(({ volume }) => volume)); - } + totalVolume = sum(poolDetails.map(({ volume }) => volume)); + } - poolDetails.sort((a,b) => (a.index > b.index) ? 1 : ((b.index > a.index) ? -1 : 0)) + poolDetails.sort((a, b) => (a.index > b.index) ? 1 : ((b.index > a.index) ? -1 : 0)) - return { poolDetails, totalVolume }; + return { poolDetails, totalVolume }; }, { maxAge: 30, // 30s diff --git a/pages/api/getHiddenPools.js b/pages/api/getHiddenPools.js index 439b9432..d97c86e2 100644 --- a/pages/api/getHiddenPools.js +++ b/pages/api/getHiddenPools.js @@ -23,6 +23,7 @@ const HIDDEN_POOLS_IDS = { 'factory-crypto-1', // price borked 'factory-crypto-2', // price borked 'factory-crypto-49', // broken + 'factory-crypto-265', // broken ], fantom: [ 'factory-v2-2', // Exact duplicate of another facto pool, with 0 liquidity @@ -88,6 +89,10 @@ const HIDDEN_POOLS_IDS = { xdai: [ 'factory-v2-12', ], + base: [ + 'factory-crypto-0', + 'factory-tricrypto-0', + ], }; export default fn(async () => HIDDEN_POOLS_IDS); diff --git a/pages/api/getMainPoolsGaugeRewards.js b/pages/api/getMainPoolsGaugeRewards.js index 78a24eae..909df86e 100644 --- a/pages/api/getMainPoolsGaugeRewards.js +++ b/pages/api/getMainPoolsGaugeRewards.js @@ -60,17 +60,17 @@ const FACTORY_GAUGES_ADDED_TO_MAIN_LIST_ADDRESSES_REF_ASSET_PRICE = { }; // eslint-disable-next-line -const GAUGES_PARTIAL_ABI = [{"name":"reward_contract","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2051},{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1691},{"stateMutability":"view","type":"function","name":"reward_tokens","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":3787},{"name":"rewarded_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2201}]; +const GAUGES_PARTIAL_ABI = [{ "name": "reward_contract", "outputs": [{ "type": "address", "name": "" }], "inputs": [], "stateMutability": "view", "type": "function", "gas": 2051 }, { "name": "totalSupply", "outputs": [{ "type": "uint256", "name": "" }], "inputs": [], "stateMutability": "view", "type": "function", "gas": 1691 }, { "stateMutability": "view", "type": "function", "name": "reward_tokens", "inputs": [{ "name": "arg0", "type": "uint256" }], "outputs": [{ "name": "", "type": "address" }], "gas": 3787 }, { "name": "rewarded_token", "outputs": [{ "type": "address", "name": "" }], "inputs": [], "stateMutability": "view", "type": "function", "gas": 2201 }]; export default fn(async (gauges) => { if (typeof gauges === 'undefined') { throw new Error('gauges is undefined in getMainPoolsGaugeRewards()'); } - // const gauges = (await (await Request.get('https://api.curve.fi/api/getAllGauges')).json()).data; + // gauges = (await (await Request.get('https://api.curve.fi/api/getAllGauges')).json()).data; //empty gauges cause reverts const remove = [ - 'eurtusd', // Todo adapt script to this new type of gauges + 'eurtusd', // Todo adapt script to this new type of gauges 'eursusd', // Todo adapt script to this new type of gauges 'crveth', // Todo adapt script to this new type of gauges 'cvxeth', // Todo adapt script to this new type of gauges @@ -89,10 +89,10 @@ export default fn(async (gauges) => { address: gauge, version: ( V0_GAUGES_ADDRESSES.includes(gauge) ? null : - FACTORY_GAUGES_ADDED_TO_MAIN_LIST_ADDRESSES.includes(gauge.toLowerCase()) ? 'factory' : - name === 'ankreth' ? 'v-rewarddata' : // Uses the rewardData implementation - i < 18 ? 'v1' : - 'v2' + FACTORY_GAUGES_ADDED_TO_MAIN_LIST_ADDRESSES.includes(gauge.toLowerCase()) ? 'factory' : + name === 'ankreth' ? 'v-rewarddata' : // Uses the rewardData implementation + i < 18 ? 'v1' : + 'v2' ), })); @@ -119,13 +119,13 @@ export default fn(async (gauges) => { methodName: 'rewarded_token', metaData: { address, type: 'rewardToken' }, }] : - [...Array(Number(REWARDS_CONFIG[version].maxRewardCount)).keys()].map((rewardIndex) => ({ - address, - abi: GAUGES_PARTIAL_ABI, - methodName: 'reward_tokens', - params: [rewardIndex], - metaData: { address, type: 'rewardToken' }, - })) + [...Array(Number(REWARDS_CONFIG[version].maxRewardCount)).keys()].map((rewardIndex) => ({ + address, + abi: GAUGES_PARTIAL_ABI, + methodName: 'reward_tokens', + params: [rewardIndex], + metaData: { address, type: 'rewardToken', rewardIndex }, + })) )]) )); @@ -153,10 +153,10 @@ export default fn(async (gauges) => { rewardContract: rewardContract === ZERO_ADDRESS ? null : rewardContract, totalSupply: gaugesData.find(({ metaData }) => metaData.address === address && metaData.type === 'totalSupply').data / 1e18, rewardTokens: ( - version !== 'v-rewarddata' ? - // Onward staking for non-factory gauges means there's only ever one active reward token at a time - rewardTokens.length === 0 ? null : rewardTokens.slice(-1) : - rewardTokens + version === 'v-rewarddata' ? rewardTokens : + rewardTokens.length === 0 ? null : + version === 'v1' ? rewardTokens.slice(-1) : // Onward staking for non-factory gauges means there's only ever one active reward token at a time + rewardTokens ), }; }); @@ -198,7 +198,7 @@ export default fn(async (gauges) => { const rewardContractVersion = V2_GAUGES_USING_V1_REWARD_CONTRACT.includes(address) ? 'v1' : version; return ( - rewardContractVersion === 'v-rewarddata' ? + rewardContractVersion === 'v-rewarddata' ? ( flattenArray(rewardTokens.map((rewardToken) => [{ address: rewardContract, abi: REWARDS_CONFIG[rewardContractVersion].rewardContractAbi, @@ -220,7 +220,8 @@ export default fn(async (gauges) => { abi: ERC20_ABI, methodName: 'decimals', metaData: { address, rewardContract, rewardToken, type: 'decimals', metaType: 'token' }, - }])) : + }])) + ) : rewardContractVersion === 'v1' ? ( [{ address: rewardContract, abi: REWARDS_CONFIG[rewardContractVersion].rewardContractAbi, @@ -252,6 +253,43 @@ export default fn(async (gauges) => { methodName: 'decimals', metaData: { address, rewardContract, rewardToken: rewardTokens[0], type: 'decimals', metaType: 'token' }, }] + ) : ( + flattenArray(rewardTokens.map((rewardToken, i) => { + const isLatestRewardToken = (i === (rewardTokens.length - 1)); + + return [{ + address: rewardContract, + abi: REWARDS_CONFIG[rewardContractVersion].rewardContractAbi, + methodName: rewardContractVersion !== 'v1' ? 'rewardsDuration' : 'DURATION', + metaData: { address, rewardContract, rewardToken: rewardToken, type: 'duration', metaType: 'reward', isLatestRewardToken }, + }, { + address: rewardContract, + abi: REWARDS_CONFIG[rewardContractVersion].rewardContractAbi, + methodName: 'rewardRate', + metaData: { address, rewardContract, rewardToken: rewardToken, type: 'rewardRate', metaType: 'reward', isLatestRewardToken }, + }, { + address: rewardContract, + abi: REWARDS_CONFIG[rewardContractVersion].rewardContractAbi, + methodName: 'periodFinish', + metaData: { address, rewardContract, rewardToken: rewardToken, type: 'periodFinish', metaType: 'reward', isLatestRewardToken }, + }, { + address: rewardToken, + abi: ERC20_ABI, + methodName: 'name', + metaData: { address, rewardContract, rewardToken: rewardToken, type: 'name', metaType: 'token', isLatestRewardToken }, + }, { + address: rewardToken, + abi: ERC20_ABI, + methodName: 'symbol', + metaData: { address, rewardContract, rewardToken: rewardToken, type: 'symbol', metaType: 'token', isLatestRewardToken }, + }, { + address: rewardToken, + abi: ERC20_ABI, + methodName: 'decimals', + metaData: { address, rewardContract, rewardToken: rewardToken, type: 'decimals', metaType: 'token', isLatestRewardToken }, + }] + })) + ) ); }) )); @@ -265,7 +303,7 @@ export default fn(async (gauges) => { const nowTimestamp = getNowTimestamp(); const rewardsInfo = Array.from(Object.values(rewardDataPerRewardContractAndToken)).map((rewardDataForContractToken) => { - const { metaData: { address, rewardToken } } = rewardDataForContractToken[0]; + const { metaData: { address, rewardToken, isLatestRewardToken } } = rewardDataForContractToken[0]; const usesRewardData = rewardDataForContractToken.length === 1; let rate; @@ -283,14 +321,21 @@ export default fn(async (gauges) => { rewardRate, periodFinish, ] = [ - rewardDataForContractToken.find(({ metaData: { type } }) => type === 'rewardRate').data, - rewardDataForContractToken.find(({ metaData: { type } }) => type === 'periodFinish').data, - ]; + rewardDataForContractToken.find(({ metaData: { type } }) => type === 'rewardRate').data, + rewardDataForContractToken.find(({ metaData: { type } }) => type === 'periodFinish').data, + ]; rate = rewardRate / 1e18; rewardPeriodFinish = periodFinish; } + // isLatestRewardToken is either true, false or undefined if this doesn't matter for the tokens at hand + // When it's not undefined, only the last reward token can be active, + // so we force periodFinish to 0 to mark any tokens except for the last as inactive. + if (isLatestRewardToken === false) { + rewardPeriodFinish = 0; + } + const { totalSupply } = gaugesRewardData.find((gaugeRewardData) => gaugeRewardData.address === address); const tokenName = tokenData.find(({ metaData }) => metaData.rewardToken === rewardToken && metaData.type === 'name').data; const tokenSymbol = tokenData.find(({ metaData }) => metaData.rewardToken === rewardToken && metaData.type === 'symbol').data; @@ -348,5 +393,7 @@ export default fn(async (gauges) => { return { mainPoolsGaugeRewards: groupBy(mergedRewardsInfo, 'gaugeAddress') }; }, { + name: 'getMainPoolsGaugeRewards', + silenceParamsLog: true, maxAge: 5 * 60, // 5 min }); diff --git a/pages/api/getMainRegistryPools.js b/pages/api/getMainRegistryPools.js index dfb6a133..a99fda39 100644 --- a/pages/api/getMainRegistryPools.js +++ b/pages/api/getMainRegistryPools.js @@ -31,9 +31,10 @@ export default fn(async ({ blockchainId } = {}) => { const poolList = aggcalls[1].map((hex) => web3.eth.abi.decodeParameter('address', hex)); - return { poolList }; + return { poolList }; }, { maxAge: 3600, // 1 hour + name: 'getMainRegistryPools', normalizer: ([{ blockchainId } = {}]) => blockchainId, }); diff --git a/pages/api/getMainRegistryPoolsAndLpTokens.js b/pages/api/getMainRegistryPoolsAndLpTokens.js index 1f14a82c..c1db398e 100644 --- a/pages/api/getMainRegistryPoolsAndLpTokens.js +++ b/pages/api/getMainRegistryPoolsAndLpTokens.js @@ -26,31 +26,32 @@ export default fn(async ({ blockchainId } = {}) => { lpTokenAddress: ( /* [start] Hardcode the lp tokens because their pools don't have an lp_token/similar method */ (blockchainId === 'ethereum' && address.toLowerCase() === '0xbebc44782c7db0a1a60cb6fe97d0b483032ff1c7') ? '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490' : // ethereum 3crv - (blockchainId === 'ethereum' && address.toLowerCase() === '0x7fc77b5c7614e1533320ea6ddc2eb61fa00a9714') ? '0x075b1bb99792c9E1041bA13afEf80C91a1e70fB3' : // ethereum renbtc - (blockchainId === 'ethereum' && address.toLowerCase() === '0xa5407eae9ba41422680e2e00537571bcc53efbfd') ? '0xC25a3A3b969415c80451098fa907EC722572917F' : // ethereum susd - (blockchainId === 'ethereum' && address.toLowerCase() === '0x79a8c46dea5ada233abaffd40f3a0a2b1e5a4f27') ? '0x3B3Ac5386837Dc563660FB6a0937DFAa5924333B' : // ethereum busd - (blockchainId === 'ethereum' && address.toLowerCase() === '0xa2b47e3d5c44877cca798226b7b8118f9bfb7a56') ? '0x845838DF265Dcd2c412A1Dc9e959c7d08537f8a2' : // ethereum compound - (blockchainId === 'ethereum' && address.toLowerCase() === '0x4ca9b3063ec5866a4b82e437059d2c43d1be596f') ? '0xb19059ebb43466C323583928285a49f558E572Fd' : // ethereum hbtc - (blockchainId === 'ethereum' && address.toLowerCase() === '0x06364f10b501e868329afbc005b3492902d6c763') ? '0xD905e2eaeBe188fc92179b6350807D8bd91Db0D8' : // ethereum pax - (blockchainId === 'ethereum' && address.toLowerCase() === '0x93054188d876f558f4a66b2ef1d97d16edf0895b') ? '0x49849C98ae39Fff122806C06791Fa73784FB3675' : // ethereum ren - (blockchainId === 'ethereum' && address.toLowerCase() === '0xc5424b857f758e906013f3555dad202e4bdb4567') ? '0xA3D87FffcE63B53E0d54fAa1cc983B7eB0b74A9c' : // ethereum seth - (blockchainId === 'ethereum' && address.toLowerCase() === '0x52ea46506b9cc5ef470c5bf89f17dc28bb35d85c') ? '0x9fC689CCaDa600B6DF723D9E47D84d76664a1F23' : // ethereum usdt - (blockchainId === 'ethereum' && address.toLowerCase() === '0x45f783cce6b7ff23b2ab2d70e416cdb7d6055f51') ? '0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8' : // ethereum y - (blockchainId === 'ethereum' && address.toLowerCase() === '0x8038c01a0390a8c547446a0b2c18fc9aefecc10c') ? '0x3a664Ab939FD8482048609f652f9a0B0677337B9' : // ethereum dusd - (blockchainId === 'ethereum' && address.toLowerCase() === '0x4f062658eaaf2c1ccf8c8e36d6824cdf41167956') ? '0xD2967f45c4f384DEEa880F807Be904762a3DeA07' : // ethereum gusd - (blockchainId === 'ethereum' && address.toLowerCase() === '0x3ef6a01a0f81d6046290f3e2a8c5b843e738e604') ? '0x5B5CFE992AdAC0C9D48E05854B2d91C73a003858' : // ethereum husd - (blockchainId === 'ethereum' && address.toLowerCase() === '0xe7a24ef0c5e95ffb0f6684b813a78f2a3ad7d171') ? '0x6D65b498cb23deAba52db31c93Da9BFFb340FB8F' : // ethereum linkusd - (blockchainId === 'ethereum' && address.toLowerCase() === '0x8474ddbe98f5aa3179b3b3f5942d724afcdec9f6') ? '0x1AEf73d49Dedc4b1778d0706583995958Dc862e6' : // ethereum musd - (blockchainId === 'ethereum' && address.toLowerCase() === '0xc18cc39da8b11da8c3541c598ee022258f9744da') ? '0xC2Ee6b0334C261ED60C72f6054450b61B8f18E35' : // ethereum rsv - (blockchainId === 'ethereum' && address.toLowerCase() === '0x3e01dd8a5e1fb3481f0f589056b428fc308af0fb') ? '0x97E2768e8E73511cA874545DC5Ff8067eB19B787' : // ethereum usdk - (blockchainId === 'ethereum' && address.toLowerCase() === '0x0f9cb53ebe405d49a0bbdbd291a65ff571bc83e1') ? '0x4f3E8F405CF5aFC05D68142F3783bDfE13811522' : // ethereum usdn - /* [end] Hardcode the lp tokens because their pools don't have an lp_token/similar method */ - lpTokenAddresses[i] === ZERO_ADDRESS ? address : - lpTokenAddresses[i] + (blockchainId === 'ethereum' && address.toLowerCase() === '0x7fc77b5c7614e1533320ea6ddc2eb61fa00a9714') ? '0x075b1bb99792c9E1041bA13afEf80C91a1e70fB3' : // ethereum renbtc + (blockchainId === 'ethereum' && address.toLowerCase() === '0xa5407eae9ba41422680e2e00537571bcc53efbfd') ? '0xC25a3A3b969415c80451098fa907EC722572917F' : // ethereum susd + (blockchainId === 'ethereum' && address.toLowerCase() === '0x79a8c46dea5ada233abaffd40f3a0a2b1e5a4f27') ? '0x3B3Ac5386837Dc563660FB6a0937DFAa5924333B' : // ethereum busd + (blockchainId === 'ethereum' && address.toLowerCase() === '0xa2b47e3d5c44877cca798226b7b8118f9bfb7a56') ? '0x845838DF265Dcd2c412A1Dc9e959c7d08537f8a2' : // ethereum compound + (blockchainId === 'ethereum' && address.toLowerCase() === '0x4ca9b3063ec5866a4b82e437059d2c43d1be596f') ? '0xb19059ebb43466C323583928285a49f558E572Fd' : // ethereum hbtc + (blockchainId === 'ethereum' && address.toLowerCase() === '0x06364f10b501e868329afbc005b3492902d6c763') ? '0xD905e2eaeBe188fc92179b6350807D8bd91Db0D8' : // ethereum pax + (blockchainId === 'ethereum' && address.toLowerCase() === '0x93054188d876f558f4a66b2ef1d97d16edf0895b') ? '0x49849C98ae39Fff122806C06791Fa73784FB3675' : // ethereum ren + (blockchainId === 'ethereum' && address.toLowerCase() === '0xc5424b857f758e906013f3555dad202e4bdb4567') ? '0xA3D87FffcE63B53E0d54fAa1cc983B7eB0b74A9c' : // ethereum seth + (blockchainId === 'ethereum' && address.toLowerCase() === '0x52ea46506b9cc5ef470c5bf89f17dc28bb35d85c') ? '0x9fC689CCaDa600B6DF723D9E47D84d76664a1F23' : // ethereum usdt + (blockchainId === 'ethereum' && address.toLowerCase() === '0x45f783cce6b7ff23b2ab2d70e416cdb7d6055f51') ? '0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8' : // ethereum y + (blockchainId === 'ethereum' && address.toLowerCase() === '0x8038c01a0390a8c547446a0b2c18fc9aefecc10c') ? '0x3a664Ab939FD8482048609f652f9a0B0677337B9' : // ethereum dusd + (blockchainId === 'ethereum' && address.toLowerCase() === '0x4f062658eaaf2c1ccf8c8e36d6824cdf41167956') ? '0xD2967f45c4f384DEEa880F807Be904762a3DeA07' : // ethereum gusd + (blockchainId === 'ethereum' && address.toLowerCase() === '0x3ef6a01a0f81d6046290f3e2a8c5b843e738e604') ? '0x5B5CFE992AdAC0C9D48E05854B2d91C73a003858' : // ethereum husd + (blockchainId === 'ethereum' && address.toLowerCase() === '0xe7a24ef0c5e95ffb0f6684b813a78f2a3ad7d171') ? '0x6D65b498cb23deAba52db31c93Da9BFFb340FB8F' : // ethereum linkusd + (blockchainId === 'ethereum' && address.toLowerCase() === '0x8474ddbe98f5aa3179b3b3f5942d724afcdec9f6') ? '0x1AEf73d49Dedc4b1778d0706583995958Dc862e6' : // ethereum musd + (blockchainId === 'ethereum' && address.toLowerCase() === '0xc18cc39da8b11da8c3541c598ee022258f9744da') ? '0xC2Ee6b0334C261ED60C72f6054450b61B8f18E35' : // ethereum rsv + (blockchainId === 'ethereum' && address.toLowerCase() === '0x3e01dd8a5e1fb3481f0f589056b428fc308af0fb') ? '0x97E2768e8E73511cA874545DC5Ff8067eB19B787' : // ethereum usdk + (blockchainId === 'ethereum' && address.toLowerCase() === '0x0f9cb53ebe405d49a0bbdbd291a65ff571bc83e1') ? '0x4f3E8F405CF5aFC05D68142F3783bDfE13811522' : // ethereum usdn + /* [end] Hardcode the lp tokens because their pools don't have an lp_token/similar method */ + lpTokenAddresses[i] === ZERO_ADDRESS ? address : + lpTokenAddresses[i] ), })), }); }, { maxAge: 3600, // 1 hour + name: 'getMainRegistryPoolsAndLpTokens', normalizer: ([{ blockchainId } = {}]) => blockchainId, }); diff --git a/pages/api/getPlatforms.js b/pages/api/getPlatforms.js new file mode 100644 index 00000000..52cc3645 --- /dev/null +++ b/pages/api/getPlatforms.js @@ -0,0 +1,23 @@ +/** + * Returns platforms that Curve is deployed on, and which pool registries + * are available on each platform. + * + * Useful to then query e.g. `/api/getPools/PLATFORM/REGISTRY` + */ + +import configs from 'constants/configs'; +import { arrayToHashmap } from 'utils/Array'; +import { fn } from 'utils/api'; +import getPlatformRegistries from 'utils/data/curve-platform-registries'; + +const allBlockchainIds = Array.from(Object.keys(configs)); + +export default fn(async () => ({ + platforms: arrayToHashmap(await Promise.all(allBlockchainIds.map(async (blockchainId) => [ + blockchainId, + (await getPlatformRegistries(blockchainId)).registryIds, + ]))), +}), { + maxAge: 60 * 60, // 1h + name: 'getPlatforms', +}); diff --git a/pages/api/getPoolList/index.js b/pages/api/getPoolList/index.js index 729d92fb..73641db2 100644 --- a/pages/api/getPoolList/index.js +++ b/pages/api/getPoolList/index.js @@ -1,77 +1,50 @@ -import axios from 'axios'; import Web3 from 'web3'; -import BigNumber from 'big-number'; -import WEB3_CONSTANTS from 'constants/Web3'; import { fn } from 'utils/api'; -import { getFeeDistributor } from 'utils/getters'; -import { getThursdayUTCTimestamp } from 'utils/helpers'; -import { getMultiCall } from 'utils/getters'; - -/* GET CURVE ADDRESS GETTER */ -const ADDRESS_GETTER = '0x0000000022d53366457f9d5e68ec105046fc4383' -import ADDRESS_GETTER_ABI from 'constants/abis/address_getter.json'; import REGISTRY_ABI from 'constants/abis/registry.json'; import multicallAbi from 'constants/abis/multicall.json'; import configs from 'constants/configs'; -import { BASE_API_DOMAIN } from 'constants/AppConstants'; - - - - -export default fn(async ({blockchainId}) => { +import getPlatformRegistries from 'utils/data/curve-platform-registries'; +export default fn(async ({ blockchainId }) => { if (typeof blockchainId === 'undefined') blockchainId = 'ethereum'; // Default value const config = configs[blockchainId]; const web3 = new Web3(config.rpcUrl); - const address_getter_contract = new web3.eth.Contract(ADDRESS_GETTER_ABI, ADDRESS_GETTER); if (typeof config === 'undefined') { throw new Error(`No factory data for blockchainId "${blockchainId}"`); } - const multicallAddress = config.multicallAddress const multicall_contract = new web3.eth.Contract(multicallAbi, multicallAddress) - const main_registry = await address_getter_contract.methods.get_address(0).call() - const factory_registry = await address_getter_contract.methods.get_address(3).call() - const crypto_registry = await address_getter_contract.methods.get_address(5).call() - const crypto_factory_registry = config.getFactoryCryptoRegistryAddress ? await config.getFactoryCryptoRegistryAddress() : null - const crvusd_factory_registry = config.getFactoryCrvusdRegistryAddress ? await config.getFactoryCrvusdRegistryAddress() : null - const tricrypto_factory_registry = config.getFactoryTricryptoRegistryAddress ? await config.getFactoryTricryptoRegistryAddress() : null - - - let registries = - [main_registry, factory_registry, crypto_registry, crypto_factory_registry, crvusd_factory_registry, tricrypto_factory_registry] - - registries = registries.filter((address) => !!address && address !== '0x0000000000000000000000000000000000000000'); - - let poolList = [] - let registries_name = ['main', 'stable-factory', 'crypto', 'crypto-factory', 'factory-crvusd', 'factory-tricrypto'] + let { + registryIds: registries_name, + registryAddresses: registries, + } = await getPlatformRegistries(blockchainId); - for (var i = 0; i < registries.length; i++) { + // For backward compatibility, in this endpoint the "factory" registry is named "stable-factory" + registries_name = registries_name.map((registryId) => (registryId === 'factory' ? 'stable-factory' : registryId)); + for (var i = 0; i < registries.length; i++) { let registry = new web3.eth.Contract(REGISTRY_ABI, registries[i]) let pool_count = await registry.methods.pool_count().call() let calls = [] for (var o = 0; o < pool_count; o++) { - calls.push([registries[i],registry.methods.pool_list(o).encodeABI()]) + calls.push([registries[i], registry.methods.pool_list(o).encodeABI()]) } let aggcalls = await multicall_contract.methods.aggregate(calls).call(); - aggcalls[1].map((hex) => { poolList.push({'type': registries_name[i], 'address': web3.eth.abi.decodeParameter('address', hex)}) }) + aggcalls[1].map((hex) => { poolList.push({ 'type': registries_name[i], 'address': web3.eth.abi.decodeParameter('address', hex) }) }) } //filters duplicates poolList = [...poolList.reduce((map, obj) => map.set(obj.address, obj), new Map()).values()]; return { poolList }; - - }, { maxAge: 5 * 60, // 15 min }); diff --git a/pages/api/getPools/[...params].js b/pages/api/getPools/[...params].js index b0d11f36..ef6fe746 100644 --- a/pages/api/getPools/[...params].js +++ b/pages/api/getPools/[...params].js @@ -1,8 +1,9 @@ import { fn } from 'utils/api'; import getPoolsApiFn from './index'; -export default fn(async ({ params: [blockchainId, registryId] }) => ( - getPoolsApiFn.straightCall({ blockchainId, registryId }) +export default fn(async ({ params: [blockchainId, registryId], ...queryParams }) => ( + getPoolsApiFn.straightCall({ ...queryParams, blockchainId, registryId }) ), { maxAge: 60, + name: 'getPools[...params]', }); diff --git a/pages/api/getPools/_utils.js b/pages/api/getPools/_utils.js index e0e02719..f2e75519 100644 --- a/pages/api/getPools/_utils.js +++ b/pages/api/getPools/_utils.js @@ -80,7 +80,7 @@ const deriveMissingCoinPricesSinglePass = async ({ * of obscureUsd to fill in its usdPrice in the currently iterated-on pool) */ const otherPoolsCoinsAddressesAndPricesMap = arrayToHashmap(flattenArray(otherPools.map((pool) => ( - pool.coins ? + (pool.coins && pool.usdTotal > 5000) ? pool.coins.filter(({ usdPrice }) => usdPrice !== null) : [] // Pools at higher indices do not have a coins prop yet ).map(({ address, usdPrice }) => [address, usdPrice])))); diff --git a/pages/api/getPools/all.js b/pages/api/getPools/all.js index 2d6e6fd5..5f7d1935 100644 --- a/pages/api/getPools/all.js +++ b/pages/api/getPools/all.js @@ -1,12 +1,11 @@ import configs from 'constants/configs'; -import getAllCurvePoolsData from 'utils/data/curve-pools-data'; +import { fetchAllCurvePoolsDataEndpoints } from 'utils/data/curve-pools-data'; import { fn } from 'utils/api'; const allBlockchainIds = Array.from(Object.keys(configs)); -console.log({ allBlockchainIds }) export default fn(async () => ( - getAllCurvePoolsData(allBlockchainIds) + fetchAllCurvePoolsDataEndpoints(allBlockchainIds) ), { maxAge: 5 * 60, name: 'getAllPools', diff --git a/pages/api/getPools/index.js b/pages/api/getPools/index.js index ae6f620d..23ff46af 100644 --- a/pages/api/getPools/index.js +++ b/pages/api/getPools/index.js @@ -12,7 +12,7 @@ import Web3 from 'web3'; import BN from 'bignumber.js'; import groupBy from 'lodash.groupby'; -import { fn } from 'utils/api'; +import { fn, ParamError } from 'utils/api'; import factoryV2RegistryAbi from 'constants/abis/factory-v2-registry.json'; import factoryPoolAbi from 'constants/abis/factory-v2/Plain2Balances.json'; import factoryCryptoRegistryAbi from 'constants/abis/factory-crypto-registry.json'; @@ -27,6 +27,7 @@ import factoryEywaPoolAbi from 'constants/abis/fantom/factory-eywa/pool.json'; import erc20Abi from 'constants/abis/erc20.json'; import erc20AbiMKR from 'constants/abis/erc20_mkr.json'; import { multiCall } from 'utils/Calls'; +import getPlatformRegistries from 'utils/data/curve-platform-registries'; import { ZERO_ADDRESS } from 'utils/Web3'; import { flattenArray, sum, arrayToHashmap } from 'utils/Array'; import { sequentialPromiseReduce, sequentialPromiseFlatMap, sequentialPromiseMap } from 'utils/Async'; @@ -34,12 +35,16 @@ import { getRegistry } from 'utils/getters'; import getAssetsPrices from 'utils/data/assets-prices'; import getTokensPrices from 'utils/data/tokens-prices'; import getYcTokenPrices from 'utils/data/getYcTokenPrices'; +import getCrvusdPrice from 'utils/data/getCrvusdPrice'; +import getETHLSDAPYs from 'utils/data/getETHLSDAPYs'; import getTempleTokenPrices from 'utils/data/getTempleTokenPrices'; +import getEywaTokenPrices from 'utils/data/getEywaTokenPrices'; import getMainRegistryPools from 'pages/api/getMainRegistryPools'; import getMainRegistryPoolsAndLpTokensFn from 'pages/api/getMainRegistryPoolsAndLpTokens'; import getMainPoolsGaugeRewards from 'pages/api/getMainPoolsGaugeRewards'; import configs from 'constants/configs'; import allCoins from 'constants/coins'; +import { BASE_API_DOMAIN } from 'constants/AppConstants'; import POOLS_ZAPS from 'constants/pools-zaps'; import COIN_ADDRESS_COINGECKO_ID_MAP from 'constants/CoinAddressCoingeckoIdMap'; import { getHardcodedPoolId } from 'constants/PoolAddressInternalIdMap'; @@ -47,15 +52,16 @@ import { deriveMissingCoinPrices, getImplementation } from 'pages/api/getPools/_ import { lc } from 'utils/String'; /* eslint-disable */ -const POOL_BALANCE_ABI_UINT256 = [{ "gas": 1823, "inputs": [ { "name": "arg0", "type": "uint256" } ], "name": "balances", "outputs": [ { "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }]; -const POOL_BALANCE_ABI_INT128 = [{ "gas": 1823, "inputs": [ { "name": "arg0", "type": "int128" } ], "name": "balances", "outputs": [ { "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }]; -const POOL_PRICE_ORACLE_NO_ARGS_ABI = [{"stateMutability":"view","type":"function","name":"price_oracle","inputs":[],"outputs":[{"name":"","type":"uint256"}]}]; -const POOL_PRICE_ORACLE_WITH_ARGS_ABI = [{"stateMutability":"view","type":"function","name":"price_oracle","inputs":[{"name":"k","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]}]; -const POOL_TOKEN_METHOD_ABI = [{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":468}, {"stateMutability":"view","type":"function","name":"lp_token","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":468}]; -const POOL_NAME_METHOD_ABI = [{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}]}]; -const POOL_SYMBOL_METHOD_ABI = [{ "stateMutability": "view", "type": "function", "name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}]}]; -const POOL_TOTALSUPPLY_METHOD_ABI = [{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function"}]; +const POOL_BALANCE_ABI_UINT256 = [{ "gas": 1823, "inputs": [{ "name": "arg0", "type": "uint256" }], "name": "balances", "outputs": [{ "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }]; +const POOL_BALANCE_ABI_INT128 = [{ "gas": 1823, "inputs": [{ "name": "arg0", "type": "int128" }], "name": "balances", "outputs": [{ "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }]; +const POOL_PRICE_ORACLE_NO_ARGS_ABI = [{ "stateMutability": "view", "type": "function", "name": "price_oracle", "inputs": [], "outputs": [{ "name": "", "type": "uint256" }] }]; +const POOL_PRICE_ORACLE_WITH_ARGS_ABI = [{ "stateMutability": "view", "type": "function", "name": "price_oracle", "inputs": [{ "name": "k", "type": "uint256" }], "outputs": [{ "name": "", "type": "uint256" }] }]; +const POOL_TOKEN_METHOD_ABI = [{ "stateMutability": "view", "type": "function", "name": "token", "inputs": [], "outputs": [{ "name": "", "type": "address" }], "gas": 468 }, { "stateMutability": "view", "type": "function", "name": "lp_token", "inputs": [], "outputs": [{ "name": "", "type": "address" }], "gas": 468 }]; +const POOL_NAME_METHOD_ABI = [{ "stateMutability": "view", "type": "function", "name": "name", "inputs": [], "outputs": [{ "name": "", "type": "string" }] }]; +const POOL_SYMBOL_METHOD_ABI = [{ "stateMutability": "view", "type": "function", "name": "symbol", "inputs": [], "outputs": [{ "name": "", "type": "string" }] }]; +const POOL_TOTALSUPPLY_METHOD_ABI = [{ "name": "totalSupply", "outputs": [{ "type": "uint256", "name": "" }], "inputs": [], "stateMutability": "view", "type": "function" }]; const REGISTRY_GET_IMPLEMENTATION_ADDRESS_ABI = [factoryV2RegistryAbi.find(({ name }) => name === 'get_implementation_address')] +const ORACLIZED_POOL_DETECTION_ABI = [{ "stateMutability": "view", "type": "function", "name": "oracle_method", "inputs": [], "outputs": [{ "name": "", "type": "uint256" }] }]; /* eslint-enable */ /* eslint-disable object-curly-newline, camelcase */ @@ -68,13 +74,14 @@ const IGNORED_COINS = { // Tokens for which to use Defillama as external price oracle const EXTERNAL_ORACLE_COINS_ADDRESSES = { ethereum: [ - '0x95dfdc8161832e4ff7816ac4b6367ce201538253', // ibKRW (no curve crypto pool to act as oracle) + '0x269895a3df4d73b077fc823dd6da1b95f72aaf9b', // sKRW (no curve crypto pool to act as oracle) '0x5555f75e3d5278082200fb451d1b6ba946d8e13b', // ibJPY (no curve crypto pool to act as oracle) '0xF48e200EAF9906362BB1442fca31e0835773b8B4', // sAUD (no curve crypto pool to act as oracle) '0x97fe22E7341a0Cd8Db6F6C021A24Dc8f4DAD855F', // sGBP (no curve crypto pool to act as oracle) '0x0f83287ff768d1c1e17a42f44d644d7f22e8ee1d', // sCHF (no curve crypto pool to act as oracle) '0xc2544a32872a91f4a553b404c6950e89de901fdb', // FPIS (no liquid curve crypto pool to act as oracle) '0xa0d69e286b938e21cbf7e51d71f6a4c8918f482f', // eUSD (no curve crypto pool to act as oracle) + '0x530824da86689c9c17cdc2871ff29b058345b44a', // sTBT (curve crypto pool that has precedence has low liq) ].map(lc), }; @@ -85,9 +92,21 @@ const CURVE_POOL_LP_SYMBOLS_OVERRIDES = new Map([ ['0x051d7e5609917bd9b73f04bac0ded8dd46a74301', 'sbtc2Crv'], ]); -const overrideSymbol = (coin) => ({ +// Lowercase token address <> symbol to use +const CURVE_POOL_SYMBOLS_OVERRIDES = new Map([ + ['kava-0xfa9343c3897324496a05fc75abed6bac29f8a40f', 'multiUSDC'], + ['kava-0x765277eebeca2e31912c9946eae1021199b39c61', 'multiDAI'], + ['kava-0xb44a9b6905af7c801311e8f4e76932ee959c663c', 'multiUSDT'], + ['arbitrum-0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', 'USDC.e'], +]); + +const overrideSymbol = (coin, blockchainId) => ({ ...coin, - symbol: (CURVE_POOL_LP_SYMBOLS_OVERRIDES.get(lc(coin.address)) || coin.symbol), + symbol: ( + CURVE_POOL_LP_SYMBOLS_OVERRIDES.get(lc(coin.address)) || + CURVE_POOL_SYMBOLS_OVERRIDES.get(`${blockchainId}-${lc(coin.address)}`) || + coin.symbol + ), }); const getEthereumOnlyData = async ({ preventQueryingFactoData, blockchainId }) => { @@ -100,8 +119,13 @@ const getEthereumOnlyData = async ({ preventQueryingFactoData, blockchainId }) = (await import('utils/data/getFactoryV2GaugeRewards')).default : (await import('utils/data/getFactoryV2SidechainGaugeRewards')).default ); - const getGauges = (await import('pages/api/getAllGauges')).default; - gaugesData = await getGauges.straightCall({ blockchainId }); + /** + * Here we want getGauges data (which itself calls getPools) to be available + * whether api edge caches are hot or cold. This makes sure data is called + * every time, but takes advantages of returning cached data very quickly once + * caches are hot. + */ + gaugesData = (await (await fetch(BASE_API_DOMAIN + '/api/getAllGauges?blockchainId=' + blockchainId)).json()).data; if (blockchainId === 'ethereum') { const factoryGauges = Array.from(Object.values(gaugesData)).filter(({ side_chain }) => !side_chain); @@ -176,7 +200,7 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) const config = configs[blockchainId]; if (typeof config === 'undefined') { - throw new Error(`No config data for blockchainId "${blockchainId}"`); + throw new ParamError(`No config data for blockchainId "${blockchainId}"`); } if (config.hasNoMainRegistry && registryId === 'main') { @@ -202,39 +226,17 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) multicall2Address, BASE_POOL_LP_TO_GAUGE_LP_MAP, DISABLED_POOLS_ADDRESSES, + BROKEN_POOLS_ADDRESSES, } = config; if (registryId !== 'factory' && registryId !== 'main' && registryId !== 'crypto' && registryId !== 'factory-crypto' && registryId !== 'factory-crvusd' && registryId !== 'factory-tricrypto' && registryId !== 'factory-eywa') { - throw new Error('registryId must be \'factory\'|\'main\'|\'crypto\'|\'factory-crypto\'|\'factory-crvusd\'|\'factory-tricrypto\'|\'factory-eywa\''); - } - - if (registryId === 'factory' && typeof getFactoryRegistryAddress !== 'function') { - console.error(`No getFactoryRegistryAddress() config method found for blockchainId "${blockchainId}"`); - return { poolData: [] }; - } - - if (registryId === 'crypto' && typeof getCryptoRegistryAddress !== 'function') { - console.error(`No getCryptoRegistryAddress() config method found for blockchainId "${blockchainId}"`); - return { poolData: [] }; - } - - if (registryId === 'factory-crypto' && typeof getFactoryCryptoRegistryAddress !== 'function') { - console.error(`No getFactoryCryptoRegistryAddress() config method found for blockchainId "${blockchainId}"`); - return { poolData: [] }; + throw new ParamError('registryId must be \'factory\'|\'main\'|\'crypto\'|\'factory-crypto\'|\'factory-crvusd\'|\'factory-tricrypto\'|\'factory-eywa\''); } - if (registryId === 'factory-crvusd' && typeof getFactoryCrvusdRegistryAddress !== 'function') { - console.error(`No getFactoryCrvusdRegistryAddress() config method found for blockchainId "${blockchainId}"`); - return { poolData: [] }; - } - - if (registryId === 'factory-tricrypto' && typeof getFactoryTricryptoRegistryAddress !== 'function') { - console.error(`No getFactoryTricryptoRegistryAddress() config method found for blockchainId "${blockchainId}"`); - return { poolData: [] }; - } + const platformRegistries = (await getPlatformRegistries(blockchainId)).registryIds; - if (registryId === 'factory-eywa' && typeof getFactoryEywaRegistryAddress !== 'function') { - console.error(`No getFactoryEywaRegistryAddress() config method found for blockchainId "${blockchainId}"`); + if (!platformRegistries.includes(registryId)) { + console.error(`No registry "${registryId}" found for blockchainId "${blockchainId}"`); return { poolData: [] }; } @@ -247,45 +249,45 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) const registryAddress = ( registryId === 'factory' ? await getFactoryRegistryAddress() : - registryId === 'main' ? await getRegistry({ blockchainId }) : - registryId === 'crypto' ? await getCryptoRegistryAddress() : - registryId === 'factory-crypto' ? await getFactoryCryptoRegistryAddress() : - registryId === 'factory-crvusd' ? await getFactoryCrvusdRegistryAddress() : - registryId === 'factory-tricrypto' ? await getFactoryTricryptoRegistryAddress() : - registryId === 'factory-eywa' ? await getFactoryEywaRegistryAddress() : - undefined + registryId === 'main' ? await getRegistry({ blockchainId }) : + registryId === 'crypto' ? await getCryptoRegistryAddress() : + registryId === 'factory-crypto' ? await getFactoryCryptoRegistryAddress() : + registryId === 'factory-crvusd' ? await getFactoryCrvusdRegistryAddress() : + registryId === 'factory-tricrypto' ? await getFactoryTricryptoRegistryAddress() : + registryId === 'factory-eywa' ? await getFactoryEywaRegistryAddress() : + undefined ); if (registryAddress === ZERO_ADDRESS || !registryAddress) return { poolData: [], tvlAll: 0 }; const getIdForPool = (id) => ( registryId === 'factory' ? `factory-v2-${id}` : - registryId === 'main' ? `${id}` : - registryId === 'crypto' ? `crypto-${id}` : - registryId === 'factory-crypto' ? `factory-crypto-${id}` : - registryId === 'factory-crvusd' ? `factory-crvusd-${id}` : - registryId === 'factory-tricrypto' ? `factory-tricrypto-${id}` : - registryId === 'factory-eywa' ? `factory-eywa-${id}` : - undefined + registryId === 'main' ? `${id}` : + registryId === 'crypto' ? `crypto-${id}` : + registryId === 'factory-crypto' ? `factory-crypto-${id}` : + registryId === 'factory-crvusd' ? `factory-crvusd-${id}` : + registryId === 'factory-tricrypto' ? `factory-tricrypto-${id}` : + registryId === 'factory-eywa' ? `factory-eywa-${id}` : + undefined ); const POOL_ABI = ( registryId === 'factory-crypto' ? factoryCryptoPoolAbi : - registryId === 'factory-crvusd' ? factoryCrvusdPoolAbi : - registryId === 'factory-tricrypto' ? factoryTricryptoPoolAbi : - registryId === 'factory-eywa' ? factoryEywaPoolAbi : - factoryPoolAbi + registryId === 'factory-crvusd' ? factoryCrvusdPoolAbi : + registryId === 'factory-tricrypto' ? factoryTricryptoPoolAbi : + registryId === 'factory-eywa' ? factoryEywaPoolAbi : + factoryPoolAbi ); const REGISTRY_ABI = ( registryId === 'factory-crypto' ? factoryCryptoRegistryAbi : - registryId === 'factory-crvusd' ? factoryCrvusdRegistryAbi : - registryId === 'factory-tricrypto' ? [ - ...factoryTricryptoRegistryAbi, - ...REGISTRY_GET_IMPLEMENTATION_ADDRESS_ABI, // Hack, see get_implementation_address call for factory-tricrypto for context - ] : - registryId === 'factory-eywa' ? factoryEywaRegistryAbi : - registryId === 'crypto' ? cryptoRegistryAbi : - factoryV2RegistryAbi + registryId === 'factory-crvusd' ? factoryCrvusdRegistryAbi : + registryId === 'factory-tricrypto' ? [ + ...factoryTricryptoRegistryAbi, + ...REGISTRY_GET_IMPLEMENTATION_ADDRESS_ABI, // Hack, see get_implementation_address call for factory-tricrypto for context + ] : + registryId === 'factory-eywa' ? factoryEywaRegistryAbi : + registryId === 'crypto' ? cryptoRegistryAbi : + factoryV2RegistryAbi ); @@ -298,6 +300,10 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) undefined ); + const { + [allCoins.crv.coingeckoId]: crvPrice, + } = await getAssetsPrices([allCoins.crv.coingeckoId]); + const poolCount = Number(await registry.methods.pool_count().call()); if (poolCount === 0) return { poolData: [], tvlAll: 0, tvl: 0 }; @@ -334,11 +340,11 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) const REGISTRIES_DEPENDENCIES = { main: [], crypto: ['main'], - 'factory-tricrypto': ['main'], // This factory will have limited pools, for which main registry holds enough coin pricings 'factory-crvusd': ['main'], // This factory will have limited pools, for which main registry holds enough coin pricings 'factory-eywa': ['main'], // This factory will have limited pools, for which main registry holds enough coin pricings - 'factory-crypto': ['main', 'crypto', 'factory-crvusd', 'factory-tricrypto'], - factory: ['main', 'crypto', 'factory-crypto', 'factory-crvusd', 'factory-tricrypto'], + 'factory-crypto': ['main', 'crypto', 'factory-crvusd'], + factory: ['main', 'crypto', 'factory-crypto', 'factory-crvusd'], + 'factory-tricrypto': ['main', 'factory-crvusd', 'factory'], }; const { poolsAndLpTokens: mainRegistryPoolsAndLpTokens } = await getMainRegistryPoolsAndLpTokensFn.straightCall({ blockchainId }); const otherRegistryPoolsData = await sequentialPromiseFlatMap(REGISTRIES_DEPENDENCIES[registryId], async (id) => ( @@ -360,8 +366,8 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) poolRegistryId === 'main' ? mainRegistryPoolsAndLpTokens.find(({ address: addressB }) => ( addressB.toLowerCase() === address.toLowerCase() )) : - poolRegistryId === 'crypto' ? pool : - null + poolRegistryId === 'crypto' ? pool : + null ); if (!matchingPool) return null; @@ -392,7 +398,7 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) lcAddress, tokenUsdPrices.sort(({ poolUsdTotal: poolUsdTotalA }, { poolUsdTotal: poolUsdTotalB }) => ( poolUsdTotalA > poolUsdTotalB ? -1 : - poolUsdTotalB > poolUsdTotalA ? 1 : 0 + poolUsdTotalB > poolUsdTotalA ? 1 : 0 ))[0].usdPrice, ])); @@ -404,6 +410,7 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) ...POOL_NAME_METHOD_ABI, ...POOL_SYMBOL_METHOD_ABI, ...POOL_TOTALSUPPLY_METHOD_ABI, + ...ORACLIZED_POOL_DETECTION_ABI, ], address); // Note: reverting for at least some pools, prob non-meta ones: get_underlying_coins, get_underlying_decimals @@ -429,6 +436,11 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) methodName: 'A', metaData: { poolId, type: 'amplificationCoefficient' }, ...networkSettingsParam, + }, { + contract: poolContract, + methodName: 'oracle_method', + metaData: { poolId, type: 'oracleMethod' }, + ...networkSettingsParam, }, // 'main' and 'factory' registries have these pieces of info, others do not ...( @@ -492,7 +504,7 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) params: [address], metaData: { poolId, type: 'implementationAddress' }, ...networkSettingsParam, - // factory-tricrypto pools do not have any view method to read their implementation; currently + // factory-tricrypto pools on mainnet do not have any view method to read their implementation; currently // there's only one implementation available in this registry, so we hardcode it by querying // an unexisting method and falling back to the desired value, but we'll need to find // another way when another implementation is added. @@ -615,42 +627,42 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) const lpTokenData = ( lpTokensWithMetadata.length === 0 ? [] : - await multiCall(flattenArray(lpTokensWithMetadata.map(({ - data: address, - metaData, - }) => { - const lpTokenContract = new web3.eth.Contract(erc20Abi, address); - const poolCoinsCount = tweakedPoolData.find(({ metaData: { type, poolId } }) => ( - type === 'coinsAddresses' && - poolId === metaData.poolId - )).data.filter((coinAddress) => coinAddress !== '0x0000000000000000000000000000000000000000').length; - const poolHasMultipleOracles = poolCoinsCount > 2; - const poolAddress = poolAddresses[poolIds.indexOf(metaData.poolId)]; - const poolContractForPriceOracleCall = new web3.eth.Contract(poolHasMultipleOracles ? POOL_PRICE_ORACLE_WITH_ARGS_ABI : POOL_PRICE_ORACLE_NO_ARGS_ABI, poolAddress); - - return [{ - contract: lpTokenContract, - methodName: 'name', - metaData: { poolId: metaData.poolId, type: 'name' }, - ...networkSettingsParam, - }, { - contract: lpTokenContract, - methodName: 'symbol', - metaData: { poolId: metaData.poolId, type: 'symbol' }, - ...networkSettingsParam, - }, { - contract: lpTokenContract, - methodName: 'totalSupply', - metaData: { poolId: metaData.poolId, type: 'totalSupply' }, - ...networkSettingsParam, - }, { - contract: poolContractForPriceOracleCall, - methodName: 'price_oracle', // uint256 - params: poolHasMultipleOracles ? [0] : [], // Price oracle for first asset, there are N-1 oracles so we can fetch more if needed - metaData: { poolId: metaData.poolId, type: 'priceOracle' }, - ...networkSettingsParam, - }]; - }))) + await multiCall(flattenArray(lpTokensWithMetadata.map(({ + data: address, + metaData, + }) => { + const lpTokenContract = new web3.eth.Contract(erc20Abi, address); + const poolCoinsCount = tweakedPoolData.find(({ metaData: { type, poolId } }) => ( + type === 'coinsAddresses' && + poolId === metaData.poolId + )).data.filter((coinAddress) => coinAddress !== '0x0000000000000000000000000000000000000000').length; + const poolHasMultipleOracles = poolCoinsCount > 2; + const poolAddress = poolAddresses[poolIds.indexOf(metaData.poolId)]; + const poolContractForPriceOracleCall = new web3.eth.Contract(poolHasMultipleOracles ? POOL_PRICE_ORACLE_WITH_ARGS_ABI : POOL_PRICE_ORACLE_NO_ARGS_ABI, poolAddress); + + return [{ + contract: lpTokenContract, + methodName: 'name', + metaData: { poolId: metaData.poolId, type: 'name' }, + ...networkSettingsParam, + }, { + contract: lpTokenContract, + methodName: 'symbol', + metaData: { poolId: metaData.poolId, type: 'symbol' }, + ...networkSettingsParam, + }, { + contract: lpTokenContract, + methodName: 'totalSupply', + metaData: { poolId: metaData.poolId, type: 'totalSupply' }, + ...networkSettingsParam, + }, { + contract: poolContractForPriceOracleCall, + methodName: 'price_oracle', // uint256 + params: poolHasMultipleOracles ? [0] : [], // Price oracle for first asset, there are N-1 oracles so we can fetch more if needed + metaData: { poolId: metaData.poolId, type: 'priceOracle' }, + ...networkSettingsParam, + }]; + }))) ); const augmentedPoolData = [ @@ -707,6 +719,8 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) ...coinAddressesAndPricesMapFallbackFromAddress, }; + const crvusdTokenAddresseAndPriceMapFallback = await getCrvusdPrice(blockchainId); + const ycTokensAddressesAndPricesMapFallback = ( (blockchainId === 'ethereum' || blockchainId === 'fantom') ? await getYcTokenPrices(networkSettingsParam, blockchainId, coinAddressesAndPricesMapFallback) : @@ -719,6 +733,12 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) {} ); + const eywaTokensAddressesAndPricesMapFallback = ( + (blockchainId === 'fantom' && registryId === 'factory-eywa') ? + await getEywaTokenPrices(networkSettingsParam, blockchainId, coinAddressesAndPricesMapFallback, allCoinAddresses) : + {} + ); + const coinData = await multiCall(flattenArray(allCoinAddresses.map(({ poolId, address }) => { // In crypto facto pools, native eth is represented as weth const isNativeEth = ( @@ -733,8 +753,8 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) ); const coinContract = ( isNativeEth ? undefined : - hasByte32Symbol ? new web3.eth.Contract(erc20AbiMKR, address) : - new web3.eth.Contract(erc20Abi, address) + hasByte32Symbol ? new web3.eth.Contract(erc20AbiMKR, address) : + new web3.eth.Contract(erc20Abi, address) ); const poolAddress = poolAddresses[poolIds.indexOf(poolId)]; @@ -797,16 +817,17 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) const coinInfo = accu[key]; const coinPrice = ( - (IGNORED_COINS[blockchainId] || []).includes(coinAddress.toLowerCase()) ? - 0 : + (IGNORED_COINS[blockchainId] || []).includes(coinAddress.toLowerCase()) ? 0 : ( - otherRegistryTokensPricesMap[coinAddress.toLowerCase()] || - mainRegistryLpTokensPricesMap[coinAddress.toLowerCase()] || - coinAddressesAndPricesMapFallback[coinAddress.toLowerCase()] || - ycTokensAddressesAndPricesMapFallback[coinAddress.toLowerCase()] || - templeTokensAddressesAndPricesMapFallback[coinAddress.toLowerCase()] || - (registryId === 'factory' && ethereumOnlyData?.factoryGaugesPoolAddressesAndAssetPricesMap?.[poolAddress.toLowerCase()]) || - null + crvusdTokenAddresseAndPriceMapFallback[coinAddress.toLowerCase()] || + otherRegistryTokensPricesMap[coinAddress.toLowerCase()] || + mainRegistryLpTokensPricesMap[coinAddress.toLowerCase()] || + coinAddressesAndPricesMapFallback[coinAddress.toLowerCase()] || + ycTokensAddressesAndPricesMapFallback[coinAddress.toLowerCase()] || + templeTokensAddressesAndPricesMapFallback[coinAddress.toLowerCase()] || + eywaTokensAddressesAndPricesMapFallback[coinAddress.toLowerCase()] || + (registryId === 'factory' && ethereumOnlyData?.factoryGaugesPoolAddressesAndAssetPricesMap?.[poolAddress.toLowerCase()]) || + null ) ); @@ -823,13 +844,13 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) ...( // Most pool contracts expect a coin index as uint256, which we retrieve in poolBalanceUint256 type === 'poolBalanceUint256' ? { poolBalance: data } : - // Some pool contracts expect a coin index as int128, which we retrieve in poolBalanceInt128, - // and use as fallback value for poolBalance - type === 'poolBalanceInt128' ? { poolBalance: BN.max(coinInfo.poolBalance, data).toFixed() } : - type === 'poolStakedBalance' ? { poolBalance: BN(coinInfo.poolBalance).plus(data).toFixed() } : - // Force 'MKR' as symbol for MKR token on Ethereum, which uses bytes32 and not string - (type === 'symbol' && blockchainId === 'ethereum' && lc(coinAddress) === '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2') ? { symbol: 'MKR' } : - { [type]: data } + // Some pool contracts expect a coin index as int128, which we retrieve in poolBalanceInt128, + // and use as fallback value for poolBalance + type === 'poolBalanceInt128' ? { poolBalance: BN.max(coinInfo.poolBalance, data).toFixed() } : + type === 'poolStakedBalance' ? { poolBalance: BN(coinInfo.poolBalance).plus(data).toFixed() } : + // Force 'MKR' as symbol for MKR token on Ethereum, which uses bytes32 and not string + (type === 'symbol' && blockchainId === 'ethereum' && lc(coinAddress) === '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2') ? { symbol: 'MKR' } : + { [type]: data } ), ...(isNativeEth ? hardcodedInfoForNativeEth : {}), isBasePoolLpToken: mainRegistryPoolsAndLpTokens.some(({ lpTokenAddress }) => ( @@ -937,10 +958,10 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) // and fall back to the assetType prop. const assetTypeName = ( (implementation === 'plain2eth' || implementation === 'plain2ethema' || implementation === 'plain2ethema2' || implementation === 'plain3eth' || implementation === 'plain4eth') ? nativeCurrencySymbol.toLowerCase() : - isBtcMetaPool ? 'btc' : - isUsdMetaPool ? 'usd' : - isNativeStablePool ? nativeCurrencySymbol.toLowerCase() : - (assetTypeMap.get(poolInfo.assetType) || 'unknown') + isBtcMetaPool ? 'btc' : + isUsdMetaPool ? 'usd' : + isNativeStablePool ? nativeCurrencySymbol.toLowerCase() : + (assetTypeMap.get(poolInfo.assetType) || 'unknown') ); const coins = poolInfo.coinsAddresses @@ -950,7 +971,11 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) return { ...mergedCoinData[key], - usdPrice: (mergedCoinData[key]?.usdPrice === 0 ? 0 : (mergedCoinData[key]?.usdPrice || null)), + usdPrice: ( + mergedCoinData[key]?.usdPrice === 0 ? 0 : + (blockchainId === 'ethereum' && lc(coinAddress) === lc(allCoins.crv.address)) ? crvPrice : // Temp: use external crv price oracle + (mergedCoinData[key]?.usdPrice || null) + ), }; }); @@ -965,13 +990,19 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) otherRegistryTokensPricesMap, }); - const usdTotal = sum(augmentedCoins.map(({ usdPrice, poolBalance, decimals }) => ( - poolBalance / (10 ** decimals) * usdPrice - ))); + const usdTotal = ( + (BROKEN_POOLS_ADDRESSES || []).includes(lc(poolInfo.address)) ? 0 : + sum(augmentedCoins.map(({ usdPrice, poolBalance, decimals }) => ( + poolBalance / (10 ** decimals) * usdPrice + ))) + ); - const usdTotalExcludingBasePool = sum(augmentedCoins.filter(({ isBasePoolLpToken }) => !isBasePoolLpToken).map(({ usdPrice, poolBalance, decimals }) => ( - poolBalance / (10 ** decimals) * usdPrice - ))); + const usdTotalExcludingBasePool = ( + (BROKEN_POOLS_ADDRESSES || []).includes(lc(poolInfo.address)) ? 0 : + sum(augmentedCoins.filter(({ isBasePoolLpToken }) => !isBasePoolLpToken).map(({ usdPrice, poolBalance, decimals }) => ( + poolBalance / (10 ** decimals) * usdPrice + ))) + ); const gaugeData = typeof ethereumOnlyData !== 'undefined' ? ethereumOnlyData.gaugesDataArray.find(({ swap }) => ( @@ -983,9 +1014,6 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) const totalSupply = poolInfo.totalSupply / 1e18; const lpTokenPrice = totalSupply > 0 ? (usdTotal / totalSupply) : undefined; - const { - [allCoins.crv.coingeckoId]: crvPrice, - } = await getAssetsPrices([allCoins.crv.coingeckoId]); const relativeWeightRate = ( blockchainId === 'ethereum' ? @@ -994,7 +1022,7 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) ); const gaugeCrvBaseApy = ( - (gaugeData && typeof lpTokenPrice !== 'undefined') ? ( + (gaugeData && !gaugeData.is_killed && typeof lpTokenPrice !== 'undefined') ? ( (gaugeData.gauge_controller.inflation_rate / 1e18) * relativeWeightRate * 31536000 / (gaugeData.gauge_data.working_supply / 1e18) * 0.4 * crvPrice / lpTokenPrice * 100 ) : undefined ); @@ -1010,7 +1038,7 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) ) : undefined ); - // How much does that pool owns, in its balances, of the underlying pool + // How much does that pool own, in its balances, of the underlying pool const underlyingPoolLpOwnershipRate = ( isMetaPool ? ( (metaPoolBasePoolLpToken.poolBalance / 1e18) / (underlyingPool.totalSupply / 1e18) @@ -1108,18 +1136,30 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) }) ); + /** + * Detect pools with oracles: oracle_method must be present (if not present, + * call returns default value of zero) and non-zero + */ + const usesRateOracle = Number(poolInfo.oracleMethod) !== 0; + const ethereumLSDAPYs = (blockchainId === 'ethereum') ? (await getETHLSDAPYs()) : {}; + const augmentedPool = { ...poolInfo, poolUrls: detailedPoolUrls, implementation, zapAddress: ( - POOLS_ZAPS?.[blockchainId]?.pools?.[lc(poolInfo.addresss)] || + POOLS_ZAPS?.[blockchainId]?.pools?.[lc(poolInfo.address)] || POOLS_ZAPS?.[blockchainId]?.implementations?.[implementation] || undefined ), lpTokenAddress: (poolInfo.lpTokenAddress || poolInfo.address), assetTypeName, - coins: augmentedCoins.map(overrideSymbol), + coins: augmentedCoins.map((coin) => ({ + ...overrideSymbol(coin, blockchainId), + ...(typeof ethereumLSDAPYs[lc(coin.address)] !== 'undefined' ? { + ethLsdApy: ethereumLSDAPYs[lc(coin.address)], + } : {}), + })), usdTotal, isMetaPool, underlyingDecimals: (isMetaPool ? poolInfo.underlyingDecimals : undefined), @@ -1127,15 +1167,18 @@ const getPools = async ({ blockchainId, registryId, preventQueryingFactoData }) usdTotalExcludingBasePool, gaugeAddress, gaugeRewards: ( - gaugeAddress ? + (gaugeAddress && !gaugeData.is_killed) ? (gaugeRewards || []) : undefined ), gaugeCrvApy: ( - gaugeAddress ? + (gaugeAddress && !gaugeData.is_killed) ? [gaugeCrvBaseApy, (gaugeCrvBaseApy * 2.5)] : undefined ), + oracleMethod: undefined, // Don't return this value, unneeded for api consumers + usesRateOracle, + isBroken: (BROKEN_POOLS_ADDRESSES || []).includes(lc(poolInfo.address)), }; // When retrieving pool data for a registry that isn't 'main', mainRegistryLpTokensPricesMap diff --git a/pages/api/getSubgraphData/_fallback-data/getSubgraphData-arbitrum.json b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-arbitrum.json new file mode 100644 index 00000000..872a9975 --- /dev/null +++ b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-arbitrum.json @@ -0,0 +1,1168 @@ +{ + "poolList": [ + { + "type": "main", + "address": "0x7f90122BF0700F9E7e1F688fe926940E8839F353", + "rawVolume": 322562.10899900005, + "volumeUSD": 322652.96846818144, + "latestDailyApy": 0.307605893781715, + "latestWeeklyApy": 0.46146415783647754, + "virtualPrice": 1013660379797876600 + }, + { + "type": "main", + "address": "0x3E01dD8a5E1fb3481F0F589056b428Fc308AF0Fb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0569716842905299, + "virtualPrice": 1001660211693318400 + }, + { + "type": "crypto", + "address": "0x960ea3e3C7FB317332d990873d354E18d7645590", + "rawVolume": 193400.0991347071, + "volumeUSD": 485485.55366126524, + "latestDailyApy": 0.3568039138747814, + "latestWeeklyApy": 0.36231861283042566, + "virtualPrice": 1036570397125246700 + }, + { + "type": "stable-factory", + "address": "0x30dF229cefa463e991e29D42DB0bae2e122B2AC7", + "rawVolume": 34432.52609831567, + "volumeUSD": 34359.66221518432, + "latestDailyApy": 0.6478010201746986, + "latestWeeklyApy": 0.45105768531468193, + "virtualPrice": 1015979928507959700 + }, + { + "type": "stable-factory", + "address": "0xC9B8a3FDECB9D5b218d02555a8Baf332E5B740d5", + "rawVolume": 87833.5093308578, + "volumeUSD": 87795.74301301899, + "latestDailyApy": 1.2011185030723182, + "latestWeeklyApy": 0.7492708176542795, + "virtualPrice": 1009148060689218200 + }, + { + "type": "main", + "address": "0x6eB2dc694eB516B16Dc9FBc678C60052BbdD7d80", + "rawVolume": 0.12182967248052358, + "volumeUSD": 225.56299995879803, + "latestDailyApy": 1.9221926402239964, + "latestWeeklyApy": 1.7110422362442756, + "virtualPrice": 1024700047967629800 + }, + { + "type": "stable-factory", + "address": "0xE9dcF2d2A17eAD11fab8b198578B20535370Be6a", + "rawVolume": 1.1348254363977108, + "volumeUSD": 1.1340148409041138, + "latestDailyApy": 0.3342484968001713, + "latestWeeklyApy": 0.3103307067338523, + "virtualPrice": 1233327364443656200 + }, + { + "type": "stable-factory", + "address": "0xF92C2A3C91bf869F77f9cB221C5AB1B1ada8a586", + "rawVolume": 15.755686988642772, + "volumeUSD": 15.758231003915347, + "latestDailyApy": 0.37031517840113715, + "latestWeeklyApy": 0.3393753653144538, + "virtualPrice": 27800772975961180000 + }, + { + "type": "stable-factory", + "address": "0x6041631c566Eb8dc6258A75Fa5370761d4873990", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAEA2E71b631fA93683BCF256A8689dFa0e094fcD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x850c7cC8757CE1fa8CeD709f297D842E12E61759", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x065f44Cd602Cc6680E82E516125839b9BbbbE57e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb0D2EB3C2cA3c6916FAb8DCbf9d9c165649231AE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001095896563339800 + }, + { + "type": "stable-factory", + "address": "0xF72beaCc6fD334E14a7DDAC25c3ce1Eb8a827E10", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf07d553B195080F84F582e88ecdD54bAa122b279", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1172174745609933, + "latestWeeklyApy": 0.17782885580692742, + "virtualPrice": 32809583220223685000 + }, + { + "type": "stable-factory", + "address": "0xC120Ef573752aAD82484eBc9A752daD6f3FEC54B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf31BFaA54b3b5E57e602686320Da7F1eE295A6eE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd0DD5D76cF0fC06DaBC48632735566DCa241a35e", + "rawVolume": 58.17327106290843, + "volumeUSD": 57.624860372461136, + "latestDailyApy": 0.12352970907147931, + "latestWeeklyApy": 0.3951916734186378, + "virtualPrice": 1015639774957184000 + }, + { + "type": "stable-factory", + "address": "0x2ce5Fd6f6F4a159987eac99FF5158B7B62189Acf", + "rawVolume": 10836.697930062674, + "volumeUSD": 10780.239620226159, + "latestDailyApy": 0.14777700741077648, + "latestWeeklyApy": 0.31565204935994906, + "virtualPrice": 1006643174785456400 + }, + { + "type": "stable-factory", + "address": "0xf3b9DDB3132543E06349AFF9A12f8503D4ca5b47", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0a824B5d4C96EA0EC46306Efbd34Bf88fE1277e0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 68020382983659430000 + }, + { + "type": "stable-factory", + "address": "0x667A881B28dC2d464d6Ede7f8b13F6a7ffe71659", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x76b44e0Cf9bD024dbEd09E1785DF295D59770138", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.23330498227414065, + "latestWeeklyApy": 0.28236730269943777, + "virtualPrice": 1014190436396551200 + }, + { + "type": "stable-factory", + "address": "0xc1796710a28f1cBbFE1e8a79A65eE96446607a47", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x59bF0545FCa0E5Ad48E13DA269faCD2E8C886Ba4", + "rawVolume": 38603.419074765174, + "volumeUSD": 38586.93017188215, + "latestDailyApy": 0.01860521010190741, + "latestWeeklyApy": 0.09427241005861564, + "virtualPrice": 1005250382717753600 + }, + { + "type": "stable-factory", + "address": "0x298D15d9208ab16a59f45FC37133252F1Cf68991", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xaa9dFbf31d2f807cA4d9f7BE281D75cA7BDCE64D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5f16C819c22009746b79d3170D8c214C7C950B4E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x27c60A5a3F6D69b88B46Ab55924ECA5778f8BC88", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB1f0Ca2e34912a093e89c5615C4f61b196e4D8D0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8c0E0cC1D66a1b1fF10EBB1D99Bb9779311d6dE6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1C5ffa4FB4907B681c61B8c82b28C4672ceb1974", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xbcda256079372C6FE5d1b813AB9DeF5C9D78Ab8F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE013593CEA239E445d2271106836b00C9E7356ae", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 4.118880938128844, + "latestWeeklyApy": 3.664409514234923, + "virtualPrice": 1031879894174952600 + }, + { + "type": "stable-factory", + "address": "0x37C9Be6C81990398e9B87494484Afc6a4608C25d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 3.891128217485562, + "latestWeeklyApy": 3.517736254857562, + "virtualPrice": 1028679946939629600 + }, + { + "type": "stable-factory", + "address": "0x3a43A5851A3e3E0e25A3c1089670269786be1577", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xa852739519fd46387e2163fc0FB0EfaA94Aa83c4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x943F3B750447AbDd61cdF68AE6c3912cd3bedA04", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x445109BcF194c538B73EA60C71bb773849bc9b79", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x428663216f2Ec5d4180e89B187664d2333EfE229", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x93004D8477f117eA359b71ec02f2706c8175c55c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8a5b8058C1523111768E5F2DEF3b11644F0e165b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfC78eAFf2E8290D3d608B689e93ec6954E21B6C2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000455637256006100 + }, + { + "type": "stable-factory", + "address": "0xdC6eBB38Be3FDBA42Ff65da6Aafb9eDE6443DFDB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb3F21Fc59Bc06209D5fb82c474F21582AEf09a20", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1cDAEf9e69aDa311bDe095fD3be6752b6a626bC8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe5042bbac35056f3f95bF0a79D9eB64dc0daFDb8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe413f1611781f66B25aF566276Ee562D050E5Fc4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4b043CDd981dBD9a0c229d23b80Cc1EB3c50b05B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3d49594Ed8c108F817512829C102E4059c76a220", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc5536d59D026BE19b4267810f43aC083cD607b64", + "rawVolume": 0.11229474707226589, + "volumeUSD": 0.11212836700040028, + "latestDailyApy": 0.03831040913151451, + "latestWeeklyApy": 0.0574364321372256, + "virtualPrice": 1539917062123899400 + }, + { + "type": "stable-factory", + "address": "0x5Aa2a79293424bf39171d704A364FDE3B641DB25", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5CCaeDc2A2C19aB773D75Dd55071680636C242FA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x00E3852AEdBFA153629BeFc870fa45c4d859652c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x07094aB16Ad163F21C76adcEDC36aD8E494fAb74", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x661cf823583e7BdE97954e98fAc2Ef777493a8dc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7F2d1C7b8911901de7c9785d6E7A7A10d8dEff66", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xdb721E854aC98d1782dd80fD60d9c73ef7C4707F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x92926170cc85A4BA573bd86d61348bE650E3Eae5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD79138c49c49200a1Afc935171D1bDAd084FDc95", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8177ae5A1e32Ec91E62a3d118fC0B36C82CA84Ce", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB89B080Bb9fb489516FC7Fc98bC4eb3f5A92c54E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2CB445366FbE025569D6883Aa931E79deF202802", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.09894669500747355, + "latestWeeklyApy": 0.14836965079663145, + "virtualPrice": 1002920438944721300 + }, + { + "type": "stable-factory", + "address": "0xbb8a6436e0E9A22bb7F1dC76aFB4421D8195620E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.05992716861777936, + "latestWeeklyApy": 0.08985313810230267, + "virtualPrice": 1002769060492933900 + }, + { + "type": "stable-factory", + "address": "0x48E8DCb9fbE51899Df8960415fB11dfb8745C2DB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.09552367043539345, + "latestWeeklyApy": 0.14323585209770062, + "virtualPrice": 1003989285556210800 + }, + { + "type": "stable-factory", + "address": "0xd39016475200ab8957e9C772C949Ef54bDA69111", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x305fC0A3EEd959a3bBDC54300a1A140925B4b058", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000069418942953900 + }, + { + "type": "stable-factory", + "address": "0xcb11EE4B70d73e38a383b8691cAFb221059669cC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x15a1C069Fcf6F79a3D5Bb5d4A8ba004FbF4fABAc", + "rawVolume": 1.000142, + "volumeUSD": 0.9998484453370461, + "latestDailyApy": 0, + "latestWeeklyApy": 0.03246063361530549, + "virtualPrice": 6118495861776045000 + }, + { + "type": "stable-factory", + "address": "0x5c999Df25df87A8DfbDD4730c3467de69482bfa8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6BF6fc7EaF84174bb7e1610Efd865f0eBD2AA96D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.15647144449260075, + "latestWeeklyApy": 0.23465253610330805, + "virtualPrice": 1238890754227798300 + }, + { + "type": "stable-factory", + "address": "0x0F24131384044A9D1670fa135CefD3f25870446e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x268C6c52B84A484Fe4A8f36311BF418d22036A86", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1da20Ac34187b2d9c74F729B85acB225D3341b25", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7C01B05DDE0FbB38e2902a9fC3447BEb877d9455", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb6C7Af9a5703B8E03358dE0A6c07e3208B0CD6A4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x63171ae9A9886e49547dd40aDB70F04EABA39D6b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.3019325100689363, + "latestWeeklyApy": 0.18867726152616004, + "virtualPrice": 1011826031004682000 + }, + { + "type": "stable-factory", + "address": "0x9C907Ee3bC1da92095a81B806Ae8cBA6c597703c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.14039284309370625, + "latestWeeklyApy": 0.3150008859515774, + "virtualPrice": 1006933699006571100 + }, + { + "type": "stable-factory", + "address": "0xd92Be5A1c565Db5256cDD537B875ED46111Bd8b0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.10388186357701557, + "latestWeeklyApy": 0.16469654505735232, + "virtualPrice": 1006066170535338200 + }, + { + "type": "stable-factory", + "address": "0xaB174fFA530C888649C44C4d21C849BBAaBc723F", + "rawVolume": 36.04258077348563, + "volumeUSD": 36.01597392840498, + "latestDailyApy": 0.22065938755004844, + "latestWeeklyApy": 0.14021064644689218, + "virtualPrice": 1001435929533037600 + }, + { + "type": "stable-factory", + "address": "0x75183Ba0a9D7f0b006FBD2F130ED7DdBcb3c5907", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6856860ce8913e98A2baC1A922F309D9a16651fA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x90D5233b53436767fecACD1a783D3dA8Cc7395ED", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x39BA6943D7C0F415bce7A8c42A8C601eaD6Ee426", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0149123760957395f283AF81fE8c904348aA33FC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1003573465594363800 + }, + { + "type": "stable-factory", + "address": "0x17459b66F9f7b34703eDfeaB4902522c77c23103", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xd7bB79aeE866672419999a0496D99c54741D67B5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.11409804522817257, + "latestWeeklyApy": 0.17109039777678525, + "virtualPrice": 1001444245839756800 + }, + { + "type": "stable-factory", + "address": "0x741aEa6c7707b39Bd950da945f84D6b8bA455D48", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x357547528d53C04420bc43Bc4f97252A4B860D9A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5483e0F934f5d3964A2C4d0eC423353cF4a57ba2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1538030620306996, + "latestWeeklyApy": 0.23064945713235918, + "virtualPrice": 1000707990187521900 + }, + { + "type": "stable-factory", + "address": "0x0Bd1e9CC4837f6F97323f21b9db039ccb6951668", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x58471208f900da54156e78F23c81fb943Da4a42e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7A56266db1CF99F26a3E737ba36C4004a66bD5b3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.5838172407938602, + "latestWeeklyApy": 0.3646269217131737, + "virtualPrice": 1000964491502946600 + }, + { + "type": "stable-factory", + "address": "0x59a3eF790bE58413471267b8D02993bc0ea2F669", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB54914d2246cCfCE19c5114731EC03Da94061daF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC00938fb7496536DaF6A0960A1568c4C630d3575", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4431216E70D24a593481FCec3702c9c1eA2921A8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF0f89e16c2a86fB81675A0A39701A8B688025146", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.15373956642927844, + "latestWeeklyApy": 0.2305542699524432, + "virtualPrice": 1000431382346684000 + }, + { + "type": "stable-factory", + "address": "0xae0babD1483ed944BeEd2e112021Ed01301A83aC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.15368518695544342, + "latestWeeklyApy": 0.23661044212213156, + "virtualPrice": 1000525848800051600 + }, + { + "type": "stable-factory", + "address": "0x8Cb640A9Ce064Efae27BA7374c3765CB8f53503f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE847E4586afB047d651d11099758bA8E3d79b2ba", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8B82FFd12ccEBe325D8986444e9C46dE6356f963", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x755D6688AD74661Add2FB29212ef9153D40fcA46", + "rawVolume": 0.15182790502822496, + "volumeUSD": 4448.055196476845, + "latestDailyApy": 0.5176088594960326, + "latestWeeklyApy": 0.2053837002765624, + "virtualPrice": 1000818416902153100 + }, + { + "type": "stable-factory", + "address": "0x0974D9d3bc463Fa17497aAFc3a87535553298FbE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5ff0D82C7Abf63C4f125004D8419f3D1e0cffFa7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x533AB814e08087eB16f77eE9E7588c2Ec3d0e916", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xddB472a84347F56aDf00a9271cBB6D1dD6c75138", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8ccAF5828bc8D5AD8925Be26Da384e226382D115", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA8347B61Fb6c75e726DeFf9B9D8752257669f29D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xa1B19f233Df60fe36d41C8afdf5be495511eac45", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x08135fcac68e8ABD7421d1FB3FDF1bcd176e1Ce0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x469303308b809b031b761e85DF9a39A08d01B979", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd7AdfCa7280234aeC2fFceD9c9d4F8FdF301E32E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5C10886c032ED7b39598e6Ab3f3A64E296B735B4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xedCe214e7a52c77914342B072230ac971149Eb00", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x660772200743Ec64B0cFe9D584c5dAB96a56AB66", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002537504861795100 + }, + { + "type": "stable-factory", + "address": "0xfcc0F0f7584De34D8bF04eC930e6AF1caa06B58B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9B4d147C24Fd59BE935a78DaE5189A04DEE03726", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9b29859932e02F6Ce6BF36AAA2a2AF8498103A3F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9A67b37895fa7CAbC0cC2A03AAebd117023a58C5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2C41b772253C8E0d73F077cdc0cE93b17674C8B5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb34a7d1444a707349Bc7b981B7F2E1f20F81F013", + "rawVolume": 1821.786759455753, + "volumeUSD": 1821.0084959019573, + "latestDailyApy": 3.1641777935935034, + "latestWeeklyApy": 1.7478417033171878, + "virtualPrice": 1001699451397390700 + }, + { + "type": "stable-factory", + "address": "0x6dbdb4981ed1A7c9B1374273DC363900d81f09C9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x34e3f77067C2B69fc1001b501B614ef4829b075B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD7675eFb027CE7EA3dea03Ba976B047a8c3227a2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1bEa5606fb0b7A820916f56b0db7Fb1F282f0346", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x95833db96D72585f1b4dB41246B3Fd1fbb41911A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000501300464280700 + }, + { + "type": "crypto", + "address": "0xA827a652Ead76c6B0b3D19dba05452E06e25c27e", + "rawVolume": 4.413369688965756, + "volumeUSD": 4.601034088965756, + "latestDailyApy": 0.06600981433804165, + "latestWeeklyApy": 3.1455509952036387, + "virtualPrice": 1009950002521501600 + }, + { + "type": "crypto-factory", + "address": "0x7706128aFAC8875981b2412faC6C4f3053EA705f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + } + ], + "totalVolume": 986271.9699331429, + "cryptoVolume": 485490.1546953542, + "cryptoShare": 49.22477465604791, + "subgraphHasErrors": false +} diff --git a/pages/api/getSubgraphData/_fallback-data/getSubgraphData-aurora.json b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-aurora.json new file mode 100644 index 00000000..f88a77d2 --- /dev/null +++ b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-aurora.json @@ -0,0 +1,17 @@ +{ + "poolList": [ + { + "type": "main", + "address": "0xbF7E49483881C76487b0989CD7d9A8239B20CA41", + "rawVolume": 225.9144214413364, + "volumeUSD": 225.86965471401564, + "latestDailyApy": 0.11574770053734973, + "latestWeeklyApy": 0.34071576371919043, + "virtualPrice": 1028646503619680600 + } + ], + "totalVolume": 225.86965471401564, + "cryptoVolume": 0, + "cryptoShare": 0, + "subgraphHasErrors": false +} diff --git a/pages/api/getSubgraphData/_fallback-data/getSubgraphData-avalanche.json b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-avalanche.json new file mode 100644 index 00000000..9a292034 --- /dev/null +++ b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-avalanche.json @@ -0,0 +1,1016 @@ +{ + "poolList": [ + { + "type": "main", + "address": "0x7f90122BF0700F9E7e1F688fe926940E8839F353", + "rawVolume": 25348.416524498243, + "volumeUSD": 25348.416524498243, + "latestDailyApy": 2.6814408198741146, + "latestWeeklyApy": 2.596229953807816, + "virtualPrice": 1048316509137357700 + }, + { + "type": "main", + "address": "0x16a7DA911A4DD1d83F3fF066fE28F3C792C50d90", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.005383178357565299, + "latestWeeklyApy": 0.15133547178605156, + "virtualPrice": 1008272918346204000 + }, + { + "type": "stable-factory", + "address": "0xAEA2E71b631fA93683BCF256A8689dFa0e094fcD", + "rawVolume": 9645.576222493239, + "volumeUSD": 9644.645808097992, + "latestDailyApy": 0.45013705253929004, + "latestWeeklyApy": 0.7786982340092452, + "virtualPrice": 1109571921356467500 + }, + { + "type": "stable-factory", + "address": "0x0149123760957395f283AF81fE8c904348aA33FC", + "rawVolume": 8898.798234807715, + "volumeUSD": 8891.428694248803, + "latestDailyApy": 7.837421417416945, + "latestWeeklyApy": 21.038474245255735, + "virtualPrice": 20466317768997327000 + }, + { + "type": "main", + "address": "0xD2AcAe14ae2ee0f6557aC6C6D0e407a92C36214b", + "rawVolume": 38.548812851911265, + "volumeUSD": 38.548812851911265, + "latestDailyApy": 8.637869825467725, + "latestWeeklyApy": 7.468190978434164, + "virtualPrice": 1062812988695230600 + }, + { + "type": "stable-factory", + "address": "0x30dF229cefa463e991e29D42DB0bae2e122B2AC7", + "rawVolume": 387.791440224285, + "volumeUSD": 378.01058443354736, + "latestDailyApy": 3.6039795142096764, + "latestWeeklyApy": 1.4768312475462952, + "virtualPrice": 1178934163669611300 + }, + { + "type": "stable-factory", + "address": "0xE9dcF2d2A17eAD11fab8b198578B20535370Be6a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF92C2A3C91bf869F77f9cB221C5AB1B1ada8a586", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6041631c566Eb8dc6258A75Fa5370761d4873990", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x850c7cC8757CE1fa8CeD709f297D842E12E61759", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x065f44Cd602Cc6680E82E516125839b9BbbbE57e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb0D2EB3C2cA3c6916FAb8DCbf9d9c165649231AE", + "rawVolume": 1347.2860470256958, + "volumeUSD": 1309.050405269042, + "latestDailyApy": 0.4525681906155432, + "latestWeeklyApy": 0.707213668408424, + "virtualPrice": 1020895997515288600 + }, + { + "type": "stable-factory", + "address": "0xF72beaCc6fD334E14a7DDAC25c3ce1Eb8a827E10", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.7509827222000887, + "latestWeeklyApy": 0.7336983530518815, + "virtualPrice": 2756138697154092500 + }, + { + "type": "stable-factory", + "address": "0xf07d553B195080F84F582e88ecdD54bAa122b279", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC120Ef573752aAD82484eBc9A752daD6f3FEC54B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf31BFaA54b3b5E57e602686320Da7F1eE295A6eE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd0DD5D76cF0fC06DaBC48632735566DCa241a35e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0x2ce5Fd6f6F4a159987eac99FF5158B7B62189Acf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf3b9DDB3132543E06349AFF9A12f8503D4ca5b47", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0a824B5d4C96EA0EC46306Efbd34Bf88fE1277e0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x667A881B28dC2d464d6Ede7f8b13F6a7ffe71659", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x76b44e0Cf9bD024dbEd09E1785DF295D59770138", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc1796710a28f1cBbFE1e8a79A65eE96446607a47", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x59bF0545FCa0E5Ad48E13DA269faCD2E8C886Ba4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x298D15d9208ab16a59f45FC37133252F1Cf68991", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xaa9dFbf31d2f807cA4d9f7BE281D75cA7BDCE64D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001142614501224200 + }, + { + "type": "stable-factory", + "address": "0x5f16C819c22009746b79d3170D8c214C7C950B4E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x27c60A5a3F6D69b88B46Ab55924ECA5778f8BC88", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB1f0Ca2e34912a093e89c5615C4f61b196e4D8D0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8c0E0cC1D66a1b1fF10EBB1D99Bb9779311d6dE6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1C5ffa4FB4907B681c61B8c82b28C4672ceb1974", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000637366193200 + }, + { + "type": "stable-factory", + "address": "0xbcda256079372C6FE5d1b813AB9DeF5C9D78Ab8F", + "rawVolume": 99.58573961686426, + "volumeUSD": 96.96433965750657, + "latestDailyApy": 2.7495618738039074, + "latestWeeklyApy": 1.1325984853363558, + "virtualPrice": 1018996877629182500 + }, + { + "type": "stable-factory", + "address": "0xE013593CEA239E445d2271106836b00C9E7356ae", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x37C9Be6C81990398e9B87494484Afc6a4608C25d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.5351372659819118, + "latestWeeklyApy": 22.624935178948434, + "virtualPrice": 1445411710102967600 + }, + { + "type": "stable-factory", + "address": "0x3a43A5851A3e3E0e25A3c1089670269786be1577", + "rawVolume": 7518.903489500001, + "volumeUSD": 7515.753617841202, + "latestDailyApy": 0.7828722374696451, + "latestWeeklyApy": 0.9537315819188485, + "virtualPrice": 1077551884641262700 + }, + { + "type": "stable-factory", + "address": "0xa852739519fd46387e2163fc0FB0EfaA94Aa83c4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.5410464770035714, + "latestWeeklyApy": 1.4925184288076654, + "virtualPrice": 1021240239236994200 + }, + { + "type": "stable-factory", + "address": "0x943F3B750447AbDd61cdF68AE6c3912cd3bedA04", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 2.4541434885505975, + "latestWeeklyApy": 2.377339770679976, + "virtualPrice": 1037599917690015400 + }, + { + "type": "stable-factory", + "address": "0x445109BcF194c538B73EA60C71bb773849bc9b79", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1007327433606236800 + }, + { + "type": "stable-factory", + "address": "0x428663216f2Ec5d4180e89B187664d2333EfE229", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x93004D8477f117eA359b71ec02f2706c8175c55c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1020979332883706800 + }, + { + "type": "stable-factory", + "address": "0x8a5b8058C1523111768E5F2DEF3b11644F0e165b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.8039040035388689, + "latestWeeklyApy": 23.196631329529893, + "virtualPrice": 2059154195979689500 + }, + { + "type": "stable-factory", + "address": "0xfC78eAFf2E8290D3d608B689e93ec6954E21B6C2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xdC6eBB38Be3FDBA42Ff65da6Aafb9eDE6443DFDB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.8155689117398612, + "virtualPrice": 1011706131250956500 + }, + { + "type": "stable-factory", + "address": "0xb3F21Fc59Bc06209D5fb82c474F21582AEf09a20", + "rawVolume": 452.51748235404943, + "volumeUSD": 441.6720553584597, + "latestDailyApy": 1.539987933958531, + "latestWeeklyApy": 1.2817293062581614, + "virtualPrice": 1021485280810474500 + }, + { + "type": "stable-factory", + "address": "0x1cDAEf9e69aDa311bDe095fD3be6752b6a626bC8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC9B8a3FDECB9D5b218d02555a8Baf332E5B740d5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.6600165278993098, + "latestWeeklyApy": 0.6394084267494993, + "virtualPrice": 1009003510277694800 + }, + { + "type": "stable-factory", + "address": "0xe5042bbac35056f3f95bF0a79D9eB64dc0daFDb8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe413f1611781f66B25aF566276Ee562D050E5Fc4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4b043CDd981dBD9a0c229d23b80Cc1EB3c50b05B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 7.456888275473927, + "latestWeeklyApy": 6.36317972453333, + "virtualPrice": 1109914465285777700 + }, + { + "type": "stable-factory", + "address": "0x3d49594Ed8c108F817512829C102E4059c76a220", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.0336107159160335, + "latestWeeklyApy": 1.0012089836215043, + "virtualPrice": 1013633050115789300 + }, + { + "type": "stable-factory", + "address": "0xc5536d59D026BE19b4267810f43aC083cD607b64", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": -100, + "latestWeeklyApy": 1000000, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5Aa2a79293424bf39171d704A364FDE3B641DB25", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5CCaeDc2A2C19aB773D75Dd55071680636C242FA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x00E3852AEdBFA153629BeFc870fa45c4d859652c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x07094aB16Ad163F21C76adcEDC36aD8E494fAb74", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x661cf823583e7BdE97954e98fAc2Ef777493a8dc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7F2d1C7b8911901de7c9785d6E7A7A10d8dEff66", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.1618602950325796, + "latestWeeklyApy": 1.1253851410719884, + "virtualPrice": 1014704286298875500 + }, + { + "type": "stable-factory", + "address": "0xdb721E854aC98d1782dd80fD60d9c73ef7C4707F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x92926170cc85A4BA573bd86d61348bE650E3Eae5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD79138c49c49200a1Afc935171D1bDAd084FDc95", + "rawVolume": 190.84608199999997, + "volumeUSD": 13534.855218451286, + "latestDailyApy": 0.018207871011899357, + "latestWeeklyApy": 0.013686089725672979, + "virtualPrice": 1018472705025264500 + }, + { + "type": "stable-factory", + "address": "0x8177ae5A1e32Ec91E62a3d118fC0B36C82CA84Ce", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB89B080Bb9fb489516FC7Fc98bC4eb3f5A92c54E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2CB445366FbE025569D6883Aa931E79deF202802", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xbb8a6436e0E9A22bb7F1dC76aFB4421D8195620E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 6813082515988470000 + }, + { + "type": "stable-factory", + "address": "0x48E8DCb9fbE51899Df8960415fB11dfb8745C2DB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd39016475200ab8957e9C772C949Ef54bDA69111", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.4946723481855884, + "latestWeeklyApy": 1.3947522334703422, + "virtualPrice": 1021713406157587200 + }, + { + "type": "stable-factory", + "address": "0x305fC0A3EEd959a3bBDC54300a1A140925B4b058", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xcb11EE4B70d73e38a383b8691cAFb221059669cC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 2237268404886404900 + }, + { + "type": "stable-factory", + "address": "0x15a1C069Fcf6F79a3D5Bb5d4A8ba004FbF4fABAc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5c999Df25df87A8DfbDD4730c3467de69482bfa8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6BF6fc7EaF84174bb7e1610Efd865f0eBD2AA96D", + "rawVolume": 8397.288176944085, + "volumeUSD": 8298.510601086462, + "latestDailyApy": 0.6867211915654092, + "latestWeeklyApy": 0.7263536503137713, + "virtualPrice": 1013641354559141000 + }, + { + "type": "stable-factory", + "address": "0x0F24131384044A9D1670fa135CefD3f25870446e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x268C6c52B84A484Fe4A8f36311BF418d22036A86", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1da20Ac34187b2d9c74F729B85acB225D3341b25", + "rawVolume": 323917.8310520955, + "volumeUSD": 323703.3642265517, + "latestDailyApy": 0.13982566699171084, + "latestWeeklyApy": 0.18120225808342383, + "virtualPrice": 1008967319018157600 + }, + { + "type": "stable-factory", + "address": "0x7C01B05DDE0FbB38e2902a9fC3447BEb877d9455", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb6C7Af9a5703B8E03358dE0A6c07e3208B0CD6A4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x63171ae9A9886e49547dd40aDB70F04EABA39D6b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9C907Ee3bC1da92095a81B806Ae8cBA6c597703c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd92Be5A1c565Db5256cDD537B875ED46111Bd8b0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xaB174fFA530C888649C44C4d21C849BBAaBc723F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x75183Ba0a9D7f0b006FBD2F130ED7DdBcb3c5907", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6856860ce8913e98A2baC1A922F309D9a16651fA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.8968261039740142, + "latestWeeklyApy": 1.8369245345393193, + "virtualPrice": 1020145846357386000 + }, + { + "type": "stable-factory", + "address": "0x90D5233b53436767fecACD1a783D3dA8Cc7395ED", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.06700916886512864, + "latestWeeklyApy": 0.06494701380048706, + "virtualPrice": 1008515101667752000 + }, + { + "type": "stable-factory", + "address": "0x39BA6943D7C0F415bce7A8c42A8C601eaD6Ee426", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.9390597605057236, + "latestWeeklyApy": 1.877827799347731, + "virtualPrice": 1019704120311637400 + }, + { + "type": "stable-factory", + "address": "0x17459b66F9f7b34703eDfeaB4902522c77c23103", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd7bB79aeE866672419999a0496D99c54741D67B5", + "rawVolume": 2.1342495, + "volumeUSD": 2.1173933262574685, + "latestDailyApy": 0.4237625364194919, + "latestWeeklyApy": 0.714640911960962, + "virtualPrice": 1013043025096903800 + }, + { + "type": "stable-factory", + "address": "0x741aEa6c7707b39Bd950da945f84D6b8bA455D48", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x357547528d53C04420bc43Bc4f97252A4B860D9A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5483e0F934f5d3964A2C4d0eC423353cF4a57ba2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0Bd1e9CC4837f6F97323f21b9db039ccb6951668", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1005656395069212800 + }, + { + "type": "stable-factory", + "address": "0x58471208f900da54156e78F23c81fb943Da4a42e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7A56266db1CF99F26a3E737ba36C4004a66bD5b3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x59a3eF790bE58413471267b8D02993bc0ea2F669", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB54914d2246cCfCE19c5114731EC03Da94061daF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC00938fb7496536DaF6A0960A1568c4C630d3575", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4431216E70D24a593481FCec3702c9c1eA2921A8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF0f89e16c2a86fB81675A0A39701A8B688025146", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xae0babD1483ed944BeEd2e112021Ed01301A83aC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8Cb640A9Ce064Efae27BA7374c3765CB8f53503f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE847E4586afB047d651d11099758bA8E3d79b2ba", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8B82FFd12ccEBe325D8986444e9C46dE6356f963", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000242469699744500 + }, + { + "type": "stable-factory", + "address": "0x755D6688AD74661Add2FB29212ef9153D40fcA46", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0974D9d3bc463Fa17497aAFc3a87535553298FbE", + "rawVolume": 569.335625, + "volumeUSD": 569.1073296233845, + "latestDailyApy": 0.13309598645261378, + "latestWeeklyApy": 0.19546505973715433, + "virtualPrice": 1001612821590416100 + }, + { + "type": "stable-factory", + "address": "0x5ff0D82C7Abf63C4f125004D8419f3D1e0cffFa7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x533AB814e08087eB16f77eE9E7588c2Ec3d0e916", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xddB472a84347F56aDf00a9271cBB6D1dD6c75138", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8ccAF5828bc8D5AD8925Be26Da384e226382D115", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA8347B61Fb6c75e726DeFf9B9D8752257669f29D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xa1B19f233Df60fe36d41C8afdf5be495511eac45", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x08135fcac68e8ABD7421d1FB3FDF1bcd176e1Ce0", + "rawVolume": 39.389758681951214, + "volumeUSD": 41.10104584263409, + "latestDailyApy": 6.495893521004525, + "latestWeeklyApy": 1000000, + "virtualPrice": 1835915881918896400 + }, + { + "type": "crypto", + "address": "0xB755B949C126C04e0348DD881a5cF55d424742B2", + "rawVolume": 10953.080651230814, + "volumeUSD": 19265.36310003038, + "latestDailyApy": 0.9513877474078614, + "latestWeeklyApy": 1.0312275888413769, + "virtualPrice": 1031426957536458500 + }, + { + "type": "crypto", + "address": "0x204f0620E7E7f07B780535711884835977679bba", + "rawVolume": 757.7779604193726, + "volumeUSD": 417.4337478836129, + "latestDailyApy": 0.05741061349302523, + "latestWeeklyApy": 0.08895551609633401, + "virtualPrice": 1001272868805297700 + } + ], + "totalVolume": 419496.34350505244, + "cryptoVolume": 19682.796847913993, + "cryptoShare": 4.692006772563664, + "subgraphHasErrors": false +} diff --git a/pages/api/getSubgraphData/_fallback-data/getSubgraphData-celo.json b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-celo.json new file mode 100644 index 00000000..ef3819bc --- /dev/null +++ b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-celo.json @@ -0,0 +1,350 @@ +{ + "poolList": [ + { + "type": "main", + "address": "0x998395fEd908d33CF27115A1D9Ab6555def6cd45", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x32fD7e563c6521Ab4D59CE3277bcfBe3317CFd63", + "rawVolume": 151.3205281454791, + "volumeUSD": 151.25961709689304, + "latestDailyApy": 0.03610999456928887, + "latestWeeklyApy": 0.21161896224470844, + "virtualPrice": 1002683281550895100 + }, + { + "type": "main", + "address": "0xAF7Ee5Ba02dC9879D24cb16597cd854e13f3aDa8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.010493880779427478, + "virtualPrice": 17378062204813908000 + }, + { + "type": "main", + "address": "0x9Be5da31c7A42d7e045189ac1822D1fA5838e635", + "rawVolume": 14111.256695462997, + "volumeUSD": 14101.865920066075, + "latestDailyApy": 5.347140726448996, + "latestWeeklyApy": 3.4345477363228794, + "virtualPrice": 1004642171723468400 + }, + { + "type": "main", + "address": "0x3aE6Db8cE92335E9000EF5813c55B7fC5B578821", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.03423596999312384, + "virtualPrice": 1000687485737664500 + }, + { + "type": "main", + "address": "0x97aCA58d273725B261EaBD4F72343fFa96f83b76", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0xf2E7eCaD15C1aEDD0B345583913348C2847e4509", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x51b4579200A338B093A838875b76cDb8A527e61f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x71487E7824c1f9c1d3430729B954DeE3bD87654d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x5f193a477230D377EFD1cf4acECA5582ce82aA2a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0xA956Ee8B3cE716BdCdcA1Ef19B40301bf1B98EF2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x5f14d2A66d42EdC839966148801c256a43CFA16e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x48567Eb65AcC3bc8549B35d18247F4032480bB72", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x61EB31E505fdB48EBBB0A310be5f0b32aCeDE2cA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x0BCc11dFD335e4602994ff5A4B92766686Bebfff", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x9BE1ACc9b603aAd48ABf2490bD650b61CF52a99c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0xF0C992185505CC0ba720B958b8a5B7E4e8e0E7F5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0xd43D4aE8E09960F52dBfA217d7d2AEFb20d005f9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x7C230eDEc6fB0A4dC412a831b859dDcC469abC89", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0xAe2243B353dBD4b68Af044cFDB02b8a9412D98f2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x6016a8F0B1265999902a731dC3d1Ad614D5C129c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0xaaFFD0Bba2A3dF31Af17e32Bc50cEEb18bB7b930", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0xb9285ae3c580258A145CBD5f63de7E7A3e9E7d5d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x709a67B0Ea6c491b8AEB35b20f92217113932263", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x287515E2EEF1A1Ec621aD5988387CEe33567Dc38", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x8739bdA99Fa342A90948534d70dB307FD9b0FBAe", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x370e7A2b8301C5604AEc86b78D06DD1104F8e918", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x0ed6746DaB14Ffb24A01C6DAe52E8F552226D911", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x60aCCf072735f6A150943D5Cf9925ac9CC5e968e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0xA85B3284Eb1437e205595388EFfa73d166e31515", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x405179921fb7350AC8853332dd3b77d617dBcFDf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x1db261CbCC9948492E836Ef69e9eD42a5e98c6fB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x90599e6176932349Aff8a38c2Ec7F989E8Cf31a1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0xD668697230dcfDdd50F3d7eD6f213A0D007a119C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0xD6fCA2050485AaE47364554cD4D82EA8030428D6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0xf4cab10dC19695AaCe14b7A16d7705b600ad5F73", + "rawVolume": 824.446098807467, + "volumeUSD": 824.115762725089, + "latestDailyApy": 0.00201350348516538, + "latestWeeklyApy": 0.009034760846859946, + "virtualPrice": 1000424940714768400 + }, + { + "type": "main", + "address": "0x619E2D2FcBBeFe346db03301B1aEaED4e6BE66CA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "main", + "address": "0x8eD88E3EB07a67459E7B99697d1f99094C9F7E6a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + } + ], + "totalVolume": 15077.241299888057, + "cryptoVolume": 0, + "cryptoShare": 0, + "subgraphHasErrors": false +} diff --git a/pages/api/getSubgraphData/_fallback-data/getSubgraphData-ethereum.json b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-ethereum.json new file mode 100644 index 00000000..8791bfc0 --- /dev/null +++ b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-ethereum.json @@ -0,0 +1,6326 @@ +{ + "poolList": [ + { + "type": "main", + "address": "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7", + "rawVolume": 24668134.919671796, + "volumeUSD": 24666619.100376092, + "latestDailyApy": 0.20231525214045032, + "latestWeeklyApy": 0.680416102084691, + "virtualPrice": 1026930084180834700 + }, + { + "type": "main", + "address": "0xDeBF20617708857ebe4F679508E7b7863a8A8EeE", + "rawVolume": 168019.0421545, + "volumeUSD": 168019.0421545, + "latestDailyApy": 5.268931621972905, + "latestWeeklyApy": 5.063525783329714, + "virtualPrice": 1120999937336037000 + }, + { + "type": "main", + "address": "0xA96A65c051bF88B4095Ee1f2451C2A9d43F53Ae2", + "rawVolume": 3.673136242304941, + "volumeUSD": 6805.787959369423, + "latestDailyApy": 3.9185082933041118, + "latestWeeklyApy": 3.8616126639966266, + "virtualPrice": 1076097474203707000 + }, + { + "type": "main", + "address": "0x79a8C46DeA5aDa233ABaFFD40F3A0A2B1e5A4F27", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.233314774242511, + "latestWeeklyApy": 1.0527103797105974, + "virtualPrice": 21862637544164910 + }, + { + "type": "main", + "address": "0xA2B47E3D5c44877cca798226B7B8118F9BFb7A56", + "rawVolume": 4.999981, + "volumeUSD": 4.999981, + "latestDailyApy": 4.004424721463806, + "latestWeeklyApy": 3.152807732671259, + "virtualPrice": 1125225413979983500 + }, + { + "type": "main", + "address": "0x0Ce6a5fF5217e38315f87032CF90686C96627CAA", + "rawVolume": 30154.800780475456, + "volumeUSD": 33282.155500183435, + "latestDailyApy": 0, + "latestWeeklyApy": 0.1352763616975894, + "virtualPrice": 1005978788150472700 + }, + { + "type": "main", + "address": "0x4CA9b3063Ec5866A4B82E437059D2C43d1be596F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.46683904279403166, + "latestWeeklyApy": 0.8718001089194516, + "virtualPrice": 1011742461643532000 + }, + { + "type": "main", + "address": "0x2dded6Da1BF5DBdF597C45fcFaa3194e53EcfeAF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 8.205168044083067, + "latestWeeklyApy": 8.550178149113542, + "virtualPrice": 1114627441429735200 + }, + { + "type": "main", + "address": "0xF178C0b5Bb7e7aBF4e12A4838C7b7c5bA2C623c0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0017244712850361665, + "virtualPrice": 1002864860612880600 + }, + { + "type": "main", + "address": "0x06364f10B501e868329afBc005b3492902d6C763", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.2267183820014118, + "virtualPrice": 75343500008872480 + }, + { + "type": "main", + "address": "0x93054188d876f558f4a66B2EF1d97d16eDf0895B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0004032357128647135, + "virtualPrice": 1024785019533249900 + }, + { + "type": "main", + "address": "0xEB16Ae0052ed37f479f7fe63849198Df1765a733", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 4.341636390175907, + "latestWeeklyApy": 3.6290889106094903, + "virtualPrice": 1098280779037439000 + }, + { + "type": "main", + "address": "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.00031602694334775805, + "latestWeeklyApy": 0.01955109282782974, + "virtualPrice": 1020052134250687600 + }, + { + "type": "main", + "address": "0xc5424B857f758E906013F3555Dad202e4bdB4567", + "rawVolume": 6.49049118475498, + "volumeUSD": 12007.954189786502, + "latestDailyApy": 0.0010007124774835674, + "latestWeeklyApy": 0.0366297654847525, + "virtualPrice": 1018474165111173500 + }, + { + "type": "main", + "address": "0xDC24316b9AE028F1497c275EB9192a3Ea0f67022", + "rawVolume": 1808.637770896089, + "volumeUSD": 3329264.737867681, + "latestDailyApy": 1.8928272520379874, + "latestWeeklyApy": 1.7472400857277748, + "virtualPrice": 1078169802770130300 + }, + { + "type": "main", + "address": "0xA5407eAE9Ba41422680e2e00537571bcC53efBfD", + "rawVolume": 123664.33091321123, + "volumeUSD": 123664.94100442102, + "latestDailyApy": 0.027590738335958598, + "latestWeeklyApy": 0.32411495878059693, + "virtualPrice": 1065006906488681500 + }, + { + "type": "main", + "address": "0x52EA46506B9CC5Ef470C5bf89f17Dc28bB35D85C", + "rawVolume": 10.001744, + "volumeUSD": 10.006796631194327, + "latestDailyApy": 1.3669833596920755, + "latestWeeklyApy": 1.082486325176224, + "virtualPrice": 2959269905044137500 + }, + { + "type": "main", + "address": "0x45F783CCE6B7FF23B2ab2D70e416cdb7D6055f51", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 12.756463284880315, + "latestWeeklyApy": 10.732225168887965, + "virtualPrice": 12012508412152894 + }, + { + "type": "main", + "address": "0x8038C01A0390a8c547446a0b2c18fc9aEFEcc10c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.06126739186513852, + "latestWeeklyApy": 0.20571931135953125, + "virtualPrice": 1025249781026184600 + }, + { + "type": "main", + "address": "0x4f062658EaAF2C1ccf8C8e36D6824CDf41167956", + "rawVolume": 227253.4637965, + "volumeUSD": 224511.35833062534, + "latestDailyApy": 0.8416985256731291, + "latestWeeklyApy": 1.721820118887396, + "virtualPrice": 1038527976602846000 + }, + { + "type": "main", + "address": "0x3eF6A01A0f81D6046290f3e2A8c5b843e738E604", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.0196335492792743, + "latestWeeklyApy": 0.06589859899270856, + "virtualPrice": 1055151602165952800 + }, + { + "type": "main", + "address": "0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.0850359924139843, + "latestWeeklyApy": 0.28560728978754835, + "virtualPrice": 1013322666985222800 + }, + { + "type": "main", + "address": "0x8474DdbE98F5aA3179B3B3F5942D724aFcdec9f6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.25359021658173386, + "latestWeeklyApy": 0.45214101729402767, + "virtualPrice": 1022328977536334100 + }, + { + "type": "main", + "address": "0xC18cC39da8b11dA8c3541C598eE022258F9744da", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.07560731730220649, + "latestWeeklyApy": 0.2539104943156012, + "virtualPrice": 1032220914876018400 + }, + { + "type": "main", + "address": "0x3E01dD8a5E1fb3481F0F589056b428Fc308AF0Fb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.13628011796875672, + "latestWeeklyApy": 0.4961271484306806, + "virtualPrice": 2084498651220508400 + }, + { + "type": "main", + "address": "0x0f9cb53Ebe405d49A0bbdBD291A65Ff571bC83e1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.01848444271232985, + "latestWeeklyApy": 0.06910067561904931, + "virtualPrice": 1066677000944940300 + }, + { + "type": "main", + "address": "0x42d7025938bEc20B69cBae5A77421082407f053A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.045238589441520816, + "latestWeeklyApy": 0.15803283038962057, + "virtualPrice": 1011004684115929200 + }, + { + "type": "main", + "address": "0x890f4e345B1dAED0367A877a1612f86A1f86985f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.03135054715122099, + "latestWeeklyApy": 0.10523846666696812, + "virtualPrice": 1068922215984654600 + }, + { + "type": "main", + "address": "0x071c661B4DeefB59E2a3DdB20Db036821eeE8F4b", + "rawVolume": 0.12077492, + "volumeUSD": 3508.8760442864937, + "latestDailyApy": 0.00008848550121509646, + "latestWeeklyApy": 0.0989281915111162, + "virtualPrice": 1023352080218952000 + }, + { + "type": "main", + "address": "0xd81dA8D904b52208541Bade1bD6595D8a251F8dd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.00007821645884309447, + "latestWeeklyApy": 0.004838539202345338, + "virtualPrice": 1009114884207587200 + }, + { + "type": "main", + "address": "0x7F55DDe206dbAD629C080068923b36fe9D6bDBeF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.010883437600139878, + "latestWeeklyApy": 0.030149344865382233, + "virtualPrice": 1012340437583512600 + }, + { + "type": "main", + "address": "0xC25099792E9349C7DD09759744ea681C7de2cb66", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.00028402166318830524, + "latestWeeklyApy": 0.017570909778630295, + "virtualPrice": 1014611682563592800 + }, + { + "type": "main", + "address": "0xEcd5e75AFb02eFa118AF914515D6521aaBd189F1", + "rawVolume": 169571.71161591422, + "volumeUSD": 167318.4219204663, + "latestDailyApy": 0.14903501713769973, + "latestWeeklyApy": 0.5589460275500446, + "virtualPrice": 1013336629055378400 + }, + { + "type": "stable-factory", + "address": "0xEd279fDD11cA84bEef15AF5D39BB4d4bEE23F0cA", + "rawVolume": 1101696.5625707835, + "volumeUSD": 1086063.1571624056, + "latestDailyApy": 0.41068803064456816, + "latestWeeklyApy": 0.8479334991770449, + "virtualPrice": 1025398920831755500 + }, + { + "type": "stable-factory", + "address": "0xd632f22692FaC7611d2AA1C0D552930D43CAEd3B", + "rawVolume": 87826.88833036467, + "volumeUSD": 86601.82238654965, + "latestDailyApy": 0.1524532108352572, + "latestWeeklyApy": 0.7339640552650684, + "virtualPrice": 1011191603525191800 + }, + { + "type": "main", + "address": "0x4807862AA8b2bF68830e4C8dc86D0e9A998e085a", + "rawVolume": 1.999792111248046, + "volumeUSD": 1.97389985337561, + "latestDailyApy": 0.1243109127626374, + "latestWeeklyApy": 1.269454057687125, + "virtualPrice": 1021405571543210000 + }, + { + "type": "main", + "address": "0xF9440930043eb3997fc70e1339dBb11F341de7A8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.36854451277999, + "latestWeeklyApy": 1.6938759637159073, + "virtualPrice": 1038121181390508800 + }, + { + "type": "stable-factory", + "address": "0x43b4FdFD4Ff969587185cDB6f0BD875c5Fc83f8c", + "rawVolume": 39067.30371279098, + "volumeUSD": 38512.47608748864, + "latestDailyApy": 0.06360009653152421, + "latestWeeklyApy": 0.22577299340187373, + "virtualPrice": 1012105863969111800 + }, + { + "type": "main", + "address": "0x80466c64868E1ab14a1Ddf27A676C3fcBE638Fe5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.26531328065271254, + "virtualPrice": 1024283572042846600 + }, + { + "type": "main", + "address": "0x618788357D0EBd8A37e763ADab3bc575D54c2C7d", + "rawVolume": 7991.2136129933915, + "volumeUSD": 21236.492783587048, + "latestDailyApy": 0.10633126181260888, + "latestWeeklyApy": 0.34732184840051694, + "virtualPrice": 978329462467234600 + }, + { + "type": "stable-factory", + "address": "0x5a6A4D54456819380173272A5E8E9B9904BdF41B", + "rawVolume": 1999.82869245363, + "volumeUSD": 1970.8558386260484, + "latestDailyApy": 0.08206023340646684, + "latestWeeklyApy": 0.19822371225821644, + "virtualPrice": 1011409578361714700 + }, + { + "type": "stable-factory", + "address": "0xFD5dB7463a3aB53fD211b4af195c5BCCC1A03890", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1009600535958499300 + }, + { + "type": "main", + "address": "0x4e0915C88bC70750D68C481540F081fEFaF22273", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0003776248887144007, + "virtualPrice": 1007534448768185700 + }, + { + "type": "main", + "address": "0x1005F7406f32a61BD760CfA14aCCd2737913d546", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.03043276011669427, + "virtualPrice": 1006799568309908200 + }, + { + "type": "main", + "address": "0xDcEF968d416a41Cdac0ED8702fAC8128A64241A2", + "rawVolume": 990189.6257254008, + "volumeUSD": 990088.4711002228, + "latestDailyApy": 0.012312411531723022, + "latestWeeklyApy": 0.020329753325465383, + "virtualPrice": 1001340121540158700 + }, + { + "type": "main", + "address": "0xa1F8A6807c402E4A15ef4EBa36528A3FED24E577", + "rawVolume": 397.51402498208404, + "volumeUSD": 735795.0865600811, + "latestDailyApy": 0.01368744300238589, + "latestWeeklyApy": 0.054356886196837984, + "virtualPrice": 1001276136423986600 + }, + { + "type": "main", + "address": "0xf253f83AcA21aAbD2A20553AE0BF7F65C755A07F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.5535433980263793, + "latestWeeklyApy": 0.32372055566174396, + "virtualPrice": 1002220820647232900 + }, + { + "type": "main", + "address": "0xaE34574AC03A15cd58A92DC79De7B1A0800F1CE3", + "rawVolume": 636665.3990688167, + "volumeUSD": 636599.4445251204, + "latestDailyApy": 0.015376652501553068, + "latestWeeklyApy": 0.02250731989068555, + "virtualPrice": 1000291883605943800 + }, + { + "type": "main", + "address": "0xBfAb6FA95E0091ed66058ad493189D2cB29385E6", + "rawVolume": 0.5373065297291459, + "volumeUSD": 993.130339666382, + "latestDailyApy": 5.668817570250595, + "latestWeeklyApy": 2.5274649895232315, + "virtualPrice": 1008506982746947700 + }, + { + "type": "stable-factory", + "address": "0x1F71f05CF491595652378Fe94B7820344A551B8E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8461A004b50d321CB22B7d034969cE6803911899", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.02630923616389058, + "virtualPrice": 1004518181375340800 + }, + { + "type": "stable-factory", + "address": "0x19b080FE1ffA0553469D20Ca36219F17Fcf03859", + "rawVolume": 30253.0410513214, + "volumeUSD": 33104.322005702, + "latestDailyApy": 0.16521929965118698, + "latestWeeklyApy": 0.13212483322946333, + "virtualPrice": 1013498206525258500 + }, + { + "type": "stable-factory", + "address": "0x621F13Bf667207335C601F8C89eA5eC260bAdA9A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xED24FE718EFFC6B2Fc59eeaA5C5f51dD079AB6ED", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6c7Fc04FEE277eABDd387C5B498A8D0f4CB9C6A6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xDa5B670CcD418a187a3066674A8002Adc9356Ad1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000214883452329000 + }, + { + "type": "stable-factory", + "address": "0x99AE07e7Ab61DCCE4383A86d14F61C68CdCCbf27", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x87650D7bbfC3A9F10587d7778206671719d9910D", + "rawVolume": 3088.712837035307, + "volumeUSD": 3047.601140499799, + "latestDailyApy": 0.09774428308966243, + "latestWeeklyApy": 0.6541912346841983, + "virtualPrice": 1008456121822687600 + }, + { + "type": "stable-factory", + "address": "0x6A274dE3e2462c7614702474D64d376729831dCa", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 5.514650732663018, + "latestWeeklyApy": 5.299027531335976, + "virtualPrice": 1046719446233244300 + }, + { + "type": "stable-factory", + "address": "0x06cb22615BA53E60D67Bf6C341a0fD5E718E1655", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.12541232272189617, + "latestWeeklyApy": 0.4804422281697196, + "virtualPrice": 1008442593191292300 + }, + { + "type": "stable-factory", + "address": "0xf5A95ccDe486B5fE98852bB02d8eC80a4b9422BD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.009396184027266052, + "latestWeeklyApy": 0.03153305381573546, + "virtualPrice": 17764176718726818000 + }, + { + "type": "stable-factory", + "address": "0x2009f19A8B46642E92Ea19adCdFB23ab05fC20A6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x883F7d4B6B24F8BF1dB980951Ad08930D9AEC6Bc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x46f5ab27914A670CFE260A2DEDb87f84c264835f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2206cF41E7Db9393a3BcbB6Ad35d344811523b46", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x67d9eAe741944D4402eB0D1cB3bC3a168EC1764c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.04189933244134192, + "latestWeeklyApy": 0.14065848429274386, + "virtualPrice": 1137039514490973700 + }, + { + "type": "stable-factory", + "address": "0x9D0464996170c6B9e75eED71c68B99dDEDf279e8", + "rawVolume": 561700.0432609715, + "volumeUSD": 323381.0578706684, + "latestDailyApy": 0.92364491989263, + "latestWeeklyApy": 0.6284961471799022, + "virtualPrice": 1027066345549457200 + }, + { + "type": "stable-factory", + "address": "0x5B3b5DF2BF2B6543f78e053bD91C4Bdd820929f1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.020177980138158524, + "latestWeeklyApy": 0.0677261182118194, + "virtualPrice": 1004596892520404000 + }, + { + "type": "stable-factory", + "address": "0x3CFAa1596777CAD9f5004F9a0c443d912E262243", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1003238754973575600 + }, + { + "type": "stable-factory", + "address": "0x9f6664205988C3bf4B12B851c075102714869535", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.08698441698713477, + "latestWeeklyApy": 0.29215695108566475, + "virtualPrice": 1014424595097552300 + }, + { + "type": "stable-factory", + "address": "0x6d0Bd8365e2fCd0c2acf7d218f629A319B6c9d47", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAA5A67c256e27A5d80712c51971408db3370927D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.7016369304744696, + "latestWeeklyApy": 0.5810255001075681, + "virtualPrice": 1012602074434122400 + }, + { + "type": "stable-factory", + "address": "0x8818a9bb44Fbf33502bE7c15c500d0C783B73067", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0014669313180837307, + "virtualPrice": 1003831591929722600 + }, + { + "type": "stable-factory", + "address": "0x3F1B0278A9ee595635B61817630cC19DE792f506", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0002873586441021203, + "virtualPrice": 1004252684892458000 + }, + { + "type": "stable-factory", + "address": "0xD6Ac1CB9019137a896343Da59dDE6d097F710538", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.06002176385446756, + "virtualPrice": 1003737270869890000 + }, + { + "type": "stable-factory", + "address": "0x9c2C8910F113181783c249d8F6Aa41b51Cde0f0c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0009718139904801859, + "virtualPrice": 1003488565365647100 + }, + { + "type": "stable-factory", + "address": "0xc8a7C1c4B748970F57cA59326BcD49F5c9dc43E3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1070261494377024900 + }, + { + "type": "stable-factory", + "address": "0x3Fb78e61784C9c637D560eDE23Ad57CA1294c14a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1047967476787554000 + }, + { + "type": "stable-factory", + "address": "0x737bC004136f66aE3F8fd5a1199e81c18388097B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4e52Cfc80679F402d10f7766fa3f85351A7C2530", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2De8c952871317fB9F22C73BB66BF86A1EeBe1a5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x08Eaf78d40abFA6C341F05692eB48eDCA425Ce04", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC4C319E2D4d66CcA4464C0c2B32c9Bd23ebe784e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x66b2e9B25F8ABa6B4A10350c785d63bAdE5A11E9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE76ebD4f9FA58E5269D3cD032b055b443239e664", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfa65aa60a9D45623c57D383fb4cf8Fb8b854cC4D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.000018128117651450282, + "latestWeeklyApy": 0.0011214023805106166, + "virtualPrice": 1550089871801405200 + }, + { + "type": "stable-factory", + "address": "0xeD09ca8275dFfb09c632B6EA58C035a851F73616", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAc5f019a302c4c8caAC0a7F28183ac62E6e80034", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1014977446517129, + "latestWeeklyApy": 0.3409586911564899, + "virtualPrice": 1003904663349736300 + }, + { + "type": "stable-factory", + "address": "0xbcb91E689114B9Cc865AD7871845C95241Df4105", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.2770389176231856, + "latestWeeklyApy": 1.2977874119431743, + "virtualPrice": 1065277099784049200 + }, + { + "type": "stable-factory", + "address": "0xC2F5FeA5197a3d92736500Fd7733Fcc7a3bBDf3F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.0684565202113907, + "latestWeeklyApy": 0.22987733444044256, + "virtualPrice": 1003228205060315000 + }, + { + "type": "stable-factory", + "address": "0x705DA2596cf6aaA2FEA36f2a59985EC9e8aeC7E2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1456663270916092, + "latestWeeklyApy": 0.48958958782947537, + "virtualPrice": 1007566933644334200 + }, + { + "type": "stable-factory", + "address": "0x6870F9b4DD5d34C7FC53D0d85D9dBd1aAB339BF7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.038082686662099796, + "latestWeeklyApy": 0.1278453752104003, + "virtualPrice": 1005939481097708500 + }, + { + "type": "stable-factory", + "address": "0x55A8a39bc9694714E2874c1ce77aa1E599461E18", + "rawVolume": 4573.7276652027895, + "volumeUSD": 4412.419074782618, + "latestDailyApy": 0.02509270525949958, + "latestWeeklyApy": 0.01982441096610721, + "virtualPrice": 1011556608953572500 + }, + { + "type": "stable-factory", + "address": "0xf03bD3cfE85f00bF5819AC20f0870cE8a8d1F0D8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1004638233259634400 + }, + { + "type": "stable-factory", + "address": "0xC8781F2193e2CB861c9325677D98297F94a0dfd3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9f4A88da14F2b6DBc785C1Db3511A53B8F342bde", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x04c90C198b2eFF55716079bc06d7CCc4aa4d7512", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.004685054898279084, + "virtualPrice": 1003870788727816100 + }, + { + "type": "stable-factory", + "address": "0xCEAF7747579696A2F0bb206a14210e3c9e6fB269", + "rawVolume": 77733.15480190952, + "volumeUSD": 18066.351562920994, + "latestDailyApy": 13.375410130982623, + "latestWeeklyApy": 11.633404105754863, + "virtualPrice": 1061523196669430700 + }, + { + "type": "stable-factory", + "address": "0x9fED7a930d86Dfe5980040E18C92B1B0d381eC19", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf0C081020B9d06EB1b33e357767c00Ccc138bE7c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xFB9a265b5a1f52d97838Ec7274A0b1442efAcC87", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002420127139841300 + }, + { + "type": "stable-factory", + "address": "0xBaaa1F5DbA42C3389bDbc2c9D2dE134F5cD0Dc89", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1006714037325754500 + }, + { + "type": "stable-factory", + "address": "0x1F6bb2a7a2A84d08bb821B89E38cA651175aeDd4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc270b3B858c335B6BA5D5b10e2Da8a09976005ad", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.09328253329825564, + "latestWeeklyApy": 1.527043289649277, + "virtualPrice": 1026946848432267400 + }, + { + "type": "stable-factory", + "address": "0xFbdCA68601f835b27790D98bbb8eC7f05FDEaA9B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.0001584706474710984, + "latestWeeklyApy": 0.023389674752882783, + "virtualPrice": 1007514097508139100 + }, + { + "type": "stable-factory", + "address": "0x8DF0713B2a047c45a0BEf21c3B309bcEF91afd34", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x148a88719bA0B34F16e0f5A7537DA73Bdc9C2A2A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x45a8CC73EC100306af64AB2CcB7B12E70EC549A8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xcbD5cC53C5b846671C6434Ab301AD4d210c21184", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xE667c793513ecBD74Fb53Bb4b91fDae02BFC092D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb9446c4Ef5EBE66268dA6700D26f96273DE3d571", + "rawVolume": 108131.56942556337, + "volumeUSD": 118198.94878802764, + "latestDailyApy": 0.0003437168771824872, + "latestWeeklyApy": 0.3241171253431707, + "virtualPrice": 1008371865486257500 + }, + { + "type": "stable-factory", + "address": "0x06d39e95977349431E3d800d49C63B4D472e10FB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1033812EFeC8716BBaE0c19e5678698D25E26eDf", + "rawVolume": 21042.68954299639, + "volumeUSD": 20974.021699083747, + "latestDailyApy": 0.45594038874925413, + "latestWeeklyApy": 0.17497265728605438, + "virtualPrice": 1036639971734447500 + }, + { + "type": "stable-factory", + "address": "0x679CE2A8B3180f5a00e0DCCA26783016799e9A58", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6d8fF88973b15dF3e2dc6ABb9aF29Cad8C2B5Ef5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.019379202946301355, + "latestWeeklyApy": 0.06503988103963021, + "virtualPrice": 1002133522697015300 + }, + { + "type": "stable-factory", + "address": "0x8083b047E962CA45B210E28aC755fbdA3D773c5B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3b22B869ba3c0a495Cead0B8A009b70886d37fAC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.08780749800634258, + "latestWeeklyApy": 0.2949242136640162, + "virtualPrice": 1003285535329882600 + }, + { + "type": "stable-factory", + "address": "0xbB2dC673E1091abCA3eaDB622b18f6D4634b2CD9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001586764595135600 + }, + { + "type": "stable-factory", + "address": "0x1c65bA665ce39cfe85639227eccf17Be2B167058", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xa0D35fAead5299Bf18eFbB5dEfd1Ec6D4AB4Ef3B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf083FBa98dED0f9C970e5a418500bad08D8b9732", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1010216431932291600 + }, + { + "type": "stable-factory", + "address": "0x76264772707c8Bc24261516b560cBF3Cbe6F7819", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.10563084657808641, + "latestWeeklyApy": 0.3548597353133287, + "virtualPrice": 1004173834210798600 + }, + { + "type": "stable-factory", + "address": "0xB37D6c07482Bc11cd28a1f11f1a6ad7b66Dec933", + "rawVolume": 18887.55942250765, + "volumeUSD": 20287.142845960836, + "latestDailyApy": 0.3794536168227447, + "latestWeeklyApy": 0.13274889381453825, + "virtualPrice": 1012634390381770800 + }, + { + "type": "stable-factory", + "address": "0x694650a0B2866472c2EEA27827CE6253C1D13074", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000858165681095300 + }, + { + "type": "stable-factory", + "address": "0x8ed10E4e307822b969BCDaffD49095235f6F892b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.053063147663734433, + "latestWeeklyApy": 0.17816417658882422, + "virtualPrice": 1001305148129025300 + }, + { + "type": "stable-factory", + "address": "0x3a70DfA7d2262988064A2D051dd47521E43c9BdD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.05496233481012691, + "latestWeeklyApy": 0.18454458794145978, + "virtualPrice": 19759968603611927000 + }, + { + "type": "stable-factory", + "address": "0x7abD51BbA7f9F6Ae87aC77e1eA1C5783adA56e5c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.059963685534669686, + "latestWeeklyApy": 0.20134813762389125, + "virtualPrice": 1003982722849669400 + }, + { + "type": "stable-factory", + "address": "0x5b78b93Fa851c357586915c7bA7258b762eB1ba0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0FaFaFD3C393ead5F5129cFC7e0E12367088c473", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.10927272505414365, + "latestWeeklyApy": 0.3671096693218301, + "virtualPrice": 1004091726077532200 + }, + { + "type": "stable-factory", + "address": "0xd05ce4AB1f4fb0C0e1b65ebE3Ed7F2dcFc6ccf20", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x97aEB34ac6561146DD9cE191EFD5634F6465DeF4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9462F2b3C9bEeA8afc334Cdb1D1382B072e494eA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000193510592412700 + }, + { + "type": "stable-factory", + "address": "0x50B0D9171160d6EB8Aa39E090Da51E7e078E81c4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000266447667302400 + }, + { + "type": "stable-factory", + "address": "0x447Ddd4960d9fdBF6af9a790560d0AF76795CB08", + "rawVolume": 3.1540481828348637, + "volumeUSD": 5833.810600873363, + "latestDailyApy": 3.647560254229893, + "latestWeeklyApy": 3.815249970823093, + "virtualPrice": 1003294987094974100 + }, + { + "type": "stable-factory", + "address": "0xCaf8703f8664731cEd11f63bB0570E53Ab4600A9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000189992490241900 + }, + { + "type": "stable-factory", + "address": "0x01FE650EF2f8e2982295489AE6aDc1413bF6011F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC250B22d15e43d95fBE27B12d98B6098f8493eaC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000155619970413800 + }, + { + "type": "stable-factory", + "address": "0x0437ac6109e8A366A1F4816edF312A36952DB856", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000328675028590800 + }, + { + "type": "stable-factory", + "address": "0x9001a452d39A8710D27ED5c2E10431C13F5Fba74", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000280394840338200 + }, + { + "type": "stable-factory", + "address": "0x961226B64AD373275130234145b96D100Dc0b655", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000183803504526200 + }, + { + "type": "stable-factory", + "address": "0xe7E4366f6ED6aFd23e88154C00B532BDc0352333", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0x9809f2B973bDB056D24bC2b6571EA1f23dB4e861", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x04EcD49246bf5143E43e2305136c46AeB6fAd400", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xC9467E453620f16b57a34a770C6bceBECe002587", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8c524635d52bd7b1Bd55E062303177a7d916C046", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.01857876707533901, + "virtualPrice": 1001879246273119200 + }, + { + "type": "stable-factory", + "address": "0x48fF31bBbD8Ab553Ebe7cBD84e1eA3dBa8f54957", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.23013946727068468, + "latestWeeklyApy": 0.03849937231521494, + "virtualPrice": 1002200583526755600 + }, + { + "type": "stable-factory", + "address": "0x9CA41a2DaB3CEE15308998868ca644e2e3be5C59", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000614502146935800 + }, + { + "type": "stable-factory", + "address": "0xD652c40fBb3f06d6B58Cb9aa9CFF063eE63d465D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd1011B637F979a5d9093Df1B32e7736c289024F5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE95E4c2dAC312F31Dc605533D5A4d0aF42579308", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.8391218879472815, + "latestWeeklyApy": 1.6239724232025798, + "virtualPrice": 1031970752327582600 + }, + { + "type": "stable-factory", + "address": "0x6577b46a566aDe492ad551a315c04DE3Fbe3DbFa", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xDB8Cc7eCeD700A4bfFdE98013760Ff31FF9408D8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.15003669625637261, + "latestWeeklyApy": 0.504294187611154, + "virtualPrice": 1006066043244177200 + }, + { + "type": "stable-factory", + "address": "0x323b3a6e7a71c1b8C257606Ef0364D61df8AA525", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf7b55C3732aD8b2c2dA7c24f30A69f55c54FB717", + "rawVolume": 8797.337000234853, + "volumeUSD": 5133.470024121064, + "latestDailyApy": 0, + "latestWeeklyApy": 0.2371461110832529, + "virtualPrice": 1003797055733031200 + }, + { + "type": "stable-factory", + "address": "0xF74bEc4bcf432A17470e9C4F71542f2677B9AF6a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5a59Fd6018186471727FAAeAE4e57890aBC49B08", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000818249774629600 + }, + { + "type": "stable-factory", + "address": "0xeb07FcD7A8627281845ba3aCbed24435802d4B52", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8EE017541375F6Bcd802ba119bdDC94dad6911A1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.10278652950148626, + "latestWeeklyApy": 0.3452940745366062, + "virtualPrice": 1005315499280146800 + }, + { + "type": "stable-factory", + "address": "0xaa6a4f8DDcca7d3B9E7ad38C8338a2FCfdB1E713", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8c1de7a8F8852197B109Daf75A6fbB685C013315", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe6b5CC1B4b47305c58392CE3D359B10282FC36Ea", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.09539226552903735, + "latestWeeklyApy": 0.3825718258067434, + "virtualPrice": 1007012696288881800 + }, + { + "type": "stable-factory", + "address": "0x828b154032950C8ff7CF8085D841723Db2696056", + "rawVolume": 27.994632168993743, + "volumeUSD": 51788.374980645305, + "latestDailyApy": 2.2345705311545006, + "latestWeeklyApy": 2.4845373968958917, + "virtualPrice": 1051699810680654800 + }, + { + "type": "stable-factory", + "address": "0x6F80b9543Dd5A0408F162Fe2A1675dB70A2cb77D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xbf5D9DeCCCC762fA7B5eb9faC668c803D42D97b6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1977870a4c18a728C19Dd4eB6542451DF06e0A4b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002805400623452700 + }, + { + "type": "stable-factory", + "address": "0x07350D8c30D463179DE6A58764C21558DB66Dd9c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC38cA214c7a82b1EE977232F045aFb6d425cfFf0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5c6A6Cf9Ae657A73b98454D17986AF41fC7b44ee", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 5.399754109549182, + "latestWeeklyApy": 0.9732426060397037, + "virtualPrice": 1003848039706647400 + }, + { + "type": "stable-factory", + "address": "0x9558b18f021FC3cBa1c9B777603829A42244818b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xee60f4A3487c07b4570cCfFEF315401C4c5744c8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF38a67dA7a3A12aA12A9981ae6a79C0fdDdd71aB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xdaDfD00A2bBEb1abc4936b1644a3033e1B653228", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000384776792047700 + }, + { + "type": "stable-factory", + "address": "0xeE98d56f60A5905CbB52348c8719B247DaFe60ec", + "rawVolume": 290861.99225065054, + "volumeUSD": 212.23032238794397, + "latestDailyApy": 2.853580488397789, + "latestWeeklyApy": 0.40161853210585186, + "virtualPrice": 1034234988511956500 + }, + { + "type": "stable-factory", + "address": "0x8116E7c29f60FdacF3954891A038f845565EF5A0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.046338625253428134, + "latestWeeklyApy": 0.15557505085181944, + "virtualPrice": 1053873249823381100 + }, + { + "type": "stable-factory", + "address": "0xdE495223F7cD7EE0cDe1AddbD6836046bBdf3ad3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.003434107990818447, + "latestWeeklyApy": 0.011524164917608992, + "virtualPrice": 1003098600910676600 + }, + { + "type": "stable-factory", + "address": "0x943b7e761f34866DA12c9b84C99888Fe2Ef607c5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7E46fd8a30869aa9ed55af031067Df666EfE87da", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x63594B2011a0F2616586Bf3EeF8096d42272F916", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.08826754436059847, + "latestWeeklyApy": 0.2964699319411901, + "virtualPrice": 1038944308333905900 + }, + { + "type": "stable-factory", + "address": "0x67C7f0a63BA70a2dAc69477B716551FC921aed00", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1453426089520038, + "latestWeeklyApy": 0.48849225370490856, + "virtualPrice": 1003326461300598000 + }, + { + "type": "stable-factory", + "address": "0x4606326b4Db89373F5377C316d3b0F6e55Bc6A20", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.006139436642582652, + "latestWeeklyApy": 0.01195352651415238, + "virtualPrice": 1004001245847525000 + }, + { + "type": "stable-factory", + "address": "0xe3c190c57b5959Ae62EfE3B6797058B76bA2f5eF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.007565238637496918, + "latestWeeklyApy": 0.31099786992851985, + "virtualPrice": 1006154232565633400 + }, + { + "type": "stable-factory", + "address": "0x497CE58F34605B9944E6b15EcafE6b001206fd25", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.0036062329192398934, + "latestWeeklyApy": 0.15972293171906404, + "virtualPrice": 1004632454925950300 + }, + { + "type": "stable-factory", + "address": "0x04b727C7e246CA70d496ecF52E6b6280f3c8077D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.005915043074744553, + "latestWeeklyApy": 0.009766486062079416, + "virtualPrice": 1002771585284491500 + }, + { + "type": "stable-factory", + "address": "0x2Ed1D3E7771D64feeD7AE8F25b4032c8dd2D0B99", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4e43151b78b5fbb16298C1161fcbF7531d5F8D93", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.009392532939322962, + "latestWeeklyApy": 0.04159466881323848, + "virtualPrice": 1003992882023613200 + }, + { + "type": "stable-factory", + "address": "0x8fdb0bB9365a46B145Db80D0B1C5C5e979C84190", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.008139945413976335, + "latestWeeklyApy": 0.01344017403777098, + "virtualPrice": 1005265447694108700 + }, + { + "type": "stable-factory", + "address": "0x50C8F34CEA0E65535fC2525B637ccd8a07c90896", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x642562115cf5A5e72Ab517E6448EC8b61843dac9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x33baeDa08b8afACc4d3d07cf31d49FC1F1f3E893", + "rawVolume": 4670.317276559186, + "volumeUSD": 4665.642871100708, + "latestDailyApy": 0.11060785847685217, + "latestWeeklyApy": 0.4327769496875966, + "virtualPrice": 1006415803407977200 + }, + { + "type": "stable-factory", + "address": "0xe7A3b38c39F97E977723bd1239C3470702568e7B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.05848390940108583, + "virtualPrice": 1002982310655330300 + }, + { + "type": "stable-factory", + "address": "0xD7C10449A6D134A9ed37e2922F8474EAc6E5c100", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB30dA2376F63De30b42dC055C93fa474F31330A5", + "rawVolume": 39059.975883176834, + "volumeUSD": 39044.38079498388, + "latestDailyApy": 0.003997831122770634, + "latestWeeklyApy": 0.009276379940503787, + "virtualPrice": 1002008326150662100 + }, + { + "type": "stable-factory", + "address": "0xF70c5c65CF6A28E7a4483F52511e5a29678e4fFD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x649c1B0e70A80210bcFB3C4eb5DDAd175B90BE4d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x875DF0bA24ccD867f8217593ee27253280772A97", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC69b00366F07840fF939cc9fdF866C3dCCB10804", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000008416926924200 + }, + { + "type": "stable-factory", + "address": "0xc9C32cd16Bf7eFB85Ff14e0c8603cc90F6F2eE49", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.10110726450129892, + "latestWeeklyApy": 0.3448886134875151, + "virtualPrice": 1002628154627158500 + }, + { + "type": "stable-factory", + "address": "0x48fcFFa86fb24bDEB45B5739F7Ced24095A7c8e8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb3bC1833aC51aAcEA92acd551FBe1Ab7eDc59EdF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7c0316C925E12eBfC55e0f325794B43eaD425157", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000080466623906200 + }, + { + "type": "stable-factory", + "address": "0x83D78bf3f861e898cCA47BD076b3839Ab5469d70", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000154730398309000 + }, + { + "type": "stable-factory", + "address": "0x0AaCe9b6c491d5cD9F80665A2fCc1af09e9CCf00", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.0008001666148338415, + "latestWeeklyApy": 0.001321156379119337, + "virtualPrice": 1000321144347884300 + }, + { + "type": "stable-factory", + "address": "0x92Da88e2e6f96cC7c667Cd1367BD090ADF3c6053", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.0977667704767482, + "latestWeeklyApy": 0.32841223354782567, + "virtualPrice": 1002373483771493500 + }, + { + "type": "stable-factory", + "address": "0x85F102bE3a76165Be9668bE0bF36E906a488FD33", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x87872BE0c56Ef97156f2617b3083D22423Fc62E9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc5481720517e1B170CF1d19cEaaBE07c37896Eb2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.13484084662731544, + "latestWeeklyApy": 0.4531470354435907, + "virtualPrice": 1003263863237430800 + }, + { + "type": "stable-factory", + "address": "0x8b3138DF9aA1F60648C65C67D6Ff646BE305788B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xBA866791F98098df41C3187D4D5433be29215c79", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xBa3436Fd341F2C8A928452Db3C5A3670d1d5Cc73", + "rawVolume": 355776.63310869597, + "volumeUSD": 389936.347398694, + "latestDailyApy": 0.5859499097321974, + "latestWeeklyApy": 0.3247070535099539, + "virtualPrice": 1005337600947267800 + }, + { + "type": "stable-factory", + "address": "0x6e8d2b6Fb24117c675C2fABC524f28CC5D81f18a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.16922597446048274, + "latestWeeklyApy": 0.16922597446048274, + "virtualPrice": 1113823422658835600 + }, + { + "type": "stable-factory", + "address": "0xc22936D5ECE78C048D6E7fe5d9F77fb6cAA16Dbb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb548E49Bb6f33A77885836723b73EF9C8dBC047B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3DcC3AC50cB42F7e443d7F548DD2c48EDaa8f59a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x172A54Ba45783049216F90F85FE5E5f6BC1c08fe", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF08dBD81Fcc712004e6943454c83C52DE963cdEC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6788f608CfE5CfCD02e6152eC79505341E0774be", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000269569740103600 + }, + { + "type": "stable-factory", + "address": "0x9fE520E629A7F0deC773A3199BFE87620E5aeA74", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb2111b55Edd1Cb5D2C18a6817e21D473FE0E5Ba1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC47EBd6c0f68fD5963005D28D0ba533750E5C11B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.006269512649015319, + "latestWeeklyApy": 0.010351772353511812, + "virtualPrice": 1002820677772161900 + }, + { + "type": "stable-factory", + "address": "0x66E335622ad7a6C9c72c98dbfCCE684996a20Ef9", + "rawVolume": 6626.824977, + "volumeUSD": 6618.581888828947, + "latestDailyApy": 0.0009134563272450436, + "latestWeeklyApy": 0.12430016456519422, + "virtualPrice": 1010609737936306200 + }, + { + "type": "stable-factory", + "address": "0xE57180685E3348589E9521aa53Af0BCD497E884d", + "rawVolume": 31242.062031774272, + "volumeUSD": 31215.193074753148, + "latestDailyApy": 0.1367325544604281, + "latestWeeklyApy": 0.40497442599163325, + "virtualPrice": 1003783103689120100 + }, + { + "type": "stable-factory", + "address": "0x9d259cA698746586107C234e9E9461d385ca1041", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.06014615573548543, + "virtualPrice": 1001240203100788600 + }, + { + "type": "stable-factory", + "address": "0xa23d59fA2505638861525f8cB3005fec7bd37b5B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xCF95Ac3dAecDBf60152A16BDa8D8f8dB7d175B88", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB90A850A0802B9F281bAbEA836292AAdd1011972", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9d0De74dE698D1BA7273D09193EC20a1F6cb7d6a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xEc4ACC9322FC4dc853e8f72631d2C95556C68Ec0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3d675A52F5B572EB5c61FC5088203Ac9B16BFC70", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0309A528bBa0394dC4A2Ce59123C52E317A54604", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF8048E871dF466BD187078cb38CB914476319d33", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x04f0Fae3dD0A9904F797DeB15C3e523342112811", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0B049eB31878176b278ef84A66810d311353dc94", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5239063A86e1E251eE6FB3AB4fb67DEA3A8E1fd2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x930792bd0fb4593063Ad2ee12E86d768bD8DF7a1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb5FC990637F15bE6420341845a64101b6bbE365D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xabE43B60F8337818c21101AB78b5B216789e19DD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x453D92C7d4263201C69aACfaf589Ed14202d83a4", + "rawVolume": 6664.317958179683, + "volumeUSD": 3856.5622119024347, + "latestDailyApy": 2.2286177239736027, + "latestWeeklyApy": 1.598707000924171, + "virtualPrice": 1022479219872035000 + }, + { + "type": "stable-factory", + "address": "0x904bE3cE7249447167051f239c832400CA28De71", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9848482da3Ee3076165ce6497eDA906E66bB85C5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 3057512808859659300 + }, + { + "type": "stable-factory", + "address": "0xDAB9EeEE607F7952680E9433787e4EdE244a8515", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x62CEc7899A9910E48F0dEeaB755429887b6e1979", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x00f93fBf00F97170B6cf295DC58888073CB5c2b8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x982Da76F0ccF868B558BD46D7a3B58bC2662D7cc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x578B27E257050B6011DfDCD69F67696eF24279FC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB4698193bCBC49Be01Fcfc67C144eA4927166355", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x26c5A2f9b97f4B5FC74B05944B3Bb1679d803709", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x188aBea43270791F96dC9209e239f7B79E61203B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x28B0Cf1baFB707F2c6826d10caf6DD901a6540C5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8E27f0821873B6f5421b6ca75A4C5e1e83d3E77a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6A0861625937cB3629066CC6Db88808a590B9C68", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x63a1eC86cD45425f1409faBe4c1cF8C5FD32A3B1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8e883b9628a0d995ad758597989624Ec19F3b971", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd0E24cB3e766581952dBf258b78e89c63A37f5fb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000413848501121800 + }, + { + "type": "stable-factory", + "address": "0xF9078Fb962A7D13F55d40d49C8AA6472aBD1A5a6", + "rawVolume": 2178.4131688044963, + "volumeUSD": 6816.92736388958, + "latestDailyApy": 0.04343302722928932, + "latestWeeklyApy": 0.0946011300760663, + "virtualPrice": 1001914476471172700 + }, + { + "type": "stable-factory", + "address": "0x498AD3352cCFAEd237A91f6933A92a7A43917B72", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA4C231fA5a02992b740e6169F1fbfCD35d5719e1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd6B03059C882f63268dD3e1a98d8E3cDEe26919C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC0Ec468c1B6B94a107B0A83c7a0f6529B388f43A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1013400693632649, + "latestWeeklyApy": 0.3404285583585631, + "virtualPrice": 1002362673336624300 + }, + { + "type": "stable-factory", + "address": "0xa15e8f7E1e031e4F6f11053c6d320B2A8dc6742c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6A52e339A4b8ABD15707f882D6ADC05875Ec5223", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xa98794Accdb3996c7Ef015A354B6e1aDd2D2ce3e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe82805a9b880E6DC520b6F017537F7781D55217F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xbeDca4252b27cc12ed7DaF393F331886F86cd3CE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.021073915245617414, + "latestWeeklyApy": 0.07072836023986895, + "virtualPrice": 1013583731890745200 + }, + { + "type": "stable-factory", + "address": "0xD511B5c309B2F7256FF7b3D41B029aFb96C7a331", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8D35ECe39566d65d06c9207C571934DD3C3a3916", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.08522021882895192, + "latestWeeklyApy": 0.28622470968842073, + "virtualPrice": 1002207859389850600 + }, + { + "type": "stable-factory", + "address": "0xA77B5d170F3AEC2F72ca06490a7B9383A70ae5EB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1400E08f1d9f5Bc90ae19ACd4bf81BEaBC9e79de", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x326290A1B0004eeE78fa6ED4F1d8f4b2523ab669", + "rawVolume": 116462.86918391501, + "volumeUSD": 116243.4037046636, + "latestDailyApy": 0.1379732101113973, + "latestWeeklyApy": 0.07286883962041024, + "virtualPrice": 1001427435976968000 + }, + { + "type": "stable-factory", + "address": "0x9FD7e5B614FA071fF3543b44B68ef7699CEc4AF5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x166BDDEA59c13179796653B8afF13eeA1bd81a97", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x613398AEcdAf6bCB6eDB8e61e5956794D23f7412", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc8FBb1CCdF2f94Ba01c8B75E0A4FA4c5E1eD6791", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA500Cd4E520682e1B1113e1055D55bAceAD61122", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA77d09743F77052950C4eb4e6547E9665299BecD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.05806026651031804, + "latestWeeklyApy": 0.19495280745638333, + "virtualPrice": 1007135464079669000 + }, + { + "type": "stable-factory", + "address": "0xFd46B54FcFF753bA058A5E9BbB45dCedc9A71FAb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x413928a25D6ea1A26F2625d633207755f67Bf97c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.10262333383530553, + "latestWeeklyApy": 2.3545985901743727, + "virtualPrice": 1004391263234181900 + }, + { + "type": "stable-factory", + "address": "0x3C565D9151073e8E5002B61dc570f43A139cafe7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x84997FAFC913f1613F51Bb0E2b5854222900514B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x066B6e1E93FA7dcd3F0Eb7f8baC7D5A747CE0BF9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAf25fFe6bA5A8a29665adCfA6D30C5Ae56CA0Cd3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000938285147440600 + }, + { + "type": "stable-factory", + "address": "0xF52E248CcFBf189df0C5A4b15e9f72Fa10c7Fe59", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x84C333e94AEA4a51a21F6cf0C7F528C50Dc7592C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.005005036618821457, + "latestWeeklyApy": 0.01016520751466743, + "virtualPrice": 1001278122659397600 + }, + { + "type": "stable-factory", + "address": "0xf275CADbE0343541ce49A03E385f8B234544CDa8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x79E281BC69A03DaBCcD66858c65EF6724e50aebe", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.03795953881013947, + "virtualPrice": 1000431328758249200 + }, + { + "type": "stable-factory", + "address": "0x8D7b9C013F7f614cd870fad33E260E7a9a1D9b5b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1c899dED01954d0959E034b62a728e7fEbE593b0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 4.947112208618942, + "latestWeeklyApy": 2.0888345661765673, + "virtualPrice": 1015939961113777700 + }, + { + "type": "stable-factory", + "address": "0x141acE5Fd4435Fd341E396d579C91Df99fED10d4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xddA1B81690b530DE3C48B3593923DF0A6C5fe92E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0AD66FeC8dB84F8A3365ADA04aB23ce607ac6E24", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000889813896436400 + }, + { + "type": "stable-factory", + "address": "0x2863a328A0B7fC6040f11614FA0728587DB8e353", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.038772086136007466, + "latestWeeklyApy": 0.2165230766865589, + "virtualPrice": 1004287526728916000 + }, + { + "type": "stable-factory", + "address": "0x08f9Dd845D0c91B918bB90cc5B124f3fd3e98f3A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF95AAa7EBB1620e46221B73588502960Ef63dBa0", + "rawVolume": 34.331899064167295, + "volumeUSD": 34.243847516231284, + "latestDailyApy": 2.544170308072724, + "latestWeeklyApy": 1.5207140225145244, + "virtualPrice": 1001154910151658600 + }, + { + "type": "stable-factory", + "address": "0x1CC1772C8899ad2A35aDe9B9978a56254cfc64a0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x968DeE60C67c184f9808510ec92D990e7E6616C2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x23afFc32cBe3c1a2a79376361A2D6f51CA7C9005", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.13498023242497492, + "latestWeeklyApy": 0.45361856261114664, + "virtualPrice": 3.812888116623265e+21 + }, + { + "type": "stable-factory", + "address": "0xc3b19502F8c02be75F3f77fd673503520DEB51dD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.008691476870192894, + "latestWeeklyApy": 0.014025029245368081, + "virtualPrice": 1001344115612846800 + }, + { + "type": "stable-factory", + "address": "0xc897b98272AA23714464Ea2A0Bd5180f1B8C0025", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 1000000, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB657B895B265C38c53FFF00166cF7F6A3C70587d", + "rawVolume": 30.840649800374102, + "volumeUSD": 56917.51798227637, + "latestDailyApy": 0.02377761990806082, + "latestWeeklyApy": 0.15181522346892073, + "virtualPrice": 1161888012500453400 + }, + { + "type": "stable-factory", + "address": "0xD8A114e127Aa5b9f20284FC7A1bDf2bC6853a28D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x83fc85F144bbeC4234E690B6451B105F3d7c60e4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0245918fA513E0641509bb519389A49258A2699F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.06296708844721888, + "latestWeeklyApy": 0.21143053634378184, + "virtualPrice": 1001220904786754200 + }, + { + "type": "stable-factory", + "address": "0x37F1D67A5Ac27B7C2D0F664E73cCBb82627Ac4a5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x27f715999252a6E4d4794b4c9ff2Ce3D6ea8Fd9B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xEC0de6A9da9cc464Da0011214D586C21f1Fbe6D4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1016476205645711, + "latestWeeklyApy": 0.3414627083278221, + "virtualPrice": 1014327356702010400 + }, + { + "type": "stable-factory", + "address": "0xcD0148e3f3350f4B98A48535f63A38fC630e80f1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.10126092364672878, + "latestWeeklyApy": 0.34016313622937666, + "virtualPrice": 1001678451330973400 + }, + { + "type": "stable-factory", + "address": "0x1F98249637bB42edB072DD2a8AdD44Aeb80dA218", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7B42d77bd2feE3c98baA58D559B83Ff3bB4702cf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x50122108f7b3B10ac219d066275087D37E4F4a61", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfC8c34a3B3CFE1F1Dd6DBCCEC4BC5d3103b80FF0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.13731183848075812, + "latestWeeklyApy": 0.019550653572442123, + "virtualPrice": 1000313526157399900 + }, + { + "type": "stable-factory", + "address": "0x386Ec09dB6f961b9e28B3dab174AD9567e57b90c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6D09C6513e620778632D36784F5C3b4b2309bd96", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.006156763795006626, + "latestWeeklyApy": 0.010165605239587094, + "virtualPrice": 1000113621708054900 + }, + { + "type": "stable-factory", + "address": "0xC61557C5d177bd7DC889A3b621eEC333e168f68A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.10117326838960938, + "latestWeeklyApy": 0.33986758101787196, + "virtualPrice": 1001808867539888300 + }, + { + "type": "stable-factory", + "address": "0xe9123CBC5d1EA65301D417193c40A72Ac8D53501", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.03716325922573649, + "latestWeeklyApy": 0.13015391426256517, + "virtualPrice": 1002508011236649500 + }, + { + "type": "stable-factory", + "address": "0x3685646651FCcC80e7CCE7Ee24c5f47Ed9b434ac", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.01645685543549824, + "latestWeeklyApy": 0.05523400147318114, + "virtualPrice": 1000425032583516000 + }, + { + "type": "stable-factory", + "address": "0x110cc323ca53d622469EdD217387E2E6B33F1dF5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfFc78332F0dA6FbaabdAcFE8054CCbc501eED432", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC71Bc7e33510Aea215E4776867148fa25c368795", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8B8DBc5b2A0D07dF180B1186F179F1c6a97C8AaE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4d9f9D15101EEC665F77210cB999639f760F831E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.6482946366052964, + "latestWeeklyApy": 1.785983703754801, + "virtualPrice": 1012940229074773000 + }, + { + "type": "stable-factory", + "address": "0x663aC72a1c3E1C4186CD3dCb184f216291F4878C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1184441979242834, + "latestWeeklyApy": 0.09409629115246787, + "virtualPrice": 1000861369861696800 + }, + { + "type": "stable-factory", + "address": "0x97Ba76a574bC5709b944bB1887691301c72337Ca", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000038966368119200 + }, + { + "type": "stable-factory", + "address": "0xAEda92e6A3B1028edc139A4ae56Ec881f3064D4F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.005873698572012032, + "latestWeeklyApy": 0.09534659607879359, + "virtualPrice": 1000860701298237800 + }, + { + "type": "stable-factory", + "address": "0x428D03774F976F625380403E0C0AD38980943573", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x892D701d94a43bDBCB5eA28891DaCA2Fa22A690b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 2.440976434868314, + "latestWeeklyApy": 2.726722764789935, + "virtualPrice": 1012008914684662400 + }, + { + "type": "stable-factory", + "address": "0x99f5aCc8EC2Da2BC0771c32814EFF52b712de1E5", + "rawVolume": 236030.0893108247, + "volumeUSD": 137321.39880904413, + "latestDailyApy": 0.8850839712769121, + "latestWeeklyApy": 0.9607626267860159, + "virtualPrice": 1002797923010285000 + }, + { + "type": "stable-factory", + "address": "0xE60986759872393a8360A4a7abEAb3A6e0BA7848", + "rawVolume": 9805.575336292362, + "volumeUSD": 9801.837804021075, + "latestDailyApy": 0.005749390492648665, + "latestWeeklyApy": 0.13184066547771156, + "virtualPrice": 1000300293624129900 + }, + { + "type": "stable-factory", + "address": "0x5007c634BD59dd211875346A5D0cfd10DFD1CdC0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x971add32Ea87f10bD192671630be3BE8A11b8623", + "rawVolume": 204653.37271154998, + "volumeUSD": 117991.57439245383, + "latestDailyApy": 0.22293326357887278, + "latestWeeklyApy": 0.26382004859024644, + "virtualPrice": 1003696433662908300 + }, + { + "type": "stable-factory", + "address": "0x68934F60758243eafAf4D2cFeD27BF8010bede3a", + "rawVolume": 1022.0142943230672, + "volumeUSD": 1020.7208606155383, + "latestDailyApy": 0.0033734671051721676, + "latestWeeklyApy": 0.11380553942086369, + "virtualPrice": 1001326042793569900 + }, + { + "type": "stable-factory", + "address": "0xfBB481A443382416357fA81F16dB5A725DC6ceC8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.08771226560453371, + "latestWeeklyApy": 0.4095266351561433, + "virtualPrice": 1003846672848404100 + }, + { + "type": "stable-factory", + "address": "0x785Af85CceB3BA1369925c5b43E90026343FC0bb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000990102855300 + }, + { + "type": "stable-factory", + "address": "0x7C0d189E1FecB124487226dCbA3748bD758F98E4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.013922949279976393, + "virtualPrice": 1000912591479512400 + }, + { + "type": "stable-factory", + "address": "0x06c21B5d004604250a7f9639c4A3C28e73742261", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000705998680983800 + }, + { + "type": "stable-factory", + "address": "0xB4E2F6A10176b0948B31C7Ac0DF710137a7536A2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2d600BbBcC3F1B6Cb9910A70BaB59eC9d5F81B9A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1010177933949226400 + }, + { + "type": "stable-factory", + "address": "0x2448ec833EbAf2958330f91E5Fbe4F9C70C9e572", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000056944250855800 + }, + { + "type": "stable-factory", + "address": "0xfcc067EFb7bE2EEbD32615F14fC22195abB68e9B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000464655926350000 + }, + { + "type": "stable-factory", + "address": "0x0Bbe64Ea3cF57fDFdFD621F334B3469627A022aD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4424b4A37ba0088D8a718b8fc2aB7952C7e695F5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000447728634991100 + }, + { + "type": "stable-factory", + "address": "0xb9B19B9d771035c5d95e642bBea28927040B7117", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x38cB9756c307Ab482b5d3cA9155CB507cF98aC04", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF05CFb8b4382c69f3B451C5FB55210B232E0edFA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 1.189712560759304, + "virtualPrice": 1000348872491530500 + }, + { + "type": "stable-factory", + "address": "0x94B17476A93b3262d87B9a326965D1E91f9c13E7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.0048098158892173615, + "latestWeeklyApy": 0.042695228475464475, + "virtualPrice": 1000600971633000400 + }, + { + "type": "stable-factory", + "address": "0x96AAE323E111A19b1E0e26F55e8De21F1dD01f26", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.4476096693217144, + "latestWeeklyApy": 0.35520406586873055, + "virtualPrice": 1000335112624408200 + }, + { + "type": "stable-factory", + "address": "0xCA0253A98D16e9C1e3614caFDA19318EE69772D0", + "rawVolume": 61540.221186553485, + "volumeUSD": 35868.895815099066, + "latestDailyApy": 0.03720313028037214, + "latestWeeklyApy": 0.45819266658853053, + "virtualPrice": 1000835392290992600 + }, + { + "type": "stable-factory", + "address": "0x71c91B173984d3955f7756914bBF9a7332538595", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.004065156588506369, + "virtualPrice": 1000389318856035500 + }, + { + "type": "stable-factory", + "address": "0x852b90239C5034b5bb7a5e54eF1bEF3Ce3359CC8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.23223989445431137, + "virtualPrice": 1000219899686445800 + }, + { + "type": "stable-factory", + "address": "0x21E27a5E5513D6e65C4f830167390997aA84843a", + "rawVolume": 47.29799687712446, + "volumeUSD": 87577.01255521495, + "latestDailyApy": 2.3294942167549237, + "latestWeeklyApy": 2.158204721366097, + "virtualPrice": 1007621423708160600 + }, + { + "type": "stable-factory", + "address": "0x02914596cad247C86e8F7d8464D1b3DBD0CeC86E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x400d4C984779A747462e88373c3fE369EF9F5b50", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.006128410667138873, + "latestWeeklyApy": 0.051002588905713075, + "virtualPrice": 1000097455868600700 + }, + { + "type": "stable-factory", + "address": "0x26f3f26F46cBeE59d1F8860865e13Aa39e36A8c0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000446304113295400 + }, + { + "type": "stable-factory", + "address": "0xeA24Fbb49d3465770eE1b2BCF674258F9e233c75", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3175f54A354C83e8ADe950c14FA3e32fc794c0Dc", + "rawVolume": 4432.997481003803, + "volumeUSD": 4431.767704547068, + "latestDailyApy": 0.0018552331982224501, + "latestWeeklyApy": 0.5346247556240469, + "virtualPrice": 1000747661002313600 + }, + { + "type": "stable-factory", + "address": "0x5D489d45c56E40B971E601CCbc506112A2004DA2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x62b78594710474dA5f2453a24845E74bbaE664f5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7B881722f842D229bbA234f6B5E1d6f0C9BF054a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0x52EBcE664aC1C3A1a5a0568599493C5d71f4772b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.09194497014795022, + "latestWeeklyApy": 0.3089978835720597, + "virtualPrice": 1000453891396237200 + }, + { + "type": "stable-factory", + "address": "0xB00eA2Bcad321850Bc8055e7C311b05d54875CaD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.14915987349874982, + "latestWeeklyApy": 187.18167089143986, + "virtualPrice": 1497350080972425700 + }, + { + "type": "stable-factory", + "address": "0x35dd22fC3eC5a82D207BEDd8FA1F658915F97C33", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.15265623276126128, + "latestWeeklyApy": 0.513123339251198, + "virtualPrice": 1017655700044127400 + }, + { + "type": "stable-factory", + "address": "0xD0A5Ca7b57780240db17BB89773fda8F0eFCE274", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc4114E1EF346495333Fd966f65C2987e758c2189", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC288a9D9671C444D0FdB60D89d8105bdAe8c7685", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfC89b519658967fCBE1f525f1b8f4bf62d9b9018", + "rawVolume": 1.6618612741486833, + "volumeUSD": 3076.5701533954043, + "latestDailyApy": 0.2547527256007376, + "latestWeeklyApy": 1.1756258641087314, + "virtualPrice": 1001038047285078300 + }, + { + "type": "stable-factory", + "address": "0xd82C2eB10F4895CABED6EDa6eeee234bd1A9838B", + "rawVolume": 90.79418656494948, + "volumeUSD": 168126.3907902709, + "latestDailyApy": 0.10781205205041555, + "latestWeeklyApy": 0.1178584004913219, + "virtualPrice": 1000463437743846900 + }, + { + "type": "stable-factory", + "address": "0x6a9014FB802dCC5efE3b97Fd40aAa632585636D0", + "rawVolume": 276.5714336710295, + "volumeUSD": 1779.0457062132582, + "latestDailyApy": 0.5593079133198398, + "latestWeeklyApy": 0.39218607953179774, + "virtualPrice": 1002363648008612600 + }, + { + "type": "stable-factory", + "address": "0xc1F6110D42781aaccD16d716Ca7B814F2aEee18F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 2.229701781839566, + "latestWeeklyApy": 2.1592933661116254, + "virtualPrice": 1003254127852104200 + }, + { + "type": "stable-factory", + "address": "0xC73151DcA19ffF7A16aE421a9fb35455832d66d3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.0073126133828482764, + "latestWeeklyApy": 0.01207410385095642, + "virtualPrice": 1000110490415296500 + }, + { + "type": "stable-factory", + "address": "0x4029f7DcBdF6059ed80DA6856526E7510D64fA21", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD4cEdEf74fB8885b8e1dE21fBA5a2E2F33F21f58", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000007004669262800 + }, + { + "type": "stable-factory", + "address": "0x6f3388c40A7d063b5E17Cc4213B7674b5DE44C32", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000443347941228900 + }, + { + "type": "stable-factory", + "address": "0xbC90FEC043e6DF6A084E18Df9435Ee037C940B2d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.002118495521008512, + "latestWeeklyApy": 0.003497863894441622, + "virtualPrice": 1000137860337161000 + }, + { + "type": "stable-factory", + "address": "0x48C6b29893ec0320e1cd10227B8C2F26EB342a83", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5D4D6836260c116B959E7E25a1735B6C7C328f47", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0x9D1784097fFEADAe206FAF65188561abaA9093A8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x20955CB69Ae1515962177D164dfC9522feef567E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1045082681577103, + "latestWeeklyApy": 0.2760251441891848, + "virtualPrice": 1347377524252951300 + }, + { + "type": "stable-factory", + "address": "0xa4c567c662349BeC3D0fB94C4e7f85bA95E208e4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.00026173294502829236, + "virtualPrice": 1000179486421538200 + }, + { + "type": "stable-factory", + "address": "0xa089A831DEc6dfddfd54659ea42C02083f9352d6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAb3435bd2959fD713F7e50389Ff374Bfee2E3B4b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto", + "address": "0xD51a44d3FaE010294C616388b506AcdA1bfAAE46", + "rawVolume": 1711572.2882458386, + "volumeUSD": 4076533.0272705965, + "latestDailyApy": 0.2152494063418109, + "latestWeeklyApy": 0.23776940089734744, + "virtualPrice": 1032694625487683800 + }, + { + "type": "crypto", + "address": "0x9838eCcC42659FA8AA7daF2aD134b53984c9427b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.3567432657286984, + "virtualPrice": 1007904846240822900 + }, + { + "type": "crypto", + "address": "0x98a7F18d4E56Cfe84E3D081B40001B3d5bD3eB8B", + "rawVolume": 2089.475968, + "volumeUSD": 1089.8849876513325, + "latestDailyApy": 0, + "latestWeeklyApy": 0.28789568142926214, + "virtualPrice": 1003498001185354000 + }, + { + "type": "crypto", + "address": "0x8301AE4fc9c624d1D396cbDAa1ed877821D7C511", + "rawVolume": 528572550.28511715, + "volumeUSD": 310948453.46001524, + "latestDailyApy": 0.2610677902590286, + "latestWeeklyApy": 0.7693852713517746, + "virtualPrice": 538848290753078660 + }, + { + "type": "crypto", + "address": "0xB576491F1E6e5E62f1d8F26062Ee822B40B0E0d4", + "rawVolume": 37003.59494867739, + "volumeUSD": 230351.06767236086, + "latestDailyApy": 1.0458821638341442, + "latestWeeklyApy": 0.6209898172613082, + "virtualPrice": 1028348850303909900 + }, + { + "type": "crypto", + "address": "0xAdCFcf9894335dC340f6Cd182aFA45999F45Fc44", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1048048204997013600 + }, + { + "type": "crypto", + "address": "0x98638FAcf9a3865cd033F36548713183f6996122", + "rawVolume": 399757.10689322324, + "volumeUSD": 392.9933793280127, + "latestDailyApy": 0, + "latestWeeklyApy": 0.05978452744856977, + "virtualPrice": 1058156265101005400 + }, + { + "type": "crypto", + "address": "0x752eBeb79963cf0732E9c0fec72a49FD1DEfAEAC", + "rawVolume": 477400.2077327778, + "volumeUSD": 42406.568116758834, + "latestDailyApy": 0.9529607233306869, + "latestWeeklyApy": 0.498682620202584, + "virtualPrice": 1030383690720359000 + }, + { + "type": "crypto", + "address": "0xE84f5b1582BA325fDf9cE6B0c1F087ccfC924e54", + "rawVolume": 4893.914475244787, + "volumeUSD": 2593.7718269259535, + "latestDailyApy": 0.06730693940324439, + "latestWeeklyApy": 0.046396841211482354, + "virtualPrice": 1024691863951553900 + }, + { + "type": "crypto-factory", + "address": "0x03470B57B05089EE40c651dAC9E0387F1f3cb46f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6ec176b5449DD7C1a87CA8d97aceCC531C0Ca0d8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x1667954F14F5b22c703116D8d806f988B1e09018", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x941Eb6F616114e4Ecaa85377945EA306002612FE", + "rawVolume": 144.91715369740322, + "volumeUSD": 1865.5705580203778, + "latestDailyApy": 0.24518559122725936, + "latestWeeklyApy": 0.566526189701877, + "virtualPrice": 1027655022005183700 + }, + { + "type": "crypto-factory", + "address": "0x50f3752289e1456BfA505afd37B241bca23e685d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.13911815997407206, + "latestWeeklyApy": 0.0773254713284599, + "virtualPrice": 1007988073025843700 + }, + { + "type": "crypto-factory", + "address": "0x99aF0326ab1c2A68c6712a5622c1Aa8e4b35Fd57", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xC68ffDdea3a77b456227B50EbFdCC3C33bc2a8a4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x96fb2AB514CA569A1486C50339533ca4637B338B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xC26b89A667578ec7b3f11b2F98d6Fd15C07C54ba", + "rawVolume": 61.32573382127507, + "volumeUSD": 175662.1834596248, + "latestDailyApy": 0.46398230500046544, + "latestWeeklyApy": 0.3010608751109478, + "virtualPrice": 1018208929309748100 + }, + { + "type": "crypto-factory", + "address": "0x48536EC5233297C367fd0b6979B75d9270bB6B15", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002909961837184400 + }, + { + "type": "crypto-factory", + "address": "0x8b0aFa4b63a3581b731dA9D79774a3eaE63B5ABD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.13442196654773753, + "virtualPrice": 1204639423636725500 + }, + { + "type": "crypto-factory", + "address": "0xfB8814D005C5f32874391e888da6eB2fE7a27902", + "rawVolume": 5001.558981343018, + "volumeUSD": 3495.027186950358, + "latestDailyApy": 0.00216249866629159, + "latestWeeklyApy": 0.11789499832155492, + "virtualPrice": 1012234870093947800 + }, + { + "type": "crypto-factory", + "address": "0xE07BDe9Eb53DEFfa979daE36882014B758111a78", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002077309787712100 + }, + { + "type": "crypto-factory", + "address": "0xB6d9b32407BfA562D9211acDba2631a46c850956", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000114609388775600 + }, + { + "type": "crypto-factory", + "address": "0x1dFF955CdDD55fba58Db3CD658F9E3E3C31851eb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.2092974933954455, + "latestWeeklyApy": 1.2092974933954455, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xDaD60C5B748306BA5a0c9a3c3482A8D1153DAd2a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000633615836084100 + }, + { + "type": "crypto-factory", + "address": "0xd8C49617e6A2C7584Ddbeab652368ee84954BF5c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1013261520785966600 + }, + { + "type": "crypto-factory", + "address": "0xF43b15Ab692fDe1F9c24a9FCE700AdCC809D5391", + "rawVolume": 0.5186098457230764, + "volumeUSD": 66.59104541542924, + "latestDailyApy": 0, + "latestWeeklyApy": 0.03593194325131055, + "virtualPrice": 1055658176855754500 + }, + { + "type": "crypto-factory", + "address": "0xd658A338613198204DCa1143Ac3F01A722b5d94A", + "rawVolume": 22094.692422486143, + "volumeUSD": 138400.95815423704, + "latestDailyApy": 0.029691698284572965, + "latestWeeklyApy": 0.15800079608327966, + "virtualPrice": 1006030381185665900 + }, + { + "type": "crypto-factory", + "address": "0xa498B08ca3C109e4EbC7Ff01422B6769EAEf16EF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x365901dB5Adb4c789801f19D5F1F46c574783aD6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6ec38b3228251a0C5D491Faf66858e2E23d7728B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.05610081718885329, + "virtualPrice": 1012114744030637300 + }, + { + "type": "crypto-factory", + "address": "0x9a22CDB1CA1cdd2371cD5BB5199564C4E89465eb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1031783124572619400 + }, + { + "type": "crypto-factory", + "address": "0x80aa1a80a30055DAA084E599836532F3e58c95E2", + "rawVolume": 4022.6359217523127, + "volumeUSD": 1793.3283380211863, + "latestDailyApy": 0.26684127437457406, + "latestWeeklyApy": 4.160952538972484, + "virtualPrice": 1017873615843742300 + }, + { + "type": "crypto-factory", + "address": "0x90Ce3285a9cce2D36149F12df2C1e357Af304A1D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xbF9702efefe1303A61b7c944b5741b773DD930a7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9C6751593A1424108F53E5ad6754940FEDAA5bC0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000079458060129500 + }, + { + "type": "crypto-factory", + "address": "0x1570af3dF649Fc74872c5B8F280A162a3bdD4EB6", + "rawVolume": 51137.07189394318, + "volumeUSD": 53089.46758742254, + "latestDailyApy": 0.06675351104967753, + "latestWeeklyApy": 0.10190308368029921, + "virtualPrice": 1007611723338673000 + }, + { + "type": "crypto-factory", + "address": "0x5b692073F141C31384faE55856CfB6CBfFE91E60", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1031365268217694200 + }, + { + "type": "crypto-factory", + "address": "0x6Df0D77F0496CE44e72D695943950D8641fcA5Cf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1004728241381116900 + }, + { + "type": "crypto-factory", + "address": "0xAcCe4Fe9Ce2A6FE9af83e7CF321a3fF7675e0AB6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.5917295296662406, + "virtualPrice": 1027652990674024100 + }, + { + "type": "crypto-factory", + "address": "0xEB0265938c1190Ab4E3E1f6583bC956dF47C0F93", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1005726381759399000 + }, + { + "type": "crypto-factory", + "address": "0xef04f337fCB2ea220B6e8dB5eDbE2D774837581c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 14.673042191448094, + "virtualPrice": 1045664071720694100 + }, + { + "type": "crypto-factory", + "address": "0x6b234F354edA8fAe082BE20DCf790Fd886B42340", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xA6B28989B81B2Fe4eC03fde324DE1A99ae4366E4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x39567Db64F0b25Db2C35Fc7A4f60c3C5258e4654", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x751D3feFFed0890B76E9b86476CFEEAA1FcdA73D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x3211C6cBeF1429da3D0d58494938299C92Ad5860", + "rawVolume": 792171.0271680171, + "volumeUSD": 704218.1599417755, + "latestDailyApy": 0.3185368269219113, + "latestWeeklyApy": 1.4546811459773767, + "virtualPrice": 1039539067887716000 + }, + { + "type": "crypto-factory", + "address": "0x75A6787C7EE60424358B449B539A8b774c9B4862", + "rawVolume": 37689.43468268511, + "volumeUSD": 4072.7909424161007, + "latestDailyApy": 1.2599644166509716, + "latestWeeklyApy": 0.38019302514462616, + "virtualPrice": 1005975421691972000 + }, + { + "type": "crypto-factory", + "address": "0x21410232B484136404911780bC32756D5d1a9Fa9", + "rawVolume": 95.30199226647976, + "volumeUSD": 9991.76252351481, + "latestDailyApy": 0.07162474206763303, + "latestWeeklyApy": 0.04329614137470461, + "virtualPrice": 1011269820759148400 + }, + { + "type": "crypto-factory", + "address": "0x86Cf48e9735F84d3311141e8941b2494Fb4B8142", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xfE4A08f22FE65759Ba91dB2E2CADa09B4415B0d7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1035349034758253400 + }, + { + "type": "crypto-factory", + "address": "0x7472764C28f843bA246F294C44DE9456911A3454", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7E050cf658777cc1Da4a4508E79d71859044B60E", + "rawVolume": 14771426.797096761, + "volumeUSD": 15383.900664088087, + "latestDailyApy": 0.20224680011466933, + "latestWeeklyApy": 0.5992441181630781, + "virtualPrice": 1020957887104116500 + }, + { + "type": "crypto-factory", + "address": "0x782115c863A05abF8795dF377D89AAd1AAdF4Dfa", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1058607567892588700 + }, + { + "type": "crypto-factory", + "address": "0x838af967537350D2C44ABB8c010E49E32673ab94", + "rawVolume": 27123.413847900614, + "volumeUSD": 65561.28976430105, + "latestDailyApy": 1.185879530907763, + "latestWeeklyApy": 0.5703426043256687, + "virtualPrice": 1040919021491734800 + }, + { + "type": "crypto-factory", + "address": "0x595146ED98c81Dde9bD23d0c2Ab5b807C7Fe2D9f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x62d1d9065b4C78964040b640ab404D86D8f68263", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xf861483fa7E511fbc37487D91B6FAa803aF5d37c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0001445807131128518, + "virtualPrice": 1002102753558478500 + }, + { + "type": "crypto-factory", + "address": "0xB2E113a6B8edeA086A44B1509013C4Fc69eC4bf0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xD0a1D2a9350824516ae8729b8311557BA7E55BFF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1029879877742204800 + }, + { + "type": "crypto-factory", + "address": "0x5D898FD41875b14c1781fb497AeCAb8E9B24dfC9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1021590988058838800 + }, + { + "type": "crypto-factory", + "address": "0x4535913573D299A6372ca43b90aA6Be1CF68f779", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0009391250272994256, + "virtualPrice": 1009013373269731000 + }, + { + "type": "crypto-factory", + "address": "0x3c42B0f384D2912661C940d46cfFE1CD10F1c66F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x7F787210c83012FCA364aE79aD8Fc26641c6fbE5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xe0e970a99bc4F53804D8145beBBc7eBc9422Ba7F", + "rawVolume": 6070.177771188016, + "volumeUSD": 7455.518029391681, + "latestDailyApy": 0.25847485135988, + "latestWeeklyApy": 0.44721663377942367, + "virtualPrice": 1004413555735084200 + }, + { + "type": "crypto-factory", + "address": "0xd434eaf67bbA1903F61CdD3EDE6700caC74a5fF2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6525e7E2E8450741Ab97BD3948BFa47878F83ec6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7D99469fB3A530136ec0Ab6981D64bc9fF81aD04", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xbfCa1a72edd92FFf61a8c88f61D4e64E99232b4b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7F2aF2c7BFDAD063fF01DcEc077a216d95A0A944", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xA148BD19E26Ff9604f6A608E22BFb7B772D0d1A3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000076594494606300 + }, + { + "type": "crypto-factory", + "address": "0xF3456E8061461e144b3f252E69DcD5b6070fdEE0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1013798609710586000 + }, + { + "type": "crypto-factory", + "address": "0xFD484A99d21CA118f22871134f467B1ca3F842Aa", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x5114f86027d4c9a509Cba072B8135A171402C6d5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x6E77889Ff348A16547cABa3Ce011cB120Ed73bFc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1003480146826478300 + }, + { + "type": "crypto-factory", + "address": "0x95f3672a418230c5664b7154Dfce0ACfa7EEd68D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1030734706241851600 + }, + { + "type": "crypto-factory", + "address": "0xEc1F6Df37B16432E520942Affe28149bAdc5bC5e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xfCE1B5447a3DB7e18352e8ae4bCD780029012383", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xdDBDCEBb989B1ef804338d6c9a902f91c2738936", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001525240888420100 + }, + { + "type": "crypto-factory", + "address": "0x039FD59541b3989C7A1E9278431038B3B6BA5F43", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xc12A73c46D49Fa0d7433C90291BC8D1A9EAe7B23", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9bFb082f2dd5d63907aFa33Dbb8F9c0BCd5C2333", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x840cBF6861137624E60380d5e915619885c5AA95", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xd3301B7CAA76f932816a6Fc7Ef0b673238e217ad", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xB2E2536821521174a168eda7Be78a6c70ea6E5fA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x316D2606cE036Ec0E69A11432A870a4ec66AdE96", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xC78d84Ee5D970227f988a2e2dC0A4a945163bCB9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xb2c248C0B0DB7d28dfa0123438B40Bb31FB8AA05", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001003664654114200 + }, + { + "type": "crypto-factory", + "address": "0x799D141e83D88996C48B98A4f8EB3D96AB422DD3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0015398012700007513, + "virtualPrice": 1000095086424808100 + }, + { + "type": "crypto-factory", + "address": "0x383aD525211B8A1A9c13532CC021773052b2F4f8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x79cB6a84FbEC1FE2d66B705a1e7f6482C2993049", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x91d9d17EFD378f38a48122AE6Ec01B2E83d1Ac98", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x118629329731ce1FF01f9401212C53939F8A9EEB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xBD917239EC067A6aF82AABb6B45DAd3d09F4EFD8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6e314039f4C56000F4ebb3a7854A84cC6225Fb92", + "rawVolume": 94.37775720291596, + "volumeUSD": 12650.109645594548, + "latestDailyApy": 0.20050479605742133, + "latestWeeklyApy": 0.40191897245112074, + "virtualPrice": 1016007855432827500 + }, + { + "type": "crypto-factory", + "address": "0x337ca39842C448030196693f3433332fF1CF3E41", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x0d1c65B28190cB88f328D2051c524A5c63d10EB5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x162B4Deefc73a5277b09Bd7A02D25Da73D66183D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xc58fDB8A50AB921A73535656A7c69387Dd863ff6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000505045760896400 + }, + { + "type": "crypto-factory", + "address": "0xD4e2fdC354c5DFfb865798Ca98c2b9d5382F687C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1000000, + "latestWeeklyApy": 1796.8714493587352, + "virtualPrice": 7575487981391889000 + }, + { + "type": "crypto-factory", + "address": "0x5FAE7E604FC3e24fd43A72867ceBaC94c65b404A", + "rawVolume": 46.07969011722454, + "volumeUSD": 87257.46898636999, + "latestDailyApy": 1.4989387730947223, + "latestWeeklyApy": 1.5209821464880102, + "virtualPrice": 1010977660242178600 + }, + { + "type": "crypto-factory", + "address": "0x0CF8327b20a159f0CD99214c5305D49E9D8207F0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x58257e4291F95165184b4beA7793a1d6F8e7b627", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1003874042205311200 + }, + { + "type": "crypto-factory", + "address": "0x21d158d95C2e150e144c36FC64E3653B8D6c6267", + "rawVolume": 6565.214170731721, + "volumeUSD": 6602.403102010902, + "latestDailyApy": 0.506363857318215, + "latestWeeklyApy": 0.5264551717098831, + "virtualPrice": 1011431531559402800 + }, + { + "type": "crypto-factory", + "address": "0xBEc570d92AFB7fFc553bdD9d4B4638121000b10D", + "rawVolume": 3820.975404611525, + "volumeUSD": 5780.622087098942, + "latestDailyApy": 0.6949927296039382, + "latestWeeklyApy": 0.3582529448580285, + "virtualPrice": 1009116096970967700 + }, + { + "type": "crypto-factory", + "address": "0x4149d1038575CE235E03E03B39487a80FD709D31", + "rawVolume": 13166.571204129315, + "volumeUSD": 24564.13442040453, + "latestDailyApy": 0.15001310110498434, + "latestWeeklyApy": 0.07484704746292259, + "virtualPrice": 1009414319999992000 + }, + { + "type": "crypto-factory", + "address": "0x31c325A01861c7dBd331a9270296a31296D797A0", + "rawVolume": 8633.033179466138, + "volumeUSD": 6251.333273444743, + "latestDailyApy": 0.16468934101487864, + "latestWeeklyApy": 0.2886826450436031, + "virtualPrice": 1016427187738146300 + }, + { + "type": "crypto-factory", + "address": "0xd9f907f7F84CbB0Af85C7829922fd692339147f9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x75A1FdA374Fdb4E47d703d0282E94c87119fa46e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x611a95bf3cc0EF593f22c4E4D8EB4d6C937E006C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000106298858711700 + }, + { + "type": "crypto-factory", + "address": "0x13B876C26Ad6d21cb87AE459EaF6d7A1b788A113", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.06983323655982421, + "virtualPrice": 1004311765055366900 + }, + { + "type": "crypto-factory", + "address": "0x4D19E7fD118FD751fEa7c0324D7E7b0A3D05EbA4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000059516631724300 + }, + { + "type": "crypto-factory", + "address": "0x825722AF244432319C1E32b6b18AdED2d4A014Df", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x02dFA5C793A9CE4d767a86259245A162a57f2dB4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1008360552638094100 + }, + { + "type": "crypto-factory", + "address": "0x27A8697fBD2ed137d88E74132a5558FA43656175", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0xC7a87b0f491C1A043eb5315281163556B7F36f7f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x167dE3887eDEbE5012544373C5871481bD95Cc4e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000095281251434900 + }, + { + "type": "crypto-factory", + "address": "0x1631D0E588D475CEe4be0f51b7410DaaAaBD7034", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002025416312836500 + }, + { + "type": "crypto-factory", + "address": "0x372463c1dFE3A9c269C2C5Eb76A86021C637D0f4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x5538e48bfe47749D2540D3cBe83fD50465bcb6c3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x5FBa071ad473265df860271998e45FDb3d3E5812", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x96A3F551c99797998dC33E2D816D567db61EE1c2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000214086996976800 + }, + { + "type": "crypto-factory", + "address": "0xF039050dC36fD59Ff1117B14BFdFf92dFA9dE9Fc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0xb49B238aB6106216Dc26854ed3a009EAc1C419A9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xFEB0784F5D0940686143b3A025Af731Ee6A81197", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1005133820128698600 + }, + { + "type": "crypto-factory", + "address": "0xDcb11E81C8B8a1e06BF4b50d4F6f3bb31f7478C3", + "rawVolume": 37037.2101175526, + "volumeUSD": 20315.84078047024, + "latestDailyApy": 0.6993948814141282, + "latestWeeklyApy": 0.2125012552704142, + "virtualPrice": 1008228170979523000 + }, + { + "type": "crypto-factory", + "address": "0xBCAA09F2873F87aB4bf3A6fE97991f4bCC959e7e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000069940727595400 + }, + { + "type": "crypto-factory", + "address": "0x6d91A9Cf0deA0cd5BCb676eb4B1F11b6DCb44188", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7f87a8b46A662131b87D29B2316B2d9CBD7e3B02", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xec5ffef96c3EdEdE587DB2efA3ab4Deec414cE8F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x52F05C70d86662204C7222C35000747b177C393a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x0be1596aA8000Ff283807F276CED12c21297cf8f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9685Aab3b578c55Ce206A312095Fc1fa73609E38", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xB91eBF5f6a79a43927f7FA0548409c7821542d0C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9D377ec646C10E99E08B5200F651f5a743E3EA78", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xA0c7caD1D6dDb3EB2949243a0F720F4A291367Dd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xAE2029f60DBdf41D14c8c0290f2B68E164360419", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xBE084cf7dB8fDfD6f17C041F958AbCcaF8C76603", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x4885aAa80e0Ed42c5c76ACf523Adaf5066FD011F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x141Be5d90C27Dc5C9199a57cb828Ca3CBD2C2D94", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xF4A3cca34470b5Ba21E2bb1eD365ACf68B4d4598", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000138800492083000 + }, + { + "type": "crypto-factory", + "address": "0x9A7168Ea321121A8FaF52147fC596b73e07Ab8a3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9735d6530b0609bA8340Ecf61FEaCD922468c1e1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x74ED5d42203806c8CDCf2F04Ca5F60DC777b901c", + "rawVolume": 2736.2492220462395, + "volumeUSD": 5954.152556328509, + "latestDailyApy": 0, + "latestWeeklyApy": 0.026758573127971808, + "virtualPrice": 1005409945399212000 + }, + { + "type": "crypto-factory", + "address": "0x3e3C6c7db23cdDEF80B694679aaF1bCd9517D0Ae", + "rawVolume": 2193.772085560664, + "volumeUSD": 1136.6046733031485, + "latestDailyApy": 0, + "latestWeeklyApy": 0.06952622425133725, + "virtualPrice": 1003428598468915100 + }, + { + "type": "crypto-factory", + "address": "0x6a6283aB6e31C2AeC3fA08697A8F806b740660b2", + "rawVolume": 2874535.2739251284, + "volumeUSD": 12704.272630304464, + "latestDailyApy": 0.1067480077559857, + "latestWeeklyApy": 0.4398160136245277, + "virtualPrice": 1021354189401678600 + }, + { + "type": "crypto-factory", + "address": "0x656111Ca1e66678E7d300d8C4ffa4E4D21cECC55", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9E73249aA5C3dc4223549bDf154215b997e0cFec", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xc170ECB895b28a7eff0109f8C072aE742B1Dcb69", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x342D1C4Aa76EA6F5E5871b7f11A019a0eB713A4f", + "rawVolume": 57.239801633658864, + "volumeUSD": 495.161371397257, + "latestDailyApy": 0.31488802485621914, + "latestWeeklyApy": 0.36989601831940444, + "virtualPrice": 1018505398989500900 + }, + { + "type": "crypto-factory", + "address": "0xaeB6f2ABE64EE5ed210e8AE33B1F0f5E4B3e28Fc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x96f34Bb82fcA57e475e6ad218b0dd0C5c78DF423", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1008200366169646100 + }, + { + "type": "crypto-factory", + "address": "0x17374bdbcb79aE20CB947640915316d379a7f222", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xE661672521C77ca87DBb2eac816d2ccF86197281", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x19a0CA9a0dc2A5034F47DcC164169Cffd7ed2410", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000146721723174400 + }, + { + "type": "crypto-factory", + "address": "0x1628E0A42682570c815da52480734a8c2A2Ca2DD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1004213360860851200 + }, + { + "type": "crypto-factory", + "address": "0x4E6706889d519ba6e6CED330D76582f875DF3C9c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1007863876954532900 + }, + { + "type": "crypto-factory", + "address": "0x29b2178F5f9FB4f775A2f1a7fEA685FFbA0fAe32", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1003931438670981400 + }, + { + "type": "crypto-factory", + "address": "0xD304918b2Ef48a1184918e575CED08d3d04c37ad", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7193d845f8991E27FfDCE54E78137dE036A6f743", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xf2f12B364F614925aB8E2C8BFc606edB9282Ba09", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.07736976796088868, + "virtualPrice": 1034475412714046500 + }, + { + "type": "crypto-factory", + "address": "0xE6BbAf0B55ae430354B87a3f592dD5c8AD7A5E79", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xf4E7c1E5a21F68df8d6a331aFFBEEBc313eD24d1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x3cc1b5DCe81A810080890FB8AdAd48F8eaa8c210", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xe01A9eCdb0AAabE2F12A25a0d289480DEBF09e89", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x81F08b6B325B7266190bbDe531311F31bB3D82De", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x808dB6E464279C6A77a1164E0b34d64Bd6fB526E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.043744121078459486, + "latestWeeklyApy": 0.05753160393875412, + "virtualPrice": 1008154433962450000 + }, + { + "type": "crypto-factory", + "address": "0xFc1e8bf3E81383Ef07Be24c3FD146745719DE48D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.558339273447328, + "latestWeeklyApy": 0.11860881944030233, + "virtualPrice": 1002692096892060900 + }, + { + "type": "crypto-factory", + "address": "0x6575Ad173801f2d58961B3d7F3628c72346eA84a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xeE0dcAf26aA271Ff18bb9B9b282620A7Ce79F6BA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x867fe27FC2462cff8890B54DfD64E6d42a9D1aC8", + "rawVolume": 79282.87389902788, + "volumeUSD": 70512.70759259527, + "latestDailyApy": 0.38244633488155877, + "latestWeeklyApy": 0.9145132919049059, + "virtualPrice": 1008466316270091100 + }, + { + "type": "crypto-factory", + "address": "0x9488317BaD789eF9AE5b70D3Ef2fC12dF717Fba2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9730e45Ca84076C0a9DF80A4f2058C8379eA3eCE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x3767fF3d26B7f9FB1870AE7Ebfc7e05f585EecFe", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xD0A7a9c7F2C148DC5399d89220345B50D6d13Cc0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x5A784386DBe8E9188b7262e85dCAF912bcDDa441", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7dCEaF64115ed0E3D5B3E18d0896004EAeb58B4B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xE94A145A797622FE38A35036729229fc6B3132Cb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xc77103e44914A9e5E30B9F58cD48e990b22Fb587", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x450a0975DbF787Df053d20FA3B57e5b362960102", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7Dc87E4e57C0ca6060374E0cE2a1cffB69ebC45A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xfAf83F9D84FAF25ed4ecbc1857f6AAdC3C1977C3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x1A8E46721F754660dC8b2EF623e7408856A63caC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x740f335D454Ad0dB55F88c02Cccd74Ed84F72A3f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x3272C5D11644deBB2e9d04C302796EbE8DF35457", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x970cf34837Aa1Ff611410533b69d708cba70739D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x183F03C8ce2A24F388A4059aDEdd05C902650174", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x92971A40Fa0F6Dd573a0f996b62De497eCC4ef6c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x2F0e2d1023Fd3757aA58be7020b0FC58C6A45187", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000272097486151700 + }, + { + "type": "crypto-factory", + "address": "0x49EAF5E4aC618c968dDCF588C000302F9bC3312D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1025287318002806700 + }, + { + "type": "crypto-factory", + "address": "0x3991d59428A8f9F5C13526D92d58B23DA14230A0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000265595438708500 + }, + { + "type": "crypto-factory", + "address": "0x72D6658e562739267994BB16b952E543f0F92281", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000214747230178000 + }, + { + "type": "crypto-factory", + "address": "0x54888c0859A93E6ff679e4F9705E75BBB9557057", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6bfE880Ed1d639bF80167b93cc9c56a39C1Ba2dC", + "rawVolume": 312.6037838082133, + "volumeUSD": 426.5607604873686, + "latestDailyApy": 0.029351514262287992, + "latestWeeklyApy": 0.1303529696142558, + "virtualPrice": 1003713441953672400 + }, + { + "type": "crypto-factory", + "address": "0xB4018CB02E264C3FCfe0f21A1F5cfbCAAba9F61F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002019973295012100 + }, + { + "type": "crypto-factory", + "address": "0x7878A141103d93cAc0D1010C48f999975B347138", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000044048825160600 + }, + { + "type": "crypto-factory", + "address": "0x68a39B6EB2f9AD3A5E58808CDC4907dA260E44C8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000011447526231800 + }, + { + "type": "crypto-factory", + "address": "0xEd46F331F85BaD38bD99B60938C700c1a92Fd940", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000272022744955300 + }, + { + "type": "crypto-factory", + "address": "0xa246eD2954539f2eAa8e1FB72E02637f2a402AB7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xd18712370F840b1563D85eA6bD221f53d766ffA8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000015887819545200 + }, + { + "type": "crypto-factory", + "address": "0x9F13078A313cAf45146BBED973115dFB5De1D270", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000120023277585000 + }, + { + "type": "crypto-factory", + "address": "0x0E9B5B092caD6F1c5E6bc7f89Ffe1abb5c95F1C2", + "rawVolume": 1916262.8255838468, + "volumeUSD": 22114.519187959417, + "latestDailyApy": 0.7336388739200395, + "latestWeeklyApy": 0.7228581550101421, + "virtualPrice": 1015956260273878500 + }, + { + "type": "crypto-factory", + "address": "0x6868Eb3fcefe1684486F601d2dC10Bbf0C4EEB8b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x53DfCF5Ca1E1D5311Db29f585D56A9A9dcC2441b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x51Bcba35e5fa277592Cea83Ad14408A0963b86f8", + "rawVolume": 8030.779378429327, + "volumeUSD": 277.6563687713359, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001182438976821200 + }, + { + "type": "crypto-factory", + "address": "0x4CC9385d9909d2Bf529A4c1E847Dc4eE01F4927A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.07809036270924885, + "latestWeeklyApy": 0.011121479153874958, + "virtualPrice": 1000308075546037600 + }, + { + "type": "crypto-factory", + "address": "0x675993fB30a2d58Cd4D29d15F89B4Be9ca8765AE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6C5Acd4c044deFe22fEC287d1362B1aF5ED16f7a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x514747fCaeC6a72d1dC5fcc1CBB6dd21FBaD5427", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x0F74dc493F1076247aefD5ba8Da677440D3Ba8a4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x593807B540d2584Fd16433dc609F869421577173", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x50e29cD32BEdf8ADF6C58cF0f8F2c64CB98C62ac", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000010263286138600 + }, + { + "type": "crypto-factory", + "address": "0xE02D418e3d522611e88ce6070A9037eCf0b16073", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9409280DC1e6D33AB7A8C6EC03e5763FB61772B5", + "rawVolume": 4912.521752798721, + "volumeUSD": 18043.4994020168, + "latestDailyApy": 0.03881192741785888, + "latestWeeklyApy": 0.5433653884042045, + "virtualPrice": 1013433559803886700 + }, + { + "type": "crypto-factory", + "address": "0xB5ae2A6b084f59ff9EF6b2E79302A1878306D58c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.16950839684686247, + "latestWeeklyApy": 1.042730255885349, + "virtualPrice": 1005152331608905500 + }, + { + "type": "crypto-factory", + "address": "0x1440AE2288345a78e753D0b1D679880031BcE653", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x17cd2d7C4DDf69897cc00E2943532C27259257c5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x098b69922A18639457B8490DB051B8854D33d2F3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xBDFAe7D2cF2E69E27b75a5287ECD3808F62B5a76", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.16453306514552235, + "latestWeeklyApy": 1.1532139210077563, + "virtualPrice": 1002115926782208500 + }, + { + "type": "crypto-factory", + "address": "0x0f3159811670c117c372428D4E69AC32325e4D0F", + "rawVolume": 221.41854765383567, + "volumeUSD": 428943.53085247, + "latestDailyApy": 1.868998929557988, + "latestWeeklyApy": 2.237462956877392, + "virtualPrice": 1017552392779272700 + }, + { + "type": "crypto-factory", + "address": "0xCa6cF273AB17073248654363Aa00b102540aa5Ea", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xEcB16535477F9cc6Db8D8Ea70b36D5020499d91c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002574301514649100 + }, + { + "type": "crypto-factory", + "address": "0x408CbC416DBF4168143B011bF5C297DA82cE03ed", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9a81f5a6Ea7e60632f659F3f4e772Ba977d80Bd5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.010135552511725265, + "virtualPrice": 1003879405832692400 + }, + { + "type": "crypto-factory", + "address": "0x5133Da6Ba0474368Ad0398d953c8D31c1B75b82B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000750142629950000 + }, + { + "type": "crypto-factory", + "address": "0x442F37cfD85D3f35e576AD7D63bBa7Bb36fCFe4a", + "rawVolume": 14.190888435430102, + "volumeUSD": 8.267589674509006, + "latestDailyApy": 0.33475062398791167, + "latestWeeklyApy": 0.04762219119027744, + "virtualPrice": 1014168817815293400 + }, + { + "type": "crypto-factory", + "address": "0x6E855d08f2984516c40C4246A385bA4A2eDFcd0A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000494599876268500 + }, + { + "type": "crypto-factory", + "address": "0xe7c6E0A739021CdbA7aAC21b4B728779EeF974D9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.4377346219038558, + "latestWeeklyApy": 1.5106881112959472, + "virtualPrice": 1000211874669909100 + }, + { + "type": "crypto-factory", + "address": "0x41eA4045de2676727883aa0B4E43D7e32261f559", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.45020384931249, + "latestWeeklyApy": 1.4655552064580777, + "virtualPrice": 1000543653199660200 + }, + { + "type": "crypto-factory", + "address": "0x73069892f6750CCaaAbabaDC54b6b6b36B3A057D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.3493007216606974, + "latestWeeklyApy": 1.388813068698615, + "virtualPrice": 1000627835465784000 + }, + { + "type": "crypto-factory", + "address": "0xFdaD22c8f63B32ACa0d273D828875FcCDa3880E1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x1DF0Bae5add689D6BE57aC6fd18b1e4a27B4498B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x2AF0a09b3421240f32953FffB13D2D2B8d24fbaE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001281694071017600 + }, + { + "type": "crypto-factory", + "address": "0x4B036A6769D5f1abb5A249a489348389C2907334", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xf514a54693Db2f3b4C43f78088d361b3F3A317A9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000034197445092600 + }, + { + "type": "crypto-factory", + "address": "0x7ce013171826FeB235Ed3fD4BA0171e64ac97D2b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x3D2253FA44C38d9870539dc2856286AA1638467f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9db63040dbdEe832D0824220fc47361674058eF1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xaBf03448f97708F06Fb1CaA5B58a30247f024D19", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x72725C0C879489986D213A9A6D2116dE45624c1c", + "rawVolume": 7199.318651196293, + "volumeUSD": 11143.812284394991, + "latestDailyApy": 3.9898857746141436, + "latestWeeklyApy": 2.2024212871002202, + "virtualPrice": 1004358333285823600 + }, + { + "type": "crypto-factory", + "address": "0x56e9BaC9e21b9390b3344320b33f7AbE776eD35F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xf5Ed6024c08fca91F85A20aD364a4F3994f3ecae", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x056ef502C1Fc5335172bc95EC4cAE16C2eB9b5b6", + "rawVolume": 9060.735444140806, + "volumeUSD": 699.6288406332085, + "latestDailyApy": 0.012857728364901178, + "latestWeeklyApy": 0.06813387812436567, + "virtualPrice": 1000344557964029200 + }, + { + "type": "crypto-factory", + "address": "0x47D5E1679Fe5f0D9f0A657c6715924e33Ce05093", + "rawVolume": 3742.608858601752, + "volumeUSD": 11608.533618972146, + "latestDailyApy": 0.32916878301632035, + "latestWeeklyApy": 0.09323674197674325, + "virtualPrice": 1001131065032986800 + }, + { + "type": "crypto-factory", + "address": "0x5ac4fceE123dcaDfAe22bc814c4Cc72b96c93F38", + "rawVolume": 16614.941994430883, + "volumeUSD": 12210.989988072777, + "latestDailyApy": 0.0014419715721469828, + "latestWeeklyApy": 0.11700959780587272, + "virtualPrice": 1004659715097702300 + }, + { + "type": "crypto-factory", + "address": "0xAF4264916B467e2c9C8aCF07Acc22b9EDdDaDF33", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.030338020927334064, + "virtualPrice": 1003655265250552300 + }, + { + "type": "crypto-factory", + "address": "0x5105a9E847965421a8C81cA33Ea682948694A6F4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000012045210919000 + }, + { + "type": "crypto-factory", + "address": "0x7bbE7a17E501BB6542e975D8A163950149487fa3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1006298043196510700 + }, + { + "type": "crypto-factory", + "address": "0x0Db0A66daF641f812493C556A1e0f97379766276", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7E650c700b0801e717B352E55a582AFd928aa094", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.2649969297533916, + "latestWeeklyApy": 0.28323620873345057, + "virtualPrice": 1000645789459435800 + }, + { + "type": "crypto-factory", + "address": "0x61FDdD212F02F46fEa58DDfE3BE92D07B1249bCC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x87Ae54eA83B460B3819932595C090c23e03A99b4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xf5d5305790c1af08e9dF44b30A1afe56cCda72df", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x18a315D2ac23eB39F0C1B0085EdfF555D484C58A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x1cDF9650cd7c47dCfe63159924440E7A439B91f4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x880F2fB3704f1875361DE6ee59629c6c6497a5E3", + "rawVolume": 153331.68372649726, + "volumeUSD": 77698.72852651219, + "latestDailyApy": 0.048937613233901445, + "latestWeeklyApy": 0.06495985381305136, + "virtualPrice": 1001860611087392900 + }, + { + "type": "crypto-factory", + "address": "0x67e0bDbe0A2C5999A60D048f50e794218056b767", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.14842846020293177, + "virtualPrice": 1001139604652346000 + }, + { + "type": "crypto-factory", + "address": "0x5d859f3488ab3f1B2f19D06CEdD161A7db272494", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000009473773962100 + }, + { + "type": "crypto-factory", + "address": "0x38c60BcCa6AE0FDBD34466Fe8999BE15ee4e699e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x02ac4107893Ba767177D69851dcD87BedC63aB22", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x02498De890c66fA387E86E04d75AdaB9df4802F6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000208051751569800 + }, + { + "type": "crypto-factory", + "address": "0x8a8434A5952aC2CF4927bbEa3ace255c6dd165CD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.005165121255901184, + "virtualPrice": 1000142074814923400 + }, + { + "type": "crypto-factory", + "address": "0x5e431F70690475bADbB88E16D3a49ED8c4434e09", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x68cAa209c3b0E73Cc3e9CCF8d40978b07fbFFA96", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x44550B7D4c045929eD6f77c466852553A1fcba22", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7fb53345f1B21aB5d9510ADB38F7d3590BE6364b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.02447118000286075, + "virtualPrice": 1000170356671436700 + }, + { + "type": "crypto-factory", + "address": "0x031af153eFbc75a88110CB3b94eafBEC847a526f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x58fF1F6b706D01A3F3129eaEb04B90133450cA9A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xDe90bA7bb025F435B2A6f984Ef6Ea76D7c8BC853", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x8dEC9CE89b1f6ca1A5C546bA72317F6A49828D81", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xb1d9b4574077eb6ed75B791c7d090Ea1F8c93474", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x04e7a76A910A499B8BBCAc18411aE68454AE348b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x06bd8DC3FFC8E8CFACEB9c967A3132e5B944246b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7e89315262217144BDe231c3a08A0361566599c4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xB0973f4FB4e1280D6bDDBa5b18aE00576a6E78f4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1010904273411065700 + }, + { + "type": "crypto-factory", + "address": "0x9304BD73eC6Aad8236D91E88f67eC1EB80658DbA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7a62Acf78407b4D02281c7c856E43fA24086Bf92", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x157cB788D3a40203A8f98696e7CDcb717befC796", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x632D58Ecd622322482d8BE083E58F43d2d8f3e8C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xe2cf543C6E59EA683DA0c94be5Ec1088856DAff7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7f541FCAc13094b29eeD27FeA94aa008e91D9f6d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x67526Bd70bF857aBf2cA19A9f16E900aA27Eef08", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x0CE863FBB67A6a532323D1f81B8f0FCD5f5099FF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001665519177868900 + }, + { + "type": "crypto-factory", + "address": "0x1ebe895af819Eb97A008269C14422db82246A450", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001287533960704000 + }, + { + "type": "crypto-factory", + "address": "0x53E4a076b62667E8C8Aae13b8edC793e9a5F3FeD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xA551F34fc641f76F17498840C0ABFEC608410065", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1017211932408523500 + }, + { + "type": "crypto-factory", + "address": "0x3081cfFCAc989cb6F3Af01DC5BC309D70F6C2884", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1003498021199150000 + }, + { + "type": "crypto-factory", + "address": "0xc878DD87D598Ece5D4900B5933C6a656227C528d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x02D7f419D731F718bDB22a3b03874C600bEC3a40", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1010633308689150500 + }, + { + "type": "crypto-factory", + "address": "0xd6f6fA524D4C9f7a5cBC8Fb9145a70d8D7Ed6073", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1003863042285631100 + }, + { + "type": "crypto-factory", + "address": "0x84b209Ab30081322F124A0e3C96332F66652F9a9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0xAceeA24a09209a8e240C2751845F02627A201b5c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000805900791394700 + }, + { + "type": "crypto-factory", + "address": "0xBce97FE1D9ad16a633214e60182A850bD102C70a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x526aFb67A479D4e9b0154D4Cc1a44D47df91bf3e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xB581299623520687B483CCFfd04BEe52e94B82A6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000021290432788000 + }, + { + "type": "crypto-factory", + "address": "0xAF693adE4596d45ac294ceab920Df0943afB54D9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002240328150823000 + }, + { + "type": "crypto-factory", + "address": "0x96421Bb962c47fE5CF784161f850F83d77919996", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000022586225779800 + }, + { + "type": "crypto-factory", + "address": "0xcc659BBEA1E1580e9a9C89d8f268101F67A881E9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000014596811077800 + }, + { + "type": "crypto-factory", + "address": "0x7D00230379B18eBDCaf0104DA2bB59556dFE3CA4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000030273779397100 + }, + { + "type": "crypto-factory", + "address": "0x0D8bc03C14a135783B135d51b256997dEf69175C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xbdB3dfE9CC89739fC47Dcad0ef689627eaec7B1A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x317412f33a4cb32B32CC8011F3D22accb599C520", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x50AC42817A6De2997fA012C444896ab78A7e8DEa", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.006520242511487417, + "latestWeeklyApy": 0.012203799482746192, + "virtualPrice": 1001043618534035700 + }, + { + "type": "crypto-factory", + "address": "0xAa738040e9dbc91368dF782579CF1810A74e87FA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "factory-crvusd", + "address": "0x4DEcE678ceceb27446b35C672dC7d61F30bAD69E", + "rawVolume": 962597.100932353, + "volumeUSD": 962501.5136970077, + "latestDailyApy": 0.04075679915442887, + "latestWeeklyApy": 0.16778506116603698, + "virtualPrice": 1003809596826821900 + }, + { + "type": "factory-crvusd", + "address": "0x390f3595bCa2Df7d23783dFd126427CCeb997BF4", + "rawVolume": 1098062.118595174, + "volumeUSD": 1098110.9442468649, + "latestDailyApy": 0.13897258451165406, + "latestWeeklyApy": 0.21385277537757652, + "virtualPrice": 1003819402352317800 + }, + { + "type": "factory-crvusd", + "address": "0xCa978A0528116DDA3cbA9ACD3e68bc6191CA53D0", + "rawVolume": 386627.84652807616, + "volumeUSD": 386594.94603739533, + "latestDailyApy": 0.19398025725838597, + "latestWeeklyApy": 0.12717956815833098, + "virtualPrice": 1001905196582806100 + }, + { + "type": "factory-crvusd", + "address": "0x34D655069F4cAc1547E4C8cA284FfFF5ad4A8db0", + "rawVolume": 387409.75007690076, + "volumeUSD": 387361.0044074675, + "latestDailyApy": 0.040202257636501315, + "latestWeeklyApy": 0.08434512076231915, + "virtualPrice": 1001095006223322400 + }, + { + "type": "factory-crvusd", + "address": "0x0CD6f267b2086bea681E922E19D40512511BE538", + "rawVolume": 39599.1091438386, + "volumeUSD": 39600.6775442608, + "latestDailyApy": 0.018034641394937267, + "latestWeeklyApy": 0.04777430808640126, + "virtualPrice": 1000553847624641400 + }, + { + "type": "factory-crvusd", + "address": "0x58B94400bdAd7b9ac8d5335E12eF96E8B4966b4a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "factory-crvusd", + "address": "0xBe426b0f37c112dd20d5866769c8034171567b31", + "rawVolume": 1001.2614764536302, + "volumeUSD": 999.9052700675804, + "latestDailyApy": 0.19255453956961155, + "latestWeeklyApy": 0.06398277010315478, + "virtualPrice": 1000269156141064100 + }, + { + "type": "factory-crvusd", + "address": "0x94cC50e4521bD271C1a997a3A4Dc815C2F920b41", + "rawVolume": 112565.0982875551, + "volumeUSD": 112553.23722512409, + "latestDailyApy": 0.14999234453303423, + "latestWeeklyApy": 0.0933196447516993, + "virtualPrice": 1000181599127916800 + }, + { + "type": "factory-crvusd", + "address": "0x86152dF0a0E321Afb3B0B9C4deb813184F365ADa", + "rawVolume": 35994.34404527431, + "volumeUSD": 35866.2259171483, + "latestDailyApy": 1.4610641675698366, + "latestWeeklyApy": 0.8809037157323951, + "virtualPrice": 1000664159429880600 + }, + { + "type": "factory-crvusd", + "address": "0x1982Fe483f4bff067A2183c98fA231423d41E92B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 1.3871895781817134, + "virtualPrice": 1000325954883408800 + }, + { + "type": "factory-crvusd", + "address": "0xA8a02c7D9ada50444F8c658F43Dc440675B21797", + "rawVolume": 4202.901404916023, + "volumeUSD": 4203.269006343647, + "latestDailyApy": 0.4690974840606543, + "latestWeeklyApy": 1.3828343731480564, + "virtualPrice": 1000284808655128000 + }, + { + "type": "factory-crvusd", + "address": "0xfC636D819d1a98433402eC9dEC633d864014F28C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.14762035616338043, + "virtualPrice": 1000289072846008000 + }, + { + "type": "factory-crvusd", + "address": "0x8272E1A3dBef607C04AA6e5BD3a1A134c8ac063B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.10842658410086248, + "latestWeeklyApy": 1.0267844294351347, + "virtualPrice": 1000314958907087100 + }, + { + "type": "factory-crvusd", + "address": "0xeCDd0cE505da71cd9dE855CD6804BA1e8C7bdB07", + "rawVolume": 146079.34543724754, + "volumeUSD": 146378.0140519856, + "latestDailyApy": 0.6461015853941099, + "latestWeeklyApy": 0.3059444876449158, + "virtualPrice": 1000144415809607400 + }, + { + "type": "factory-crvusd", + "address": "0xAe9e8c9A548505c9ad22a412354186151363c09e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "factory-tricrypto", + "address": "0x7F86Bf177Dd4F3494b841a37e810A34dD56c829B", + "rawVolume": 1093847.3898980739, + "volumeUSD": 3379457.299369884, + "latestDailyApy": 0.3561305988445618, + "latestWeeklyApy": 0.1642401045646391, + "virtualPrice": 1001620079259317100 + }, + { + "type": "factory-tricrypto", + "address": "0xf5f5B97624542D72A9E06f04804Bf81baA15e2B4", + "rawVolume": 768203.9344276238, + "volumeUSD": 1683284.5519975224, + "latestDailyApy": 0.06821720174541301, + "latestWeeklyApy": 0.12382789468623479, + "virtualPrice": 1000380161157220400 + }, + { + "type": "factory-tricrypto", + "address": "0x2889302a794dA87fBF1D6Db415C1492194663D13", + "rawVolume": 24822.996510559085, + "volumeUSD": 46276.37455870238, + "latestDailyApy": 1.4774256442455422, + "latestWeeklyApy": 1.5108330136540313, + "virtualPrice": 1000310180533828100 + }, + { + "type": "factory-tricrypto", + "address": "0x5426178799ee0a0181A89b4f57eFddfAb49941Ec", + "rawVolume": 646.8096541298258, + "volumeUSD": 6224.276439993103, + "latestDailyApy": 1.334846119066535, + "latestWeeklyApy": 0.8292553674782432, + "virtualPrice": 1001278026356866800 + }, + { + "type": "factory-tricrypto", + "address": "0x4eBdF703948ddCEA3B11f675B4D1Fba9d2414A14", + "rawVolume": 649729.706327671, + "volumeUSD": 608961.8003355569, + "latestDailyApy": 0.2809088845322494, + "latestWeeklyApy": 0.7549462249182071, + "virtualPrice": 1020682744805217200 + } + ], + "totalVolume": 360378315.95956296, + "cryptoVolume": 323044482.1627055, + "cryptoShare": 89.64037730809348, + "subgraphHasErrors": false +} diff --git a/pages/api/getSubgraphData/_fallback-data/getSubgraphData-fantom.json b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-fantom.json new file mode 100644 index 00000000..48511fca --- /dev/null +++ b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-fantom.json @@ -0,0 +1,1695 @@ +{ + "poolList": [ + { + "type": "main", + "address": "0x27E611FD27b276ACbd5Ffd632E5eAEBEC9761E40", + "rawVolume": 30975.318259873682, + "volumeUSD": 30031.76996087398, + "latestDailyApy": 0.2402198788362675, + "latestWeeklyApy": 0.11910583896934668, + "virtualPrice": 1017587551183274400 + }, + { + "type": "main", + "address": "0x92D5ebF3593a92888C25C0AbEF126583d4b5312E", + "rawVolume": 46610925614768.46, + "volumeUSD": 351.2056119565406, + "latestDailyApy": 0.9479509103186512, + "latestWeeklyApy": 0.3661848385578814, + "virtualPrice": 1082008848095663200 + }, + { + "type": "main", + "address": "0x3eF6A01A0f81D6046290f3e2A8c5b843e738E604", + "rawVolume": 0.001740055, + "volumeUSD": 51.50750495963669, + "latestDailyApy": 0.6775057491414938, + "latestWeeklyApy": 0.12217913963963323, + "virtualPrice": 1003712794019832800 + }, + { + "type": "main", + "address": "0x0fa949783947Bf6c1b171DB13AEACBB488845B3f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.37559700667089135, + "latestWeeklyApy": 0.3855025763355613, + "virtualPrice": 1035975744160196700 + }, + { + "type": "main", + "address": "0x4FC8D635c3cB1d0aa123859e2B2587d0FF2707b1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.4297037991469974, + "latestWeeklyApy": 1.246644251684259, + "virtualPrice": 1172923104760501500 + }, + { + "type": "stable-factory", + "address": "0x1cb5C03d0585333A6D0578D47a5F9de66C80fD5A", + "rawVolume": 0.5550211549195456, + "volumeUSD": 0.11896885793635607, + "latestDailyApy": 0.22764785366655715, + "latestWeeklyApy": 0.13116007146851683, + "virtualPrice": 5737801790490910000 + }, + { + "type": "stable-factory", + "address": "0x2dd7C9371965472E5A5fD28fbE165007c61439E1", + "rawVolume": 3803.1846807040793, + "volumeUSD": 3984.867931112819, + "latestDailyApy": 0.1942370108162006, + "latestWeeklyApy": 0.13065837854484563, + "virtualPrice": 1063710560732682000 + }, + { + "type": "stable-factory", + "address": "0xaD9c5054CC31f8AA822AEb9247298D2Ecf48c5cf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xeCf64ba816C75e595fF212391E80B5CD9071E7D5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x38D0dD9d036ce6f291442c258F1cc2FC0d10e682", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x259303442a9772222856C9Ae5212051048Bd3D9D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1c7FA28E7BFa396a4B044cC939daFF51674d852B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.22266676713180722, + "latestWeeklyApy": 0.12009249763171859, + "virtualPrice": 1012138871165837800 + }, + { + "type": "stable-factory", + "address": "0xad71Fc10Fca8Ce6a98843A64b95E0C63516CA7F3", + "rawVolume": 510.0573611272164, + "volumeUSD": 477.3404658120042, + "latestDailyApy": 0.33934490025040454, + "latestWeeklyApy": 0.31192892966069863, + "virtualPrice": 144662639053891960000 + }, + { + "type": "stable-factory", + "address": "0x4cd4786426eD34DBd96ba64e4a7B676FAD25D71C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5AAC39FD59300f913096afafaa7b8E0be143f1b0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd3f83ec4BB684712D9CA8519eDAfbb910470F77C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb17DeFAB9Da9A48F2712B92db8dA7c4EDb2D1c0a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x36586206bFc13ED520597b3DAE1313C8b1496388", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x68dde7344a302394845097E96E83cDdFe6D4d76e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.22502177718286553, + "latestWeeklyApy": 0.11898552463884826, + "virtualPrice": 43462453531786740000 + }, + { + "type": "stable-factory", + "address": "0x28368D7090421Ca544BC89799a2Ea8489306E3E5", + "rawVolume": 578.5842255509731, + "volumeUSD": 597.9490878171418, + "latestDailyApy": 0.22478694370893226, + "latestWeeklyApy": 0.11145836383203989, + "virtualPrice": 1056812626789175600 + }, + { + "type": "stable-factory", + "address": "0x12cb0687B95158340287D8391D0Ca5314c10532D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.22152954152212523, + "latestWeeklyApy": 0.11648310317149413, + "virtualPrice": 3669765548965780500 + }, + { + "type": "stable-factory", + "address": "0x7a656B342E14F745e2B164890E88017e27AE7320", + "rawVolume": 9.02079212933046, + "volumeUSD": 10.067649659883012, + "latestDailyApy": 0.22139457043253152, + "latestWeeklyApy": 0.12595212852519744, + "virtualPrice": 4230130929270476300 + }, + { + "type": "stable-factory", + "address": "0x96817E9E47419dd66346AB64811e0f43aB75fEC8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC822FC64AaD7b04B2eddE961c0704AB80F9D217B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc955b79959aca2895AC8667A418849e4C218A708", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA7d2Ac1D5A1cFba7e3e21B68e76c48dd16348592", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF427A0BE7524B022f89742EAf2F52EA433280aC3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9834766a92135DBd03b987Bf423aB89A18656194", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xbd05dF58eD93560457aD2Bc8d1Fe69Aa45Bbd636", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD5B51BA080F815446646a61039fBbFef5A12A4CF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.644267875917004, + "latestWeeklyApy": 0.09941618900362048, + "virtualPrice": 1017550521756649200 + }, + { + "type": "stable-factory", + "address": "0xe38e2c6361c14a17219f7c00bDD93DCc945f096A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x34033F0227C48bc3577aE5C6923A3DEEF3E36670", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x43EC4106b3A09b17f8669E268f36Cc5cdd5F356f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD73a2802697263fb84cb06bBCe9501A2d33dc880", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAD6D5548c45b1b198A4A563Cba1C3D384AFc44C6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x03fa4c23bA3a7BC0BeC18789CE29c7857324bD22", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x115266f936B2ea12eBb5cf5eB2D35f9c46614436", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 17.242388397861387, + "latestWeeklyApy": 2.310060120591828, + "virtualPrice": 1068276045869756200 + }, + { + "type": "stable-factory", + "address": "0xE8117F058A37367d6bf70a8E56B569d7fd5e2A8B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x83A503780983bbaBd6ACab577FbA2c5A3DcAa57f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.0919918535469133, + "latestWeeklyApy": 0.0456288409714567, + "virtualPrice": 1002892645211496700 + }, + { + "type": "stable-factory", + "address": "0xB407481462ec40b706DF0D22e11d8BEFbc2Adf54", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x075C1D1d7E9E1aF077B0b6117C6eA06CD0a260b5", + "rawVolume": 291.37973513626724, + "volumeUSD": 295.54347764884074, + "latestDailyApy": 0.1737728326278054, + "latestWeeklyApy": 0.09211743530663785, + "virtualPrice": 1006714401383133000 + }, + { + "type": "stable-factory", + "address": "0xA7CC236F81b04c1058e9bfb70E0Ee9940e271676", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.023350097817531612, + "virtualPrice": 1066814303654567400 + }, + { + "type": "stable-factory", + "address": "0x11093B0F9780ACcdb6322959a45d749Ca3789257", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9171aaa40AD493fa6B6DACf60265272Cc58E49d0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x16E0bf935e696E0652CDB3EfA10b6A00C162d135", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xDE535Ee3999470286178B736e6A8D976a6822A3E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.3134771551215998, + "latestWeeklyApy": 0.32174563897842123, + "virtualPrice": 1015037197670530700 + }, + { + "type": "stable-factory", + "address": "0x6EF78ad4a40E9A6c81B9229de3eCc33ce591bC34", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.34681992736620426, + "latestWeeklyApy": 0.355966770605165, + "virtualPrice": 1029660215669156000 + }, + { + "type": "stable-factory", + "address": "0x8B63F036F5a34226065bC0a7B0aE5bb5eBA1fF3D", + "rawVolume": 13.898322687474108, + "volumeUSD": 1.3167643134057959e-12, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 38651778506809410000 + }, + { + "type": "stable-factory", + "address": "0xF95ab97a4d41bA67A8F7298a3C9245C293855659", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xbcC30798BBC4cDe6011a2C8cB7e5C21e5f0D0e35", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x64a4CDc2c96146f8588dfB16DD3660Eb6Ea4109B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6d304d364B461Aab0496bf696A23F44a55fc43b6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.12036340230803244, + "latestWeeklyApy": 0.05969703065313858, + "virtualPrice": 1003504527115062000 + }, + { + "type": "stable-factory", + "address": "0xBe26e1858faFbF2de92fdd717AC098E34d9e526A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.02278726040976231, + "virtualPrice": 1006049535703401600 + }, + { + "type": "stable-factory", + "address": "0xa3500EEC27bfD7d0000982DB3290a2c79143ed80", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x84f21b7ceb64906320E2b62cF73Ff03dcFd137dC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.08396145061726479, + "virtualPrice": 1001919965847470500 + }, + { + "type": "stable-factory", + "address": "0xDC371bB71dE3a8E50683E7eb596690Db9D0365Cc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1256014074844103, + "latestWeeklyApy": 0.06229409985545331, + "virtualPrice": 1003701600139506200 + }, + { + "type": "stable-factory", + "address": "0x57F24a2E740516a351E2357d74215d235eE725FE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9e85a45772F1078f3CaFf4B8c0FB43de4CA776E2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x138CCfE5d99c139B9c4918AcE02a082cA67693bB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x96059756980fF6ced0473898d26F0EF828a59820", + "rawVolume": 555.3886171551571, + "volumeUSD": 565.5158186190504, + "latestDailyApy": 0.09661288011308944, + "latestWeeklyApy": 0.0480500207808543, + "virtualPrice": 1007513455773200400 + }, + { + "type": "stable-factory", + "address": "0xEf3A4Fa40Fda4Eff051f14828dCe1C47d17488B3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF24f1061ee2C116D8dB1d0F6C791bCB741F9f08a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x170eAAeBd5D398003A42A7414B704e13E1744c3a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc1ccCec6FC0D23B471E1c3877cb7558442D35Df5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9F83dbD9dBE351e3575a65dF04Ce34d3426e5B06", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe1bA291eED6Ed14A4e65dCbe6a4936Fe15B3A1a4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA58F16498c288c357e28EE899873fF2b55D7C437", + "rawVolume": 10314.729301295947, + "volumeUSD": 8126.175694595659, + "latestDailyApy": 0.21936044037034197, + "latestWeeklyApy": 0.23591452869755614, + "virtualPrice": 1023881345149531800 + }, + { + "type": "stable-factory", + "address": "0x24699312CB27C26Cfc669459D670559E5E44EE60", + "rawVolume": 34029.54790808303, + "volumeUSD": 34009.42041403416, + "latestDailyApy": 0.29563738904392345, + "latestWeeklyApy": 0.19499513001748348, + "virtualPrice": 1008211680312924500 + }, + { + "type": "stable-factory", + "address": "0xCc0F443c62229f8944379d87a853f1898e682214", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.19847524032574615, + "latestWeeklyApy": 0.098418598965333, + "virtualPrice": 1004622553088825600 + }, + { + "type": "stable-factory", + "address": "0xC1A2D9341135c7e3f00EDBED51F9C7acab7c7B3F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x43a9f7d71F59DA647E367a713b2c2534A3938047", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc687e9038d7aCECF4842fD06D1b8d2d8CEF8e790", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x872686B519E06B216EEf150dC4914f35672b0954", + "rawVolume": 0.5822993419770299, + "volumeUSD": 0.32840708538537744, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0771754767936006, + "virtualPrice": 1119522122950626000 + }, + { + "type": "stable-factory", + "address": "0x859009D02F0f609E585Be78e4427599FfaD4Ca14", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc87dc1E718E5dAbB438e69E8F3A1a6979dd46868", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x262a70f82df61a94F3E6fCD17895A25d6bEb07F6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1dc3F42f9E598999a784498D00f360F305A5B4D2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9452699E70b648A3A499FA044bA0e58dEcB21A5a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1484Ae179657e01dE76C0Dc95A5838B1e797eB81", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB3045222d3F3725C4bEB1047f6C54514b3333ed7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8cD8Ab34189ee11A60c17Fb8bd394e4702De11fb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000137165930423000 + }, + { + "type": "stable-factory", + "address": "0xa1F70A0515BDc2954508125aDd49f72d01ee74c0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 3.21661533968598, + "virtualPrice": 1039225849421167400 + }, + { + "type": "stable-factory", + "address": "0xa5FAE68615010EFE0F22E98C48c75BFBB6141718", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7c79acC9aEf46E4d55BD05d06C24E79C35183241", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0F5e1fC301437b344271c14Ffb52431a97CE4113", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xee6Cc45B3c937DdBa9FAdD44eBA3Ea4dcceE05f1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xEEf1f7F11c3728100737c6355EEfD40Cacd6B506", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x674E594A71464DDc55737ebfba37062B9044f9F4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7673F9226C8Ce29a86ED6Ad1C1D8574BB1d201e4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9dc516a18775d492c9f061211C8a3FDCd476558d", + "rawVolume": 2986.3235672489855, + "volumeUSD": 552.0355110711914, + "latestDailyApy": 0.14743300676136606, + "latestWeeklyApy": 0.12357315624735854, + "virtualPrice": 1014433617645837700 + }, + { + "type": "stable-factory", + "address": "0x261036923F4aAF1322a3173921fCBdaE51352CAe", + "rawVolume": 0.5078885, + "volumeUSD": 0.5021344678907306, + "latestDailyApy": 0, + "latestWeeklyApy": 0.8079266081806535, + "virtualPrice": 1018031246401253900 + }, + { + "type": "stable-factory", + "address": "0xFa6Ddd52738FbEC9Ed649986AA1b74236B83aEbd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAD0FB83a110c3694faDa81e8B396716a610c4030", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA8B3C9f298877dD93F30E8Ed359956faE10E8797", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.3285823471264715, + "latestWeeklyApy": 0.10473070503433934, + "virtualPrice": 1004691330471958700 + }, + { + "type": "stable-factory", + "address": "0x78AE5704B6664a07f14c7d3a14a98e7d6DfC80aa", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000297678378369900 + }, + { + "type": "stable-factory", + "address": "0x46F5ea3B7867b451Eb1568FA820a6e89c5492795", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9a1394f9f9F2d600A4F4062190B941b036865FF1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7e4143Ed63635E5f53f0272c307eac4A5238037a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002007264079681000 + }, + { + "type": "stable-factory", + "address": "0xF0B05FD8846F419FC0D4C9680A684cA28b60a368", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1600192731975536, + "latestWeeklyApy": 0.07935717119273988, + "virtualPrice": 1003458218910786300 + }, + { + "type": "stable-factory", + "address": "0x6fD29C93897B756939c4F67c9C9ECe9284aFdE2F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1020878544925946200 + }, + { + "type": "stable-factory", + "address": "0x3C634D37871c0E2e0CA85eB23A4ce29Fc1243853", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xda14b5E8dF1F2329783aA60a02F8344dE121e38d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8505f1e4EBdcDCA1831Bac96774A9cA5ACA97034", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3187E6408afF63453300fA3650018C32b96eE677", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf0D7446b983e39B92B5a64624188D725B583DC38", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1178ce387Ce454F2d8899e9E72299107216D7146", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9B128AeAD5211Ae155C3DC857796A0A0abEd76C0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6BA351c6382a0f7C4257103401192C10996C4402", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3a93B1a8c565648379d2975dc9d3Cc1DA309F221", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x93F04A793189f1D9e37659cEF09eefa04002F689", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x27F073ca3EEaad81A505B39ff73f95F59010B894", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6186fa77434695448243F211745e759d94d01AD4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x47cce0A4396a7Ec2a247CA81a9bDd74A3B727b11", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.15630886437785207, + "latestWeeklyApy": 0.07751783525122846, + "virtualPrice": 1002861023076232100 + }, + { + "type": "stable-factory", + "address": "0x9cAd21e5781D621dcab1ceae120551Bd5cd297E9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3D324472cABF7daED56aF7fa9E8BFa397F5a7CcF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9C4661c51058Ec047196F350297f0b288e7b7b87", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf864fED8ACFE622d5f92568A0cD50A625CaFeeFE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 2.505600027089394, + "latestWeeklyApy": 0.35862854578092573, + "virtualPrice": 1002332013928273200 + }, + { + "type": "stable-factory", + "address": "0x377d52CDec942F4C139c7394E5b3d6893A8728D8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0329d377f54B2a5705788008534CEeb968f20A3f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x20eD8cAa61BA7147a2545dc7f09e241329799d6E", + "rawVolume": 75.34987540785833, + "volumeUSD": 13.414656166889845, + "latestDailyApy": 0.22485108069507653, + "latestWeeklyApy": 0.11149018505991481, + "virtualPrice": 17221331137630583000 + }, + { + "type": "stable-factory", + "address": "0x6E6c999e1893dc2E68b4193108bEC307b6C42f96", + "rawVolume": 446.3605990916111, + "volumeUSD": 344.7782715972256, + "latestDailyApy": 0.1464925854965493, + "latestWeeklyApy": 0.0737646037956452, + "virtualPrice": 1020695379400620300 + }, + { + "type": "stable-factory", + "address": "0x7dDdE570bfb3A968a2894b491759e7415Eea145E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000010000000000 + }, + { + "type": "stable-factory", + "address": "0xc86A58954DE2BCEc527d9b32Aff4652E60207005", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xBd7D823eb731435472028faD5C50379b109d0e6D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xfD54deF3BdBd8784a92CFFc1290717bE7288BE01", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000100000000300 + }, + { + "type": "stable-factory", + "address": "0x60866Bc5AfD01739aC15c22CB33CE7DE42F8D9DF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000001000000250000 + }, + { + "type": "stable-factory", + "address": "0xB84d0aF96d4eCA837843CF6ACf8e2fa6AcF69765", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000290702942340500 + }, + { + "type": "stable-factory", + "address": "0x079D2298A05974CE556c2592Dd5c7D20B2364d2d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xa5c3620fae9adB58E0626836a2D03Aeb6a26749e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000020003995000 + }, + { + "type": "stable-factory", + "address": "0xC5D1c87cefb14183b86E10336AE274AFa1f387e1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000020003995000 + }, + { + "type": "stable-factory", + "address": "0xf4775Ead13fABB333aFD36964006e4c0B720ad23", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF5AFA33e8b3bA76AcC72388625f2eAfF072Dcd8e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000339863255600 + }, + { + "type": "stable-factory", + "address": "0x70b5371442d1aDE57dB3Fbf00E9fABD56d871070", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF3c8E2172EE1e6Bd90933e8f31bBdfce2f7bFe20", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000004783097556200 + }, + { + "type": "stable-factory", + "address": "0x6f175468129D1EfA8cbfF2BF575F9C49a64c7060", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xBfd6122253245954bbf9f2966F27e788C9e68c4B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0x1dEad61596aE75C139eF92798aB9641C1284E03E", + "rawVolume": 207.61209599323556, + "volumeUSD": 223.05827825355146, + "latestDailyApy": 0.015521311996069542, + "latestWeeklyApy": 0.0077003053288615675, + "virtualPrice": 1001663108963444000 + }, + { + "type": "stable-factory", + "address": "0x866d6D99f422F24D2404fd5e9ED4DB9edF0B3023", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x47bB1Bd096F37F8Aa3F41A02b77E05CdA65Ef08F", + "rawVolume": 7.231595782446735, + "volumeUSD": 8.205995880799113, + "latestDailyApy": 0.3594933169605019, + "latestWeeklyApy": 0.14579134155912055, + "virtualPrice": 1003909245485411100 + }, + { + "type": "stable-factory", + "address": "0xB6C7ce3813078769A8C698db19239f61B7ca627C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x31D8F85BCE2a4A096A2d207F8f113D1C3feC7c06", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000635719846304800 + }, + { + "type": "stable-factory", + "address": "0x0cA1E358E320717494a0cC9211Fc0d5546d23A60", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.014586939672578403, + "latestWeeklyApy": 0.007236791262821285, + "virtualPrice": 1009801643986219900 + }, + { + "type": "stable-factory", + "address": "0x4560262B27655C9C2978b030CCF7815777D7A3f1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9029e4c67Bc095b03C85F63c57e57a6fBD1E510d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xDD679D523a016a4d2eACc9614dbc0D2318b93ae9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.02376419192788859, + "latestWeeklyApy": 0.01178936207315573, + "virtualPrice": 1000624627837954700 + }, + { + "type": "stable-factory", + "address": "0xF1CD9A305b71A2EAaE9cBC57e0e11A1e214f7219", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000029013365430800 + }, + { + "type": "stable-factory", + "address": "0xcae2925267Ad62B6115881169b8606AdEaA7BA50", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf51B20668593CaAB20c56015fabCBE67963e17c7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x565fdfbf8e60717DA016045118f175f01fa8d23A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe89808f3B9F76beF5b580F08A09f998f1978576A", + "rawVolume": 0.914416042118, + "volumeUSD": 0.948362229662067, + "latestDailyApy": 0.17194561356586036, + "latestWeeklyApy": 0.024478205510125584, + "virtualPrice": 1000087170898011600 + }, + { + "type": "stable-factory", + "address": "0x78ed6aF913D66F60d339d81CF5C5188473785070", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x44C2C46C87B869e276C5B418E0B0E297651EeDB0", + "rawVolume": 391.3725926200548, + "volumeUSD": 391.211284233229, + "latestDailyApy": 0.1011092131147251, + "latestWeeklyApy": 0.06232740131122405, + "virtualPrice": 1000265575377607400 + }, + { + "type": "stable-factory", + "address": "0x1eE5629fb624412354Caec457C8B4E67F7027A2F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002502845688309800 + }, + { + "type": "stable-factory", + "address": "0x23d5916BA743354aEb066359E322d31279FB6018", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.06563002284618591, + "virtualPrice": 1000462051721029900 + }, + { + "type": "stable-factory", + "address": "0x64f7916a65DA6175CCFdB662B724Af271CA30cCA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x02Da5D38a1939f6B54D5F506f03b2ba5163C5650", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1B8b3bC0D702615B30BfE7c55B8EBfD5f7863F4b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF029C305dF2695fD55614B9be93260AbF5dAcC42", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto", + "address": "0x3a1659Ddcf2339Be3aeA159cA010979FB49155FF", + "rawVolume": 11775.381617622885, + "volumeUSD": 11764.3168685, + "latestDailyApy": 0.9501750916786511, + "latestWeeklyApy": 0.8528852972071066, + "virtualPrice": 1042246207916806300 + }, + { + "type": "crypto-factory", + "address": "0xEC5AFc9590964f2fA0FeED54f0fBB2A34480908D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0xc7c939A474CB10EB837894D1ed1a77C61B268Fa7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x36BECDcBdF49255F366a45B861B4223b482D35e4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x697fDefe26AcA625c86DBD07D3b95fDe3E7F7de5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x8187d4734Aa4BD78f0A2F7941E276E410e37f033", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0xf5BED2BbE798187272741c3042CB662c8Bb67DAf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x36bec0732c913C87a558D6A16f077D5B3D7476C7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0xC0B78F2e96De56d08C7608697680e935FE47295B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x48087143Bd15b99e67a8cEc578E4D884A4bBF124", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0xd9F354177Edd66E7A6669F33d0Ec64C14E153b38", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x30F217C3423f824de89abE941Da49887BaA8485d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0xcaC8002275BC596e6FEfc88807E75f5B6646Fc10", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0xB47dF195c7805B2bC9a20c2631b2234753625CD0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0xFb6FE7802bA9290ef8b00CA16Af4Bc26eb663a28", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x5E078b90Af4A1899ae0B1BA17fF2E443F4eb78B0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x8705A57a7305E971d8fc897dDb4E0b535D7a047e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x7cC19f8c258D7F489BC1074437e25A46e397688F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x12FA77685728ABcBe1d5c7C11638d2C8dF250478", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x36fae0c62fE24C7Db4983af90c8901C1D7612cD4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0xE8C9aF58EBA1DC532C1707B1e28736d3c9d1AFed", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0xeB5f4c45E29C05c5FB166B72A173dC32831b4239", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x8E6692B6Fc3bCE7d5291C96ff02bA24E1a329C60", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x48d794c9B1acb3864Ae0c63E9E5D19a6EC80A2c6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0xc7d7133A2a4CB8D8B128e961eB8CD3AE85Dd6204", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x3320C9E72fFa1116A7Bb5547F5aE7B2fA2A9EB75", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x552FDB8BE01C640fA308481aB1E9a7af9D62D0f7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0xF4f2c1710e4470E58e4841ea0653f949bdDDD67f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x9D874dFC60edc490d76f78663204FcFd608151d7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x453c551879234682D2b823EdE73a2Ce41a5150AA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x38aF0A6D3551fA982Ffad038B3b238DF3757204B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x085Ba43f0f6d152d6842721Be0BD18cE2B828010", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + }, + { + "type": "crypto-factory", + "address": "0x4E7F7A0C44618fc0379f633A6697137955B0375b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0 + } + ], + "totalVolume": 91800.28235543349, + "cryptoVolume": 11764.3168685, + "cryptoShare": 12.815120571144616, + "subgraphHasErrors": false +} diff --git a/pages/api/getSubgraphData/_fallback-data/getSubgraphData-harmony.json b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-harmony.json new file mode 100644 index 00000000..078421cd --- /dev/null +++ b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-harmony.json @@ -0,0 +1,7 @@ +{ + "poolList": [], + "totalVolume": 0, + "cryptoVolume": 0, + "cryptoShare": null, + "subgraphHasErrors": false +} diff --git a/pages/api/getSubgraphData/_fallback-data/getSubgraphData-moonbeam.json b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-moonbeam.json new file mode 100644 index 00000000..4b60d4c4 --- /dev/null +++ b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-moonbeam.json @@ -0,0 +1,260 @@ +{ + "poolList": [ + { + "type": "main", + "address": "0xace58a26b8Db90498eF0330fDC9C2655db0C45E2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 9.900784192495848e-7, + "virtualPrice": 1006907335010004200 + }, + { + "type": "stable-factory", + "address": "0xefAE5795170D7F97538c7fa6E3DC8aaA1F8e700d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1008916171881715200 + }, + { + "type": "stable-factory", + "address": "0x0fFc46cD9716a96d8D89E1965774A70Dcb851E50", + "rawVolume": 5.9760902699, + "volumeUSD": 29.9884584670414, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001595389227764700 + }, + { + "type": "stable-factory", + "address": "0xF9E345A61858FA7125dDD8b96453ECDa7Cae81c8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x019573e34054f68b572051705cA75e83431D063d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1006873091849009800 + }, + { + "type": "stable-factory", + "address": "0x84316b08C757dBEDF73C6bf0eFBB4dD357E2A1b6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd937afa3E51aAc92FD6B4c9F487D7B9D52Fd7417", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x12B2B5A44a949Ed30592e97496103C8EA8B157af", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x30E04FC620863B097878EAFB95616F6c7514a30C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD501dF2eB24b97f007d03630BE2CABa9825158DA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc2CF1D6Fc6951b6D53c9f1Fc612eDd4d95c88e5C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x73E7e05592356b16bB4b6445C8b01f5972CFA50f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC6e511034589b59A0254C49678DDa6d397d029EC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x01522c8d4A2346f8e26E7715D7F391Aea5E9D7dA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3e7FafE8a89474Ce001A9908a62d71a8f788e8c4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc6e37086D09ec2048F151D11CdB9F9BbbdB7d685", + "rawVolume": 741.5255973735999, + "volumeUSD": 4019.505571698267, + "latestDailyApy": 0, + "latestWeeklyApy": 0.01156711335048577, + "virtualPrice": 1081872783773719400 + }, + { + "type": "stable-factory", + "address": "0xd0C855C092dBC41055A40297420BbA0A6f46f8ad", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE7c18E26e9798f9a3C73396522b3053c17738fb5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x94A97FEF4D1Bf4707Cc1679CabbcC100d9a63439", + "rawVolume": 0.000510035, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000348441730446600 + }, + { + "type": "stable-factory", + "address": "0xFF6DD348e6eecEa2d81D4194b60c5157CD9e64f4", + "rawVolume": 6666.6643282044915, + "volumeUSD": 6660.944557239035, + "latestDailyApy": 0.07261979056167878, + "latestWeeklyApy": 0.4836069986628999, + "virtualPrice": 1001572487695694700 + }, + { + "type": "stable-factory", + "address": "0xE5dBe9672330fdBd0e95B1E444F2E9C8991D5f82", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb0e3648D550CD8fce2fdac5Bb7002ACBA2F29f98", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x677070021A161EA3DE97ADc89FBE5CBbBcCa6108", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5dE9D7EB5CE7622Bda4890133EF70aebC379aaAc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9E256D306EcB088c09CFA5C066A297121A0FdA08", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xBA6D5E6fb5AA4880BC1331F9ED8ddd65B762c9Fd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x686B060a8AB193167091E9c82fd72D1FdD56b052", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x255834B4F17610cA8CbEfceB177235F15DaDF9D2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 5.05198438147938, + "virtualPrice": 1373538070754374100 + } + ], + "totalVolume": 10710.438587404344, + "cryptoVolume": 0, + "cryptoShare": 0, + "subgraphHasErrors": false +} diff --git a/pages/api/getSubgraphData/_fallback-data/getSubgraphData-optimism.json b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-optimism.json new file mode 100644 index 00000000..44a39cc8 --- /dev/null +++ b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-optimism.json @@ -0,0 +1,674 @@ +{ + "poolList": [ + { + "type": "main", + "address": "0x1337BedC9D22ecbe766dF105c9623922A27963EC", + "rawVolume": 2034699.4050282717, + "volumeUSD": 2034667.5662111195, + "latestDailyApy": 0.888379360584235, + "latestWeeklyApy": 1.1549074527386072, + "virtualPrice": 1019831624046260100 + }, + { + "type": "stable-factory", + "address": "0x29A3d66B30Bc4AD674A4FDAF27578B64f6afbFe7", + "rawVolume": 99.22038989673375, + "volumeUSD": 99.18263227518196, + "latestDailyApy": 0.8453699189757247, + "latestWeeklyApy": 2.3657159463766675, + "virtualPrice": 1004822826063019600 + }, + { + "type": "main", + "address": "0x66B5792ED50a2a7405Ea75C4B6B1913eF4E46661", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 5.675123569511653, + "latestWeeklyApy": 3.9230619389138743, + "virtualPrice": 1226027572396842800 + }, + { + "type": "main", + "address": "0xB90B9B1F91a01Ea22A182CD84C1E22222e39B415", + "rawVolume": 40.463151251677374, + "volumeUSD": 75021.59015746435, + "latestDailyApy": 1.948318629428547, + "latestWeeklyApy": 1.701085657490986, + "virtualPrice": 1033526308783305500 + }, + { + "type": "stable-factory", + "address": "0x061b87122Ed14b9526A813209C8a59a633257bAb", + "rawVolume": 168785.36029093576, + "volumeUSD": 167723.23543263797, + "latestDailyApy": 0.3981176880414772, + "latestWeeklyApy": 0.9911463884757721, + "virtualPrice": 1016981583273973900 + }, + { + "type": "stable-factory", + "address": "0x3da3153E26A230d918bb9F9428A8d60349B73379", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.004491629167024946, + "virtualPrice": 68231590654255060000 + }, + { + "type": "stable-factory", + "address": "0xfDfEb18721c1999f4b71fFCae544991E797721F3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9507576B25299661aCf78cB27fcEDE7215Db8F94", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6645237fb81fe7227AA2Fa2A244D23A5AC0DA1cd", + "rawVolume": 179.23193357787738, + "volumeUSD": 177.02676428872977, + "latestDailyApy": 0.1504205592264718, + "latestWeeklyApy": 0.8399972761060637, + "virtualPrice": 1030004445027484900 + }, + { + "type": "stable-factory", + "address": "0xf822390A28e79bdAD3453A3a31fF0dDeFAfbe05f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xa62D71c18e2Fcb2e80C6357F7c04F9349840665A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5810d004BE3662549D5e42E812Bf57090e0CC5Ae", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x309970d0cCa31197620FEdbedCd51BB46e2a73BA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x44A3e148fdE06FB56CEF741CeB886d37A25430b8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7Bc5728BC2b59B45a58d9A576E2Ffc5f0505B35E", + "rawVolume": 4.10411079023371, + "volumeUSD": 7609.207687818346, + "latestDailyApy": 0.031351306038329696, + "latestWeeklyApy": 0.2530670822221248, + "virtualPrice": 1005861687575720300 + }, + { + "type": "stable-factory", + "address": "0x7C13F8fdbed6fa2dc567b2F7C85f116E0c5aB5c3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9F2fE3500B1a7E285FDc337acacE94c480e00130", + "rawVolume": 0.29981302358852174, + "volumeUSD": 8806.308882446952, + "latestDailyApy": 0.002862964543681734, + "latestWeeklyApy": 0.0047648273935108065, + "virtualPrice": 1003172489748135300 + }, + { + "type": "stable-factory", + "address": "0x29dE7E98d6d1a8f0777E0B4DA4d6EeE76fd4B9aB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x41034d57421679E78c7258C9Bf83d5525A41DA2d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF44302A16224d8428CCDbf78Eca70370126ed746", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000438324959021400 + }, + { + "type": "stable-factory", + "address": "0x5695a0194eB3C766C5c5CdC094f1169B686BE1eC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x54DCFE120d608551f9010d3b66620D230fD5c11B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.34676188590214707, + "latestWeeklyApy": 1.8183567378178056, + "virtualPrice": 1656436519911639800 + }, + { + "type": "stable-factory", + "address": "0x75B2F45C1c8A23C6A4Ee9449aBc92899aa2e2889", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x43FD45DA6D1E68aE5beaaeBDD634F16b9FA806da", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2df9fDB9c43941e00240644DBF4F463acE01e0B0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF995d84F6032Ca8f7729852614B023969d73B424", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x634981bbD226fd101b3364C4AEA5a2294dEe02Dc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x15dD39D2476eCAE26d42659B5226D754782D7e10", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6404074b222Caf3f9DdFec58507D2082471A9E98", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xDeE0F50F866599030786d22359Dc60f049197b99", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc8FE238784F967241F306E3F089DA9580327aeEA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc146459fafC272B515bE7A2E29b7FFC71FfA6B7f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8b52bc60c8668c76966F5f3472Edf00D9426f969", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x47e1261b7c931dF52cf37c57040B2D2DCfc2fc63", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe74d004BbD80B32e37dbC004614f58fCf35CD270", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE475f889da02ccA3a5b077A9D14384F29a20Df43", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4EFE19f64675d684837A94aed84A69789AF4d32D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD07d5877b1B04D8d9Be87F6Fa71664f68B07cC96", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6ED543cF201dbfc9669Af95CEB55bD39FFd044Ce", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6eFb0bdCf3e89Cfa175E3FDAB7AF415fA53833b7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAE13DFf69D84d87aE50ad841377d5F9d33d857Cf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.7295701235112029, + "latestWeeklyApy": 0.9482703396572312, + "virtualPrice": 1003428323535510300 + }, + { + "type": "stable-factory", + "address": "0xa2f1E7E65bfdBD264D6e3cB4dA50eDF7fc77b861", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.26263772734698154, + "latestWeeklyApy": 0.341170466487406, + "virtualPrice": 1003290032460211500 + }, + { + "type": "stable-factory", + "address": "0xb327d8D0372034EC53BBC07E2D2899B18B0131C0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7Eb9405e4f0Bc813ad4439FCa77BeEAD64c2bE26", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAB0dE6d1349bee4EBFFb9c6557b30F239f500feF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xEc502409e1bE73ebF45C7582A3ad28B3F7e16510", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x542f7E8D6322d276395Aaf3Ce0f808A33B52006e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x02710B50d54342680Da75f018386AbD1f044C329", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x49cb124C22727b768550C4Eb6398A734DCb8Cd6b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x30170aE3eE88b7c05427aD00A643aCE8293bA971", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x810D1AaA4Cd8F21c23bB648F2dfb9DC232A01F09", + "rawVolume": 25094.56320797222, + "volumeUSD": 24998.10970209165, + "latestDailyApy": 0.8641758800013388, + "latestWeeklyApy": 0.6661752034980539, + "virtualPrice": 1004005664155408400 + }, + { + "type": "stable-factory", + "address": "0x1522b6CcD111BcbF37CfE088F3594B89a4784968", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0105D09f5Ea12dD2FA6232fF76044c895F06A920", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x986c430A6b1111b1D16b260C778Ba3181C4A0Fe8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc0C4bcF3ED866685e5E944FD485748099F23FaAC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAEA4DEBbB349a54Cc27419aBBbbA94AB0Bd276A7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x12fC671AE22693f3283BcE0DA8F61b0ec05A400A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x047fE1fB7b3a2C13BDf4ee9ecA20da21CDCc9E1c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x356AfE0fC695919e82F9426f906fdE64Ff534b99", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x61D83f85cF78EeFE1Aafeb74f48e202367184f1f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE1Ee22790EDC2632b27111cA5fF2CC156d59e35a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7e32ACaE2f0e928376C61d389555658c55Bf9b00", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA35540C0e0Fe990C70d40fC258d2d12ea40497D8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xBBaf6181FBf0C624699c7E56Ba109a53ECa846F2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.20822134527305192, + "virtualPrice": 1000040003335843800 + }, + { + "type": "stable-factory", + "address": "0xc16deDc3fD310999e88311F90Bb279655EDBA6aa", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD45B98c87161C133066a9D362842cbDB175E7d29", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000050121319132400 + }, + { + "type": "stable-factory", + "address": "0x1Dc5c0f8668a9F54ED922171d578011850ca0341", + "rawVolume": 0.010089413166776225, + "volumeUSD": 296.74527105218726, + "latestDailyApy": 0, + "latestWeeklyApy": 0.02732046036881819, + "virtualPrice": 1000211543058821500 + }, + { + "type": "stable-factory", + "address": "0x36310Ea865424a054255B963290c0B89b639D2ff", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xE978927D04A9F160079880B8A362bBccdb7b9654", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD7375c031074922971b5c2f65b71F88ab41d1392", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x996Bd284b018801d4635dca11ebB9fdE50B10c65", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x13b85ce4721309f89F4C151B4eEC3D123420652c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x518D6ae98818C971B3fa1e4186CC573F1E3ebE68", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 4.872681697368986, + "latestWeeklyApy": 4.000267521370748, + "virtualPrice": 1003084706715047800 + }, + { + "type": "stable-factory", + "address": "0x10EED26aC50e06E4f0aac767C77Ba772E71934f7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + } + ], + "totalVolume": 2319398.972741195, + "cryptoVolume": 0, + "cryptoShare": 0, + "subgraphHasErrors": false +} diff --git a/pages/api/getSubgraphData/_fallback-data/getSubgraphData-polygon.json b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-polygon.json new file mode 100644 index 00000000..31cd7817 --- /dev/null +++ b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-polygon.json @@ -0,0 +1,5975 @@ +{ + "poolList": [ + { + "type": "main", + "address": "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.0010698567641131973, + "latestWeeklyApy": 0.01264430322227561, + "virtualPrice": 1011023313374552200 + }, + { + "type": "main", + "address": "0x445FE580eF8d70FF569aB36e80c647af338db351", + "rawVolume": 12945.628092715186, + "volumeUSD": 12945.628092715186, + "latestDailyApy": 1.8022223200310217, + "latestWeeklyApy": 1.9127632051660681, + "virtualPrice": 1081159681813322600 + }, + { + "type": "stable-factory", + "address": "0x82f1534324e60581e693335dC39b569DC7605af5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4356a01C4F873ae8fA46E1d2cFAEE249560c5e6e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x10f38a56720fF3A16bD04754e9b49E1f39d4aA4a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.5398596046129809, + "latestWeeklyApy": 1.6342833695291548, + "virtualPrice": 1071712474704345200 + }, + { + "type": "stable-factory", + "address": "0x4a3Bb45aee36367FabFbc5E2aC5F92b06eD2Dba5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x62619F1091CD0261b7C16199C6c58DA694248CFF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 5799219435923319000 + }, + { + "type": "stable-factory", + "address": "0xcE113ffc5B4C9F088Bb0ad9459e10387f232C3e3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.5499369546812849, + "latestWeeklyApy": 0.5970578926303816, + "virtualPrice": 13481717222484204000 + }, + { + "type": "stable-factory", + "address": "0x78A8cC2A24FcC5B358Bb8A371072403CE092D599", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.5109373910683566, + "latestWeeklyApy": 1.2877573171764967, + "virtualPrice": 4754536680378875000 + }, + { + "type": "stable-factory", + "address": "0xaC974E619888342Dada8B50B3Ad02F0D04CEE6db", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf4d5F7fD2d80d6d535a76D3543F3e5602641Fc7E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x43910e07554312FC7A43e4B71D16A72dDCB5Ec5F", + "rawVolume": 1.4008386675908187, + "volumeUSD": 0.7672011849246646, + "latestDailyApy": 0.2781688438881824, + "latestWeeklyApy": 0.18972907084282564, + "virtualPrice": 1015313647603531100 + }, + { + "type": "stable-factory", + "address": "0xc729a8bFeBB7f9089112c081565EB4A0031612Ba", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.6143551226514887, + "latestWeeklyApy": 0.6519023321589046, + "virtualPrice": 2797399230953681400 + }, + { + "type": "stable-factory", + "address": "0x5e5A23b52Cb48F5E70271Be83079cA5bC9c9e9ac", + "rawVolume": 125.76015681372357, + "volumeUSD": 123.39110407198478, + "latestDailyApy": 1.2434956112018725, + "latestWeeklyApy": 3.3480672336917428, + "virtualPrice": 1476511257565931300 + }, + { + "type": "stable-factory", + "address": "0x4E28a18aff02Dd6D4B0986De8d32F9c2ee7cB29A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x32d14D697eaF6c254A08DDaC1aA5e6Ed89AB32b9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.03895456380609286, + "virtualPrice": 1007916889053754400 + }, + { + "type": "stable-factory", + "address": "0x850e1B0b203f9B0EBFC9648EF8c7A6f211A200AE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.11897732618368906, + "latestWeeklyApy": 0.12625832466357512, + "virtualPrice": 1018129782824204500 + }, + { + "type": "stable-factory", + "address": "0xB17420458609448498BE4168E19A9bd9a0DF8b37", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xca097d74030f40bdab9Dd1350E6FE066768210b7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x890aa074E82cCA6EbCf0E4789d4660330F2A5060", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9da618900fDEa8fc300Db03254394ed8Eb07EF83", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf0016fA1b5CB0036425AE47510aC9DEb40d3f273", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9Cd96405Ae301d4Ba833eeB98fCf5F4A31D4029a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe5C9C1782220138F871C48ebfE20be708f948d51", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xeF75E9C7097842AcC5D0869E1dB4e5fDdf4BFDDA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1003106494767898400 + }, + { + "type": "stable-factory", + "address": "0xA69b0D5c0C401BBA2d5162138613B5E38584F63F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1003203774989952900 + }, + { + "type": "stable-factory", + "address": "0xf3FC2bba74f0B73f6264E3543e896e0b86f1F257", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x209ebE1aaC73205F1e8AFf02DB71160ec1Dd1aBd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x79B72D2AFA7b9636E54bF8B7c1DD5E039e4c1D20", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x488c848CE020723B0b4235edAC5ffDB47B53672E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2da80fCF352aF73e3524E90E382B6866768ad076", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE4Eb7E0eCB5099fCe9505fA0DaE72EFaFF73c4cb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.6081642503928286, + "virtualPrice": 1072057405331865600 + }, + { + "type": "stable-factory", + "address": "0x3e1f3D078e9abb8A08De99958a69096B53DfA9b3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 33580428556422630000 + }, + { + "type": "stable-factory", + "address": "0x5A128e53debc0FCd514FAcc40F01c5D7C39BBBE2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x162B21ba1a90Dd9384C615192FA4053217D2A8Db", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.12260068188847395, + "latestWeeklyApy": 0.14446289122604927, + "virtualPrice": 1009214260904653400 + }, + { + "type": "stable-factory", + "address": "0xE374dbE255128fce05096798048e69B90d9b9F8a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe8f661f157b0E3a1acbF2D0aAE8Ac07436490667", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2b58cA1650DCc27Ae2Ab879fD3527b950009472a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfADDd2D1d4902a0EBa8678e47102Bfa5c5fA1846", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAd326c253A84e9805559b73A08724e11E49ca651", + "rawVolume": 998.4358753299231, + "volumeUSD": 1098.2087154540313, + "latestDailyApy": 0, + "latestWeeklyApy": 0.3574617595363039, + "virtualPrice": 1018141720343632000 + }, + { + "type": "stable-factory", + "address": "0xD7847265c971996b2f74ce6fC27038488bd8F67D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC007b1Ef592DdEC342f377234E0B7a78cb915Cc1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1005156841670260200 + }, + { + "type": "stable-factory", + "address": "0xb731E7cEd547A636f7CD3eee3972EB32b0402893", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002475706450657500 + }, + { + "type": "stable-factory", + "address": "0x19b4ff57Ccd45e7B0a22a454619921eF284460fe", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1058708450129082200 + }, + { + "type": "stable-factory", + "address": "0x737a0Ca14F488518Ca85261db9a591138EDF2Ce5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x39F01809fAe5755b6F0c190dd47eCbfE81713769", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb283E8afF7379b48556192bd10DcDA562b28D95f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3dE32B6949B0A000e831c98354e93261725A22f7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 9745706107757418000 + }, + { + "type": "stable-factory", + "address": "0x0E9b542172200dF93eaF4C6EDC919F9923567517", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.58982684513167, + "latestWeeklyApy": 1.6873209802201528, + "virtualPrice": 1392195691480300300 + }, + { + "type": "stable-factory", + "address": "0xBeFFf04ec3E332CA0347A7ad056e8F7945f926cf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE0Eb3CA0b2759344477a7D4E0F8F1f3944Da1Ba7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xcc3520A1DDb017740f1a7a267FFBeD797aDf9d49", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.1201570358402071, + "latestWeeklyApy": 0.1275163417676417, + "virtualPrice": 1003834212710669300 + }, + { + "type": "stable-factory", + "address": "0x52296ec05Ad119bc77baf48e9C9e7109AaE7c276", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB00680Df0B1f3F39Ef1FbB9ec1AA0a7Fa14b4Cd9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x20e3f345E229bE9CE08488Ae79E906955183EBAB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.16202507157607737, + "latestWeeklyApy": 0.1719495090021672, + "virtualPrice": 1004445845525429100 + }, + { + "type": "stable-factory", + "address": "0x89FAa4A7c39f4399a68a1a2cCDB177654880A26d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x982558c80abDD126795F920DE5653804e9eF884A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1F93F301F7DFb0c301199DB35062945bE35d0aE6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc53FF3BB1848443C4737277C00F907e6BeE04a64", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB6E8fC97625cf1dED48026622EfC8c1524bBD3Ff", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x69FC13493240C274a798e9DC9ce2219bfa1B1235", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.45589974442355, + "latestWeeklyApy": 1.5451004797290446, + "virtualPrice": 1034827262816724700 + }, + { + "type": "stable-factory", + "address": "0x224b27424Be9df6A07c8F8050D69e2B92D8a6110", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf527F1A2955aE574876521E8d64B23E9BeBfcE88", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5e5Dd0c68cDAb0eCf15100f7dEBc5EcFc32F06f4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xbe9a593092C86bE903746A7eBA2c8728210B4aF4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd5F0e7f57de71805B055305010522bF12906f86B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x99F2240C4eC497b05bf09C17C9db0B741D69C7A4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x09736495E712c92448A05DbfB6FE2571479178c0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x33C766A80235C2A0774f8E4191525fE995CD7927", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x120fbbc9e6aE733F52ef57D775C05C3Eff159c21", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1.140443585377296e+21 + }, + { + "type": "stable-factory", + "address": "0xfE37A0eB382E3b48f9864E22D79dC0C866Af20ea", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9a30e9A76aFbDf52f44B8b8Bc2dC3cd941282789", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.4089719405725223, + "latestWeeklyApy": 0.4587105222986221, + "virtualPrice": 1022289431884284900 + }, + { + "type": "stable-factory", + "address": "0x2AA2C17d7910cE8f2EE094b579eC442b1b92eC0e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAfd1c9fbC69fBa86341022Aacc2cA565586C498C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x81212149b983602474fcD0943E202f38b38d7484", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.2209552280740601, + "virtualPrice": 1006654269163259600 + }, + { + "type": "stable-factory", + "address": "0xb4eDEC8EEc350c36403496A2d6074c088e0b905F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8Aa1D5874e9Cd918d66FDbE0D3cAA65301995Be0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.36822007351429153, + "latestWeeklyApy": 0.3907608025994769, + "virtualPrice": 1009096980062920000 + }, + { + "type": "stable-factory", + "address": "0xaed94544941AC4bED9c61ED31fa843C85A7daaE5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1013940719890294400 + }, + { + "type": "stable-factory", + "address": "0x96D0DcF1626AD22C6b73a99878C22620cd9d622A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x98E943C63bb230bDf0ea65b7e7032ad2D9C5Eb97", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x19187C5376bE7f3fe034970EA5E4EfEAb4f9289b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x92d7bF7aAB0B8CeA18Ab23D4BF12639957CfDDd6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe8C1258f76Cd6C168aC0513841c05Baef1C7d7d3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5aFE53A289dbCa16de7c0D12C5b11a180556e9D7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x90a852D4eBCF99f1630535D52A0E9c24fe1408DF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x87733C1F9516467A74AE5236Cf7d3Ef1600F4f71", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd557A06113857D6a882A89bb6b004a9C2d681AE5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE8dCeA7Fb2Baf7a9F4d9af608F06d78a687F8d9A", + "rawVolume": 18751.668914655103, + "volumeUSD": 128.71429555426124, + "latestDailyApy": 0.0391540473728913, + "latestWeeklyApy": 0.042234604014068644, + "virtualPrice": 1005310877379996900 + }, + { + "type": "stable-factory", + "address": "0xA7DfF6f1dD4B25dDbf401bd654E5c8959044fCf1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe67E98408cd221512aE3c37A92992DabB1A01Fb9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x29e8d9A6F8404aF067c77A104C4FFe36Da99d260", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB829C1dFAED848d9C170457FcDC5dbb3C155C9FC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAF60C7Ac23D419cc1868f79d7182688188798ff2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe0ed1Af59cDe0d729A23bC3AbBE88CbBA21FA1A2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc9541d0bf695619943dD567B62CcAd9E7E25C2a5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x27c23852Ff93254cAE7d5Fd4183b331f700E09E8", + "rawVolume": 0.8958868751874676, + "volumeUSD": 0.03553485217167354, + "latestDailyApy": 0, + "latestWeeklyApy": 1.10696918463431, + "virtualPrice": 1835146171583016200 + }, + { + "type": "stable-factory", + "address": "0x30509e776cE04c32c08F1EA1Ee68A5fc09a02884", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x19606dBD974f56368d0799f97f0D17eA96E05b97", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x18348260e82255A0bB1FFdF8AEb70AD9e0Cc4A06", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf0BacB69af7063B83998e2a021dAeF17DAD8509D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xdA69581F7C5E0eEa92E8cDd89908352241aAE4FE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5f042956B935BB3B1498f488884792cc4299D85A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x95D69717D5b655F0D04C8445e312783a26cc7cC8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB6f8e5ddF3B03e475e8eeE609231397dE23b87d9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": -100, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfc48484f10B47666A7f8FfCA1Be4558D3C38d98c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000002307855050500 + }, + { + "type": "stable-factory", + "address": "0x86cF2E03fE3a269a2FEB70f141100762bF824608", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE3EA9B2991dD02876fCd4b423eFceEFA9a8b0f13", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA6eF5cC7AB095D5cEDA6fb86A119cEf125Ce3EAC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x42685233E0f20C2477bAE4345f4218D0eedAf3eD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x447646e84498552e62eCF097Cc305eaBFFF09308", + "rawVolume": 11867.361037756704, + "volumeUSD": 11670.711192999279, + "latestDailyApy": 0.30966973183119695, + "latestWeeklyApy": 0.38800937090530674, + "virtualPrice": 1022971409039969900 + }, + { + "type": "stable-factory", + "address": "0x0b88eF5D9E8D63A7c6b3B6a6d9b50601112A5C75", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000105138122538400 + }, + { + "type": "stable-factory", + "address": "0x309be34ADb7866cB3bDe9770fbeDc2cb3Be2bD26", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.05405104309696984, + "latestWeeklyApy": 0.057348766983955635, + "virtualPrice": 1005346877955082400 + }, + { + "type": "stable-factory", + "address": "0xc3bd48002c3283d13C7a86Aff8AF231E538Ed70a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xDa43Bfd7Ecc6835AA6f1761ced30b986A574c0d2", + "rawVolume": 449.84034931140866, + "volumeUSD": 451.148100725974, + "latestDailyApy": 0.8235267722424444, + "latestWeeklyApy": 0.9467336270092774, + "virtualPrice": 1035246530048026900 + }, + { + "type": "stable-factory", + "address": "0x1D0Db44354e3C7B84318073d5aD43921A790613C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8914B29F7Bea602A183E89D6843EcB251D56D07e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1033071209714733400 + }, + { + "type": "stable-factory", + "address": "0x79B639d0D1437A8FcC7A929B85e0B9C02f23D92A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8b9c26A1287815E83C1049dFfb6d2A0E6f205E30", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x747Cef5507bce90f5f8d1F06e1e870d848C5214F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5E0458211702142AA0833a4A60a4535CD891DCC7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000012367996338800 + }, + { + "type": "stable-factory", + "address": "0xe4A51084f2b682f051BC31715A271d9e84AC0FfA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xDee7Ac2510f2dA213f4CCFC3391dC5dde9658DfC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x600CD1aec3f8D3b1E8673f2d5Ec569feadabf345", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 4335071468366713300 + }, + { + "type": "stable-factory", + "address": "0x6CDA7AE2Ce3E6995E4f038BdCAA9F3319dC00f16", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": -100, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3da78d5C0EA557C28B4dC92A6629ABb03dC6dC7D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": -100, + "latestWeeklyApy": 1000000, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD121821cf14Afd5017F252Ec55Bbe093A77b732a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3EaA26a2335F745cb9F5FF3841d1522BB8522AbF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3ebA4c36ECa3E6443cfC1DadC5A05Ff94d249a08", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x64FFf0e27c223097c824f9d9278eFD5B55c3430e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x488124476E932A196A8EB547393A8b0b9d50Ca35", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x09992D921e118C8e70De260E74A5BC142234A031", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc948e1Fa13101aC6Efb3d5211e723092cA69e7Ad", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8cd3B45a93b8Bd87c11aAFCDcF7f96626c5e1D6A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x120Ee0D780f90F974250c9b14956702c1a4eE584", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3a2BeA29CB51975Ba337dd6ABf89a5F7D68f8EB7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7168C51e6E37AacED3AA7A15a03F77eBC90197c0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.14151789962724148, + "latestWeeklyApy": 0.1501861985920394, + "virtualPrice": 1002380065222669200 + }, + { + "type": "stable-factory", + "address": "0x4808064427fee6b44f087Ac6d31E9E865C005d41", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x038ff5771ed27E6f14409672285359b79107EAD2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 7707295530631715000 + }, + { + "type": "stable-factory", + "address": "0x40caB7C05fc1686e198C8d6d6aA4aaCF77BE8590", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3BFB65904cB66408BCa4c73EbB548126dd77f3db", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000354139701760000 + }, + { + "type": "stable-factory", + "address": "0x8354984E7a0337343E2C128F72EaB04b7DA120e4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x622703d6517BdeDF1FA5d076D30dcbB00ee18d5C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000404864340962200 + }, + { + "type": "stable-factory", + "address": "0xcECf60B95109Cb4C897b22877612228f0C76E52c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.421758184074017, + "latestWeeklyApy": 0.4475766283999594, + "virtualPrice": 1006831065564734600 + }, + { + "type": "stable-factory", + "address": "0x1271A6Bdc04CDEC2C8863361b11F2C95f2dff3e4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.521570063769361, + "latestWeeklyApy": 0.5534952164863105, + "virtualPrice": 1009831610299311400 + }, + { + "type": "stable-factory", + "address": "0x1e2506907FFCe238ee979202B09072Da81dFDD96", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x03B5BABD6d82F77D03bd7C39C761f0186288Ecd3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x81E94148a68AafCac58F7BDb63A2CA71773A5de5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAf280CE120cf32F26D359379F821f34dE5401790", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xCBE4F9714b10d5cBA9f0bBb6285B3b71725fE258", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB9FB6E86978f3eEdcc1184B25cF45613BB448Ef7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x669C75371c74b9D6b85789aAf09e56f1A7943F62", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xFfAc5967ECf88942aC2D14BD4124fED328eB10BD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfCE246efa02C6a30ED98dDb6c75d04F81D0d483e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd3E9014aa9c9531ea5A5fb96c3Cab4269C3c9Bb1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xAdf577B69eEaC9Df325536cf1aF106372f2Da263", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.8472445579407406, + "latestWeeklyApy": 0.8773385187367255, + "virtualPrice": 1018564480502604000 + }, + { + "type": "stable-factory", + "address": "0x742f732e36a52266095BBBB5e452BebC711F363a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8e2191b22198b7861e4635c92D924836D0681171", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x666Dc3b4baBfd063FaF965BD020024AF0dC51B64", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE4199bC5C5C1F63dbA47B56B6dB7144C51CF0bF8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x88C4D6534165510b2E2CAF0A130d4F70aA4B6d71", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7D617eA81BDA303913CeB2837264A45B64030AC6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x88Ad1B44BA28C00EB59C01287EDE8793a35fCfa4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1DE2e0862C47CED772898EDc3B5f221Aa8f8F9e2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x110622acEE6f8D8f8Fb2358Ef91ED372231AB548", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7Ad57384090277F53F00560dB37aF182323384d6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1197Ae7F43695Be80127365b494E8BF850f4752A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd23BC23Af71e1D2E04E3cE9C18b29AD3f1E606f4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x45D1533584bcedE740Dc5D01D553D07b7f600119", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8660108c91098F400C412529cf5BE3E0a9eeAC9d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd106fb0cFB6a3B6a8E9B08C19F8f4d39e4B4cda1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 97271875967149950000 + }, + { + "type": "stable-factory", + "address": "0x5Adb6eFE03005895813D825E3d3f152a420D6c1F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf462219aA7d7E7de1B1b5CB6c707288FD87d24BD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002881510517567200 + }, + { + "type": "stable-factory", + "address": "0x095b621B6941D4131CfaA2D05ce396DeFb79f533", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA0257D09c584ac10E014B90c1888f9571a6477aB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x47763F17E3c284Cc764EbF79194A45cCB89D2628", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xdecac24aA45B3E77B25c2D6120851D10Ab96D4DB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF88c3D3a7BCEB183c1030e25C3d29aB881468F87", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x88C9E968858f2dBedae4fB0C3f721628dDc592C3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x306bF37adE7943d12a56A56a8bf8C8F18E6CaC27", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x727c61F8403C4a6d1e1004Eb3B674142865878D4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x83f60431108CCBe6d6d8d0c442905E5435f7257D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4f427D27029965C165daBAB3bE25037C44C5d045", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb006047CF70F8782AB8f77D9eeEe432525C11E6f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc07CB7241347e18B2262f50C3034fFCfD41AA212", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xDdE5FdB48B2ec6bc26bb4487f8E3a4EB99b3d633", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.6098235043968669, + "latestWeeklyApy": 0.6470840170974768, + "virtualPrice": 1030700159683439100 + }, + { + "type": "stable-factory", + "address": "0xcf42Ad1523Be78dFE86F7d14F28EE69fF1857Dbd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8a95282517721Cb7BBC539B8834073198e35ad07", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000704949036874800 + }, + { + "type": "stable-factory", + "address": "0xA0E8A70f28C5342E3e01B14ff899D7c5D2CE0ec0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1BeB4686fD6798D33B45566AEbf2AC1940541120", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x632F9Be4Bf42e0dBb461CFcC0CF788538a49ED6D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x81c86081d533f280A8DAaE17F672Fb84B6ed65e3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 2.987785815213795, + "latestWeeklyApy": 2.514033775664437, + "virtualPrice": 1059478165780863000 + }, + { + "type": "stable-factory", + "address": "0x3CE39825Ab258693CeDb8Daf1db441627d011371", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7a48410Cb0C8294A8B5729d1AA567F40b7703486", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD9c5d82341bB1236bE95bd7B3be447817F501FB9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6E00136D2Ee7b488348E4b9Fb59B0f92252ae5c5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0950EA36770eD3b95a428c83A532B1fFA46088bc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD906Af5F18d8354d1252dc70f3A2AfA7d13d74F4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xdaEdd59fa2c5C63D46A3BAe5eD115247DF9Eb6Ec", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000432300 + }, + { + "type": "stable-factory", + "address": "0x1B82371A565429367f83598C3F25C1c815c2985D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb5bE5A8126244da7E388a88F16Ee8be54d22117C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0f485C761158974470fC803463c36642fb647141", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xdA446BeF29d0C5c25814Cc1b4DB8625C94f75AD2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1ED0855c93bb3eB531232D4350f49861B026D087", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.4451784932019809, + "latestWeeklyApy": 0.4724297296211155, + "virtualPrice": 1009496531706301700 + }, + { + "type": "stable-factory", + "address": "0xD94c851DfeB14c4EEd9D105D1718f7D7d1e04Fd1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd6D5e0bdbFee77eD7A501A5432a8b24a224F5Aed", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfE18100F0ce7c1B771366F58e6DC58d1eCb0409c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xcdb4f70AD54940CFE42f4A74E34C2a965ae66931", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x94b1ED04B83B819ef3aC2E9059eCC94F27ebeFfd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd0F9Ec5A6FCf1Bdd16B9eF8f2373855b7976b6d4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x012171C87aE388139e98734cf7b3DDB4eE38FE92", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x577715E323084C06553A0EFd1c38aA4aFBef3541", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2fFbCE9099cBed86984286A54e5932414aF4B717", + "rawVolume": 55.806746696210375, + "volumeUSD": 61.55370415591342, + "latestDailyApy": 0.2486518267453386, + "latestWeeklyApy": 0.8361643387329476, + "virtualPrice": 1015561777031803300 + }, + { + "type": "stable-factory", + "address": "0x9ec22669C820b3b4303dcA33E7d790F2f5b5eE86", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001137920028732300 + }, + { + "type": "stable-factory", + "address": "0x2ac8FdC32C4CABc9D3ba7e93aA205Bf6aE258eec", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x28080E0C53B204F4A8Bfe92935CfbEe9a3441777", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1401819EEE8F823e68Bfd33a086f5c836DCcC601", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x14bCeA8e653F435b9c91d564a7a9964503488963", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x018e7a8A99A71Ebf7694C8A01b255d6d981b3c20", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001984118650323300 + }, + { + "type": "stable-factory", + "address": "0x9D5f024e1A83c783f47F38945654b13Ecaa26A5c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.9108290059562263, + "latestWeeklyApy": 0.9665352482267631, + "virtualPrice": 1015424561259278500 + }, + { + "type": "stable-factory", + "address": "0x781f94B792EE2CC31A22C37b9b54Cf3e71f547a5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9D594aFF47f53De2a478137f5028ad0cb13e9aF0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x127d6369F33C12358EeA4a097952592a2D46a0DC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xEC836dC7562d97fDfb414C7D73A2c9C71C5b89E4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfBA3b7Bb043415035220b1c44FB4756434639392", + "rawVolume": 1366.4821384999998, + "volumeUSD": 1365.1339899226853, + "latestDailyApy": 1.1438187552111234, + "latestWeeklyApy": 3.5057878088676553, + "virtualPrice": 1042470150489800400 + }, + { + "type": "stable-factory", + "address": "0x017ed5D7e551F1b1987ff2E84DF357222a9e31a6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF270D4FDeE102c42F0E2c684E30f8280C80a2a90", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe4ae3Ee65bb687045e401827b404FeE34BE4BA53", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.6308979117239932, + "latestWeeklyApy": 0.46736475314637094, + "virtualPrice": 1245935955603907300 + }, + { + "type": "stable-factory", + "address": "0x07eb0B84Aec04D40F0A2987F0FC469cfdec1C382", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5B9eDE637D015600bbF1D82149332Ecc8701BCAA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF685eBCaC20D77F43EF4cf045d200752b5985eE9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x976A750168801F58E8AEdbCfF9328138D544cc09", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1006397481477270800 + }, + { + "type": "stable-factory", + "address": "0x6f73928cD742aFCC7254abB6f632b1a00C05790B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x849A17D1830032449a2113a503D4d47C2ba680Cc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7f60F3FF2618ee70D7fFdc179b65ce44d8C6b923", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xDFc1510D9a8Ed449dcB0AbD2b85400649524E9A2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA7dAF900d1d1750566fd6E6dDd5891FAA1C18a99", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5b9Bd0727FB017a2AdFDdD12a746BfDB90fa45aD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4F608B34e6eD644E69FBBd5C703727398996Bf70", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xeA909DF5d4f744217ff268552fF1B09F25D93A7b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xBE775DEB31B4ee5841a8B4564c9F3294987023Fe", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc9d602ecfAA46d9420721eCfa329E2de4D132091", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8119BA877875c134323905afEA498333E3695BF1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xEf5eD450FE8b5d3754E7da348d77Ff5014AF6B2F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf59A36E36F647E1EfAe594fF25d013A8a9B4Be57", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3945e96676a6ddb585C6Bc88ACb53d2c34e799cD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6FFA69b570d169317Ec8d619Ae6FA2D662a03d28", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xDD1105fB747f0801C299AA8484e991BcFd78aF0F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC90669861f3FEfdc4C75a6F8bC4BfbE2a5fF1E73", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xBF8DE138DB8256bF6E67EEE33512770b30C1Db74", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfd5BB985A536Fb0242224c5F4dF52b54fe5FCF9C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb0B108E56BEe86D3024802efd38069425882C50C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x83012BEA31d82e19a4fa5B390f47ea9Ef2c4457B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xaAea3f0C74943c23f627A3A63F4f4af507Ec831f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1de5aa1d0Dc7CC68efa51283699887Ee7d6dE412", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x63E271a9A8b8eAa47C684732770592320b6cdd80", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.6986192254937018, + "latestWeeklyApy": 1.1060405129444728, + "virtualPrice": 1015037125241489400 + }, + { + "type": "stable-factory", + "address": "0xda74Bc2e49f54fB74d3C836287b92AFbb767E641", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe7bBfA12031aeD84dBe5795244b0102f4F772146", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xaA91CDD7abb47F821Cf07a2d38Cc8668DEAf1bdc", + "rawVolume": 24576.94067461773, + "volumeUSD": 169.6892480606937, + "latestDailyApy": 0.014436239814652474, + "latestWeeklyApy": 0.12450431087915881, + "virtualPrice": 1004738991088425300 + }, + { + "type": "stable-factory", + "address": "0xC3056e1c6772FbF080737012F926AD9e5e815928", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC2CA3796d5b1ac1a37c5987f6161a066Ec2726f2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2D141b958724DE16075EDCc0956CBA6C8FF227ed", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1a5c41f2Cef4D6b1E236E27F1cB091c0471acB2D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x873aC1d622b57788f74E36402435a04ed8bAfDe2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xCBEBe4fb9FfA26912D60e6acBf7985eAe5590d96", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x00A54587359bb0620Ecf66E163799f3622F24977", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB95Ae886e346Bd4fb8c444e4FC56d61941Da94b7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x11aD5Bd7D738C8bC3c6998b4A6fa4ec28f87f52C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2281Ed56A92751f222ed10C292af119437F23821", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x56C36983DC83C6C1bccD4D8DAd7517B348529434", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3D966D7d6Ae268CE4C45Edcb82B2a694EDc5924e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": -100, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x45889477c33FeFAF4b34CaD0a8a8e8D0f9F63EE0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x01343441137a8e59c887C111Be600de781327559", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xcf5186491739aAC19db943D71a9b9B759F3AFaBf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.04300706376032526, + "latestWeeklyApy": 0.04564191005620444, + "virtualPrice": 1008616596904996000 + }, + { + "type": "stable-factory", + "address": "0xADb0B4287BCE455368d12513003aD2a8212FB9ef", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb82a0255909d5e5CC030eF01e278eF281eefF0aE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xa1eE546E2a53e86EA7E1c5D017af3FEa1D1A9620", + "rawVolume": 4.042384555443602, + "volumeUSD": 4.018007651513357, + "latestDailyApy": 0, + "latestWeeklyApy": 0.0229167213574355, + "virtualPrice": 1004743694928014500 + }, + { + "type": "stable-factory", + "address": "0x156689f48A2e7d7c44C6ae326A09dE37E94Ae619", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3e12bEd01061631C2f274d957b4C4c04374Bb6a4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0x80E66Fc895f2B55f6bc38D299b298130Cbc4FcA2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xC8f82CEE172aE80FE27cEE05e23790790FfB6717", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1D98A21fD824F3cB8F134C6C0bdD5Ee6139c2676", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xFEAbC07d1269aeD8FEd05B2D0609c8590563B220", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x194696f6b91e5Aa8A427feB688F6282acd10b4fb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x96903FBE71447d16D3D922F3Bc7839cE3993ad5d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x29a1F082DeE380747F3fc02Ddf744b4C336b2b13", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0x12130825BB250d97aeF9c3af6BC375F8D06D9236", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7a4F7a7681C5070C2971C209939d5449528B6fFF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0f110c55EfE62c16D553A3d3464B77e1853d0e97", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.17486569606302016, + "virtualPrice": 1004724011532620300 + }, + { + "type": "stable-factory", + "address": "0x2C3cc8e698890271c8141be9F6fD6243d56B39f1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.5183033733039855, + "virtualPrice": 1005621969143637900 + }, + { + "type": "stable-factory", + "address": "0xe3a26B62AB68FF8ddE5C8fab8Dc989C4FB7ae0B1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xcA409F7c21E970411e9A5b163BbF82d21C175274", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000959204425705500 + }, + { + "type": "stable-factory", + "address": "0x4D8D47Ade0CE047817Db13c088fEa289048480fe", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xa75407bCB092C5E722AeFbEE6E7809Cf8698c8a5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x28E78e7f1AC37ca1F7562B6F2e9745AFb9E69bFe", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb70aA4aD7fd5352eB2EbDd052De17f2F29971ecB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf9Cd46A36A904134656E6A5AdEaAF355f18d6D6F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x203b7Fea32a8C5f78F6f649Df3a2bF2edAc483dC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x568B3Ff2f6118838f0d9c3B73216a6EFC708A23D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x027AB3D4A5F74475a4199344e3e81289AF324449", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000056884197522700 + }, + { + "type": "stable-factory", + "address": "0xf4a2a86359fEa41cC33C027AeDe5322ffb065629", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc0F20Ae0F7fce1889B307C368B1Ced12680d099e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x951e1c55f642eAEF65bE1790991bbF5826B973a7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC0A931D840953cF066bE397bE433708D9a157C9F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xeF584200c16c78bc0801C76E057DC4f87EA63d3e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd0D0F4db3e22764778C84C50838d1401870F89cD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd3283D13E8CE213a9659AfEe9BB3ccdFE5D9c2d7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2F3E9CA3bFf85B91D9fe6a9f3e8F9B1A6a4c3cF4", + "rawVolume": 3797.176358874176, + "volumeUSD": 4.096490397940724e-9, + "latestDailyApy": 5.085429264770647, + "latestWeeklyApy": 3.0799244814051496, + "virtualPrice": 1024504880791957400 + }, + { + "type": "stable-factory", + "address": "0xBD4d1eFbfe13D5cef098ab42dBc59e73E1C20286", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x03C805E5aB27b04d7B2796377a5BF27Bf79F08eD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe2f81A81a8f0C4cFB2af97f9fcF112f26916c2B2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5A6F8593f546918158728bE178249544f28E5151", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE3C19E77447EF20F0e96c61Fa94E6eb9f810A50C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000087795328086500 + }, + { + "type": "stable-factory", + "address": "0x9D2acCCbEa8860462FB73b58F20Fd9545B6Ef93e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x99992bb1EaB583BB4547468de234DC7B8Eede8e4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9383293961E19165b4891F0856C78fBc95F695c4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3dE21CCA8F4e5fedCE156f8bD4ED6E74fE85ab2f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1004628455871303700 + }, + { + "type": "stable-factory", + "address": "0xEF978c32151f3fBdBCa825A5DE8011D29A84B7D9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.0279767177313381, + "latestWeeklyApy": 1.0908720171935338, + "virtualPrice": 1016048000023000000 + }, + { + "type": "stable-factory", + "address": "0x3f87d3258dBF9580Db405Ff8F05aB2704E31F192", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0b37581ccd14B5073704445cB9e5dD10A09795a5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xCEFc3669B7Af16E19579D76a2a8379B69A70141a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x80F1dbFA36504cbAAFC81ED23F250C083f8880EE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA3d6fB49bDdE6fBF6aBA98b6F28631d7D475da7B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC8D95F04415c28ab7d5BB7Cc402cFe80De6A3Bfe", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.09299174497769958, + "virtualPrice": 1001811552414107900 + }, + { + "type": "stable-factory", + "address": "0xe968dC04927E43fD3A93AAbfd4F385C4dCD367FF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001114997726220300 + }, + { + "type": "stable-factory", + "address": "0x03aF5B72C0304DefA28DEBaBAb49fB6CD66ef371", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000225751548569700 + }, + { + "type": "stable-factory", + "address": "0x6177d37E3f73f6dF8DdA9aC5F786335280c4c6E5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000007891153500 + }, + { + "type": "stable-factory", + "address": "0x8cC4E7bEEf42887946C91e94a33fbe133daE4186", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002006749559312600 + }, + { + "type": "stable-factory", + "address": "0x682931BD391587054ead3DE255A56B30360779D4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000033199213213200 + }, + { + "type": "stable-factory", + "address": "0xd8A2E3B6d9a5Bd592022C3481EC57dD8CFc15226", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.8966731176133225, + "latestWeeklyApy": 0.9515175524036579, + "virtualPrice": 1009519206935464100 + }, + { + "type": "stable-factory", + "address": "0xb28551b84656C9F578cBAaa3E5C19B2d0E61EcB4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x531A1df94c84d344d8164147DA68765c815b08E4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4915C9BeE38367D4F24e94950406d42e521fEC68", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.8616287421827185, + "latestWeeklyApy": 0.9143178667488705, + "virtualPrice": 1060286700486653000 + }, + { + "type": "stable-factory", + "address": "0xC4FB41Ac5286990fB30f0B898B355fDb66781a6d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.6839555034181553, + "latestWeeklyApy": 1.787218223837117, + "virtualPrice": 1017168872920948600 + }, + { + "type": "stable-factory", + "address": "0x54A8F4FBc322C31Ee2d85a60CF6F9c1d53bE1c52", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2C04A1638643eD586268542bD05aF7BAe7096057", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000037294965936800 + }, + { + "type": "stable-factory", + "address": "0xd6653a88f9FDCe462901b61eC3f4A267E6dcCeD7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0E8313Df92F3488A5aa37eeE3e6D8f6289dDEEAd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4797AD2e806F8bE7c7A137c3A7de17205072774C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4d0dd2A622e83345E3145255338F529D3922f471", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.904928354437895, + "latestWeeklyApy": 0.9602730257956438, + "virtualPrice": 1009106785761086200 + }, + { + "type": "stable-factory", + "address": "0x4247d47842068E7cA84b97201033bF71aD8e7d2a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.5744632617117116, + "latestWeeklyApy": 1.670968385820526, + "virtualPrice": 1023520312961863400 + }, + { + "type": "stable-factory", + "address": "0xe8a99b38fbEFf46270789104505b7a61A53235f2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xa138341185a9D0429B0021A11FB717B225e13e1F", + "rawVolume": 892.8920466337444, + "volumeUSD": 858.8093721939737, + "latestDailyApy": 1.0276024461864042, + "latestWeeklyApy": 1.2178940404259153, + "virtualPrice": 1051392944159729500 + }, + { + "type": "stable-factory", + "address": "0x515c04e95D48f03899Ca97Db7AD1303481a83CD1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe94C85432035Fec4D6418E924639D706e0Bf4Fc7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5C0DD657e7dA9B7f74c40Ca746CE5466D4Bdc346", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8e17276A945860188FCED6D4Da1815d3C9eC34d1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x986E4992F1ccFc28D9E4bc1A91f79661ef826E6F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3409c7d0cD42B324aD096f77E1C3A25849352496", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd5FC6E5a7691CaF5Ec1cBa6cD74dad80F651f9f5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x64cdba07e1439D88e8dC7276153dBc3dfc3B995D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xa3B3Be4281a17b01BE99503a362d193075bc81D4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4258bE1d4F95D63F348fD9686c3a9894921E6FF0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9aab2fC6e8142e5DeB706A4440390D4211A8D449", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002383817061632900 + }, + { + "type": "stable-factory", + "address": "0x7BBBa4a94c65F47342Ff1404091e4bB52F31CD26", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1798289aFb8F55fE3782513DF3bBb3ebBa1E31DC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x159F772FF9b8D8a75486f21e172C5571BA38A0e7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002852720874729200 + }, + { + "type": "stable-factory", + "address": "0x6ca05CF69Db069215FfDC7E553916c1757c5C074", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xFc4c492d9fdA61e36cAbecb45A4Cb309959B6ab0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2A70939eFa5eF53179a78EFc309fb0A551e253aD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9984Ae20c73Be2d43B29D1FD09D106298926d487", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1c9Ab1809e90F86F36916E31e2Cd6d6218aA9759", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xFe93eEdC17EA964Aa8615485a498394d3d22AA28", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xFAC5CC612bc5ab9E6C1C676B548ADA0BdcE2C2Ea", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf7c3DBD6Bb38285412C02d3FDecef317fDCfB5B4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE58C0A2c26fd644e02Eef5C87904318b405BE079", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000019931062425200 + }, + { + "type": "stable-factory", + "address": "0xDa10C3f360dC741e7359D561Fb4b4e008C37b356", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.3019140093477155, + "latestWeeklyApy": 1.3816532703965212, + "virtualPrice": 1011499279953389000 + }, + { + "type": "stable-factory", + "address": "0xBbDA65cfa2F90308da20572E391f03a0CC6B4A9C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 1.3681327374900132, + "latestWeeklyApy": 1.4519485431460089, + "virtualPrice": 1012062253106320300 + }, + { + "type": "stable-factory", + "address": "0x833e4b9740B4C73cC4870D28492A296d005E2895", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x56223D41bb919c9BE6b3764cB302E426DDaB890C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9a47B32577eEAA83A44bC5e4A2B6486B9fBC76ea", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xa1EeC03E4FcEb83dAf9eb138dc6741af80074eAC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 192183255214234660000 + }, + { + "type": "stable-factory", + "address": "0xB05475d2A99ec4f7fa9ff1Ffb0e65894d2A639f3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 4.01729992366792e+21 + }, + { + "type": "stable-factory", + "address": "0x7C1aa4989DF27970381196D3EF32A7410E3F2748", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe23CB450722F6B5466e60D036981b4160721D146", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1005156387468843600 + }, + { + "type": "stable-factory", + "address": "0xBC2843F599FDd9cDE760e4744e0B17A6C7154019", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 4982211136240819000 + }, + { + "type": "stable-factory", + "address": "0x6cB98aA5dB98BB19b33c5589C6c0647e3DF5f73f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x807813CD0D637c1564806baf969bdDa06394fCD7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8ED8AACb7B687F99fc531f13664d248EEbB06b10", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd687899675d24A2222579c624e5325F364a58EEb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1005124068820067300 + }, + { + "type": "stable-factory", + "address": "0xEEf41Df038A757EC7A999B3DbbD1c618E7D96FC7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1026080521596803700 + }, + { + "type": "stable-factory", + "address": "0x01f876Be20112970e12047b0eD0e46cDafc33dcD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xB515cD40A483d7dB6Ea62BfE5d69D1cD0eE2b6Dc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xaF2dc7A982Dcc8d6E3DE433D19Fa09c728283724", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0998BDF6F763ef3e069457BEA573A3a73BE66Ae0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1Aa22D1b351275A2a7BBCDC4fdF422b1Cf69DD36", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.927173348957333, + "latestWeeklyApy": 0.9838822167981487, + "virtualPrice": 1007505468318500900 + }, + { + "type": "stable-factory", + "address": "0x72c8C86490f2c0A525ECf7B21c4191B3d9577871", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x82ce61B9F905524f6752a7520Ec52487Aa8893dC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6937e4377922f71D5EBe2323b59e862CA11d6aC0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000130181066249700 + }, + { + "type": "stable-factory", + "address": "0x67c728561FBF6272B03C567A0C757eA71602FDDD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000495714329647500 + }, + { + "type": "stable-factory", + "address": "0x39416bEA4eF71F8f9cE1735299a5AB43E14cee2d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 7066664492898578000 + }, + { + "type": "stable-factory", + "address": "0x6e7B61CC248771DB4673b65C0B28C10Eff4c10A4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x48F124621E77F3d3cb4893D597538C5D586fb32B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4c480fC893D11216257447FaDBBe8198Cca9D51d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x87e5433c5436E50D6C1FEf64371Fa1b8D4bfA19b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xdb7ec0677019F4AAe52EA19c36aFD0fAB9a1325A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xac97eD13191E90b284c804c83BfBb73cD37316Ee", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x556BD8f6e7a470E610D45f15aA642d8F557c434c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.34270553695336936, + "latestWeeklyApy": 0.3636838087380134, + "virtualPrice": 1007086342906018400 + }, + { + "type": "stable-factory", + "address": "0x7268b3d1842cF2A27E40B9760C59f01a28b7c5F8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x503e9b421844A86D7Fbe893bc2654Ae7602e5489", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0941C1B05b11E5B26b54f842Ac9c953343Dc72A6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3018Fa476030Db01914536b04B2108F73f613D6B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xB6aC3E9F5B8Fc6cCA87CE221FF794f0253d4a4e7", + "rawVolume": 4.935962851825605, + "volumeUSD": 4.93739098217026, + "latestDailyApy": 0, + "latestWeeklyApy": 0.8566585222408607, + "virtualPrice": 1003322246401957200 + }, + { + "type": "stable-factory", + "address": "0x918a456616290ee83c31619fD3717db61FbCf351", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000001000000250000 + }, + { + "type": "stable-factory", + "address": "0x990d79528c7Ca053Cf33310AeB6713b133c07D25", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xdE6A6662Dc65Bf26b048eFD8155CcB84B5f778cf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x26155E9D7DaA9d0ce3a13e53306F2B369451c080", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0C9A46471DC9fB8F8C6Bd4a14E113a87395049a6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5272B42331F3200202A68D3bc6D373A87651DADE", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3E52105bB2B4edCB8E40Ca5B5eC8D21968577aC5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4AdF0Ffbc1505725e972db4A8166C1DEE1709F81", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7a5E659A71671FEB594a2A80bcEeFe8FC6E825e8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 5.549752900872185e+24 + }, + { + "type": "stable-factory", + "address": "0x7d158Fc4623b0178512880e944088D9BfF94a553", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9Bb0aF8f370E05815eE620eCbbB95800e13D71E8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000821050803687700 + }, + { + "type": "stable-factory", + "address": "0xc439a7b8eF8064270fE74852Ed173317BBB2d334", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6f8b5D01c0b917028eadB0C56FD9392ce314b941", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6D4f4B2e1Fe9d1743a3fcE38fa655135928f54bf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xD2dbD1206507b5Ccde42f125844F77A9e4A42423", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x99bfDbbF4723023813B6f2F1C89495CD34CF291a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1B33488CEa0087452b13b24318fc8d7bd0ed441f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x02E4a7d430971BC52800467eE1aFFb1CC0ceC2c8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc5246437640f68238DACADA7b7A55356f24AC41A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6141871F875a93F8195baA059C14f95508aeae65", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x0a13277997Dc69D521f7Df1BA25A3a2F58D44449", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x90Bf7353d949f1F402dEaBb7614aB3d02135dC14", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6F758DFb5f28321d79AF174673Ace3327c65Ed43", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd5f4f5dd13CF42421dD06d054f999fa57e387136", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6e1f138Ab0D29461879504483D3216AC66eB5316", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4dFFE1c3345e05D9bec8398D815E9cDd932164d1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3E27a4A3AF3Bdf1289E673a353454E821c265523", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000377613107859700 + }, + { + "type": "stable-factory", + "address": "0xd014bD4115F4d58a82073A0374C44F83743a8573", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x08365E79bA5bBaBda54e946E30D34791E7c83CC8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x861a2206f7D416803645BBeA72ef898aef34f1Fd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x1B2a289363Ea1ca5d210C076ca3d423298021df1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC530B25B2c6aA54baee39662C73fb14748c54a40", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5FEF9d546BBe056aF00a08a6a107dfD017ff0ccd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF13F427364378C56218ebbB976dad800F8e4B68b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6a8a65883C212aD0900373422E025f5762055646", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfA822431300D795fdC29258aD534D3f9f6d62a13", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x78279CCa6788Fa69465668d12601e520F5ACe18f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2fF4c236A7E3470cE0932379DE31EA0Fb8759110", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x3545E597f7225D1eE7Bab684af0139398D0d73a7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xfeB9Ae6B5b1871d49Dc332ED2C8de70fD26A3881", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x720e3077d8966faa412b356868574d998417becc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA618d8DCdCF84157785990f2C18c0A42385e4f69", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xE83689Fe66a53B3da4D42C14F8B3845632263446", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x227117cC56f865e065616CEec5F7936546ab9b3c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5Fb0a087E935501921a5c651699a13D34A4Fd011", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x87dC3802EF635909e6Eb7436CEfbAe52A0Ccc8B0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xce70B7D382C759AdC10b128E2bA202C24bC04dfd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8393713289D80c10f8B95e392CB07adC964A34D0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x4F499Be6368b9F4D8f70CA0B343f7b2C0A14dedB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA37D833E69640D479795926d579Bf89889d92BFF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb7d2730f9CCE5b5bCCA6E49Fb456ca7EEeB17881", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb447bc1bad341664252A3a340C0C9b18b5147Abf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5B00927B9512518B169169D8d05E1042Bea00c0f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC8632c0C49cBDFebea9C87a119Ee23588981e155", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6c9fbb58Bf6c0dde983465b070dC34f66C3849dF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xC3407B28a58B8433B7fadd8a18886eb70F66ea24", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb61Ecec987a9529dbA13a8Dd10ea24446ccBB6ae", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.24665815762821008, + "latestWeeklyApy": 0.2956006641703146, + "virtualPrice": 1001872204051780500 + }, + { + "type": "stable-factory", + "address": "0x22CdF41236B15915eca37DB939D198F6714Ebd51", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x21B04BD552cDC3ead9A23dc01a9517Eefae73918", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xA691D34Abf93C0A77998e53B564bEcfaf46Dae27", + "rawVolume": 2923.5585490687126, + "volumeUSD": 2912.3374834523615, + "latestDailyApy": 0.000493309711702139, + "latestWeeklyApy": 1.0232995947760504, + "virtualPrice": 1004926318732840100 + }, + { + "type": "stable-factory", + "address": "0x749F32fF64d24948211497e11749AD2Cab835631", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7783A6FC9E5E9e5b4841c6b5Db30385a6Fe5C418", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x7789A141e8e1201De01671140f57e56dd6aF2654", + "rawVolume": 1.0054195, + "volumeUSD": 0.98120142742, + "latestDailyApy": 3.774610892195729, + "latestWeeklyApy": 0.5291938532219875, + "virtualPrice": 1000305567590470000 + }, + { + "type": "stable-factory", + "address": "0x3BC08f674210bfB26735b73B4f02ac4f34aD0AE7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000071867502871700 + }, + { + "type": "stable-factory", + "address": "0xFd185a4CE6EA5386c248936621E5484cd6F752D9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto", + "address": "0x92215849c439E1f8612b6646060B4E3E5ef822cC", + "rawVolume": 156240.5957724773, + "volumeUSD": 377145.14674533135, + "latestDailyApy": 0.12247412942361091, + "latestWeeklyApy": 0.18034367131984919, + "virtualPrice": 1027931744142887400 + }, + { + "type": "crypto", + "address": "0xB446BF7b8D6D4276d0c75eC0e3ee8dD7Fe15783A", + "rawVolume": 1004.2888910839727, + "volumeUSD": 1051.6204415016725, + "latestDailyApy": 0, + "latestWeeklyApy": 0.023829745192460727, + "virtualPrice": 1005173546876738700 + }, + { + "type": "crypto", + "address": "0x751B1e21756bDbc307CBcC5085c042a0e9AaEf36", + "rawVolume": 0.543996258488672, + "volumeUSD": 1.1330300849636668, + "latestDailyApy": 0.020281321042125988, + "latestWeeklyApy": 0.059032041705431304, + "virtualPrice": 1065742922733724900 + }, + { + "type": "crypto", + "address": "0x9b3d675FDbe6a0935E8B7d1941bc6f78253549B7", + "rawVolume": 10.7894712893769, + "volumeUSD": 23.482171501111683, + "latestDailyApy": 0.35186405045086744, + "latestWeeklyApy": 0.09157956839056514, + "virtualPrice": 1002862529630554000 + }, + { + "type": "crypto-factory", + "address": "0xEC5AFc9590964f2fA0FeED54f0fBB2A34480908D", + "rawVolume": 0.4517180829173003, + "volumeUSD": 0.5999526972304675, + "latestDailyApy": 0.27068629804096744, + "latestWeeklyApy": 1.9856714509884243, + "virtualPrice": 1140148978065461800 + }, + { + "type": "crypto-factory", + "address": "0xc7c939A474CB10EB837894D1ed1a77C61B268Fa7", + "rawVolume": 52000.920754070125, + "volumeUSD": 45098.87029687935, + "latestDailyApy": 0.3419855933741056, + "latestWeeklyApy": 0.6065056623759224, + "virtualPrice": 1010803703381283800 + }, + { + "type": "crypto-factory", + "address": "0x36BECDcBdF49255F366a45B861B4223b482D35e4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.05132490000276935, + "virtualPrice": 1003814260843961200 + }, + { + "type": "crypto-factory", + "address": "0x697fDefe26AcA625c86DBD07D3b95fDe3E7F7de5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x8187d4734Aa4BD78f0A2F7941E276E410e37f033", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xf5BED2BbE798187272741c3042CB662c8Bb67DAf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x36bec0732c913C87a558D6A16f077D5B3D7476C7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000167787786519000 + }, + { + "type": "crypto-factory", + "address": "0xC0B78F2e96De56d08C7608697680e935FE47295B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x48087143Bd15b99e67a8cEc578E4D884A4bBF124", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xd9F354177Edd66E7A6669F33d0Ec64C14E153b38", + "rawVolume": 11.129653434242444, + "volumeUSD": 3.3730056776207595, + "latestDailyApy": 0.48551831760244024, + "latestWeeklyApy": 0.28387262237707933, + "virtualPrice": 1005266143909560200 + }, + { + "type": "crypto-factory", + "address": "0x30F217C3423f824de89abE941Da49887BaA8485d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xcaC8002275BC596e6FEfc88807E75f5B6646Fc10", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xB47dF195c7805B2bC9a20c2631b2234753625CD0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xFb6FE7802bA9290ef8b00CA16Af4Bc26eb663a28", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.00016535053148913903, + "latestWeeklyApy": 0.0007940729692457182, + "virtualPrice": 1002447973696320100 + }, + { + "type": "crypto-factory", + "address": "0x5E078b90Af4A1899ae0B1BA17fF2E443F4eb78B0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x8705A57a7305E971d8fc897dDb4E0b535D7a047e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x7cC19f8c258D7F489BC1074437e25A46e397688F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1003603048377783000 + }, + { + "type": "crypto-factory", + "address": "0x12FA77685728ABcBe1d5c7C11638d2C8dF250478", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002751974497496200 + }, + { + "type": "crypto-factory", + "address": "0x36fae0c62fE24C7Db4983af90c8901C1D7612cD4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xE8C9aF58EBA1DC532C1707B1e28736d3c9d1AFed", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xeB5f4c45E29C05c5FB166B72A173dC32831b4239", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x8E6692B6Fc3bCE7d5291C96ff02bA24E1a329C60", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x48d794c9B1acb3864Ae0c63E9E5D19a6EC80A2c6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xc7d7133A2a4CB8D8B128e961eB8CD3AE85Dd6204", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x3320C9E72fFa1116A7Bb5547F5aE7B2fA2A9EB75", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x552FDB8BE01C640fA308481aB1E9a7af9D62D0f7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xF4f2c1710e4470E58e4841ea0653f949bdDDD67f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9D874dFC60edc490d76f78663204FcFd608151d7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x453c551879234682D2b823EdE73a2Ce41a5150AA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x38aF0A6D3551fA982Ffad038B3b238DF3757204B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x085Ba43f0f6d152d6842721Be0BD18cE2B828010", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x4E7F7A0C44618fc0379f633A6697137955B0375b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xdf458f474810Bd9157C480Fbf61C0A80e6221EFf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xa94fE71A7aAEbBcaEb3f43F839bBc3C5A2D287AD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000016862973092500 + }, + { + "type": "crypto-factory", + "address": "0x6D1C8e33c9F45cFd41135705528afF3d2010498F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x41cE0136B3a9EE7c82D79fB72Ff48360BD5a3263", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x8202A631ED5027f17270C50F5C8873Bc66192d64", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xDcE686fB06954DD54a2C73D4Da97e46692D3990A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xD7EfB91D3afCC0a80E8B14d40a15d2A0d7754907", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7aC0401b1D49A8E01daf46Cb5198654F89e64Dc5", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xD880ED1456A16C463724cFdD329806ced7529b78", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x0C3781F1FC02D5f9f43f53D81898AF363042a187", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x00A4eBb5b2F51882Cf7DF65E556Bf0B742F02e4E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6908d971a43EDBaf8E1aC29Aa62B604E030FEe30", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002745616837499000 + }, + { + "type": "crypto-factory", + "address": "0xFDdB94f462Ba7D5177B48ECa41F444aB05AF8C79", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x0c8c8b4BC7930EFECd85d8a339941563F44Af572", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x574FA5a78bC9CD15Ec019be8f46001d268DfDbd2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x54B46c05A6815F5130A3ED5cBE5b59113146a511", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x73C1537fe5b506172DA6CE5EdE31b57501608fDD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0xbe9953072D303A3A438D102ee64C20Bd7D01883B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xC4A362BafAba6c2F0D8228998D8A486695CB2c08", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x8a475218723f31e480696b091890F1C3E8ccC281", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6Aaf3cb86389bAa6CD61592C372f8bF06B2D48e4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x12FA7D6d6158e985016147A985b24a5BC6584760", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001725690808586800 + }, + { + "type": "crypto-factory", + "address": "0x00E18306D011bE6F35933146872dF32F4a86CB93", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x23bADb16b9f3863217EEC3705DeA14a0153600Fa", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x987a1fF376de4D3b745C1ABECBC6cC3486cB03eB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xE22CD0A52d5De7b021DF7a9261d5cbF18F237900", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x78Af761a6030B1011296BecAdA3068eEEdD97795", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001395094303258000 + }, + { + "type": "crypto-factory", + "address": "0xd1F6EE081f7Afd7BC8A4cCD4cfC2112a61429E62", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000770830057800300 + }, + { + "type": "crypto-factory", + "address": "0x6c627bb2D47aFF3b3922B6901b4CB9c0963756F3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xAc0345C5fabe186c113bD763c542a254fd8e96e1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x63923C573e1F5C1eCe24cedf45226E1be2c5d170", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001111301792953700 + }, + { + "type": "crypto-factory", + "address": "0x152C96B8BfA478d311eea46f2BF1F6dBDeB4A36b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001127816717134600 + }, + { + "type": "crypto-factory", + "address": "0x62B2c0c64FfFd8956F0eF100D95875cf59e296e9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002257722322949800 + }, + { + "type": "crypto-factory", + "address": "0xeF35183C35D5D31d71EE9Ad891438eba27cee259", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001376910035875300 + }, + { + "type": "crypto-factory", + "address": "0x38E3ea5Ea43DAdD5FB15Ba7D3EF6dd9f802ECA8b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x8CBCcFF6B75674ca60F081F477A9fD037C0836F1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x12E5C03750ebED2BfE74Eda0cE755f407Aacefb2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x66bDC0B1864192a15f1F6868eFC315C8E84C6b0E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001437243361395300 + }, + { + "type": "crypto-factory", + "address": "0x95aB1A82AF29BdCbC64176D83F4Cb1667aFd8517", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1007094381106351600 + }, + { + "type": "crypto-factory", + "address": "0x4e061eF1B15abDE9B51C08661Ee56976D411d9a6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x739aC5024eF9CA1719B8f64D4A6286fB0E5F91fb", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9a3BA4734d1cED9a7a667d78470850d092BfC994", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x885d0ee44C882c4eC30a51e8C0468BCB6689e0e4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x2d4708d2aAbB53b8d95b5753CD14930cd5a64F99", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x1b79E223EB51978A39d3bB9d1b96b313fc300050", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000452645365952500 + }, + { + "type": "crypto-factory", + "address": "0xcA6f48D161E66A45b139c74539938dA78167c5DB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000916838997466900 + }, + { + "type": "crypto-factory", + "address": "0x29e9BCfa2d166759075815f52A4C1968BAd97C0E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001724678089235800 + }, + { + "type": "crypto-factory", + "address": "0x524d913F42bC78e02c80e1E99439A3EEe3a005dd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x7C91a679D1e03FF9dDC0919e331CbFeBC0bc38d2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0xa592b7bba07e3BbD6D95B79e08D96CE6a8a4AdB1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000891305126139400 + }, + { + "type": "crypto-factory", + "address": "0x4380061e913c9ca7dDD29fc4F15739F1Fc6d666b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x7BBc0e92505B485aeb3e82E828cb505DAf1E50c6", + "rawVolume": 5035.5038870841845, + "volumeUSD": 5045.014799016108, + "latestDailyApy": 0.4057926767320863, + "latestWeeklyApy": 0.8750717674512298, + "virtualPrice": 1009401039659567500 + }, + { + "type": "crypto-factory", + "address": "0x9730e3051a60c534979bCDCd8A5FB519bCB22545", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.6003800543416205, + "virtualPrice": 1003829818307700400 + }, + { + "type": "crypto-factory", + "address": "0x2246CCaD865813ecc61A496Da7f5aB4eB135A1c7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x1091FE61221DD3f28B9904C371b9E9A9C9137683", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x4779a3B6412FE3218B8e270f0f74d73C841BaC04", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x0F6B7c063916fF3AD4DB7A669356552d9D17a3D6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xd9175d9369B26AAc8803818dE1cf366679A37946", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x0604ed64B966b4f8184ab0f084a900AB8Ba9Fba9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x69E92e8E42064Ba50908f81E695CF55141805A9C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6bdD11CF1f64712b13F3897C1fDE57AB60002861", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6351A477644cbF1505BeE87710FE071e8aBEf2fc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xAa311EDDfb19F2A542641D6982aa9df2d28ddfEd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x2B433CE7Ff7eEEc2981351a9De6E46a0510eDd28", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001585962863276700 + }, + { + "type": "crypto-factory", + "address": "0x5e9ca97E368Ff54428177EceF328a77C4BEB85bB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001865912411510000 + }, + { + "type": "crypto-factory", + "address": "0x4Cce5169E5F30FF8D149b658495e80B95315fA62", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xC01a983D884C954746b67DC85A857ee6db9a1d73", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6993F9f9873Fa5A338A321084EE736d1C0913723", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x257ABFFedDB458B924dBC6966bDaa4F75f415169", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x653bfec37A09eB090A269d4450e3A3f1324a5F66", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 2.3145743321414836, + "virtualPrice": 1398306012094443800 + }, + { + "type": "crypto-factory", + "address": "0x3f996911ADcBE9449abf6350961e41d21BdC9c2C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1446062903642369800 + }, + { + "type": "crypto-factory", + "address": "0xa7C475FC82422F2E9cEfd6E6C9Ab4Ee9660cB421", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001985629440879000 + }, + { + "type": "crypto-factory", + "address": "0xcd7AB39e2bA92ed6BDe88a36C2937f255dE7c702", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x5d59d7DC78b8b16b2c6003b2E4F3f915CA5F7AB6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000101447390666000 + }, + { + "type": "crypto-factory", + "address": "0x180AC510236F28CEce65cB6EFa355C2e3864DDFd", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xea355fDA42B31401473D2752146c7C6fBb6CA261", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x1d1A28b9Eac0Db757BdC6A9e8b5b379C9C92e181", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9c55D22c3509Eedada6654306577E1ED21226f07", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xb1FA859637319F63A555f70A59aD79a5d5516D9A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x3BFbB3200eB513Cd9912848Ad97438A7aD178034", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x1774fB76fe0eC9B30f937DBC036093681EE877F6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xfBD717f818c414174c5999C42fF94d6eE218A323", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1851258666438257700 + }, + { + "type": "crypto-factory", + "address": "0x41904e5cbc0903f527f0AAE1d29D558300D76ef3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1107097182404204200 + }, + { + "type": "crypto-factory", + "address": "0xC3e7aD68459B12278F69CB30ab14176B096FdDbA", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xfB622b132507c81A9233B888eD2f6B3a2cd59cee", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000100 + }, + { + "type": "crypto-factory", + "address": "0x7b7632de25CfF361438f0c2245c1D8fCdAFafB1B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x0Cf860855c82E04059614980F31EC1E5E42E263A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xF624fE1aB97522fF28bd5F54A008C1df7218b016", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x427b3534bf506D2Ed4c1D61EaD6aa6b32aCe92Cf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x16358AC7E41d02b7311Fd04d30a0C32766796f07", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000353401141209000 + }, + { + "type": "crypto-factory", + "address": "0x705293caBE1fBA8D3A9b8fbD233cb3931c96a67A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xF77E41b5Ab1C737869C17463DB3F3ED48ce36c13", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x17626Ae92a2C638EC911B26a121b02BbE90C1180", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x2B9582f6D0c648815f5cFe10F74FfccaDf75A4ee", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xfb9786a7585b093dc551d0fF45124e65094E8E71", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x4A4EBFD1fB4Ceb7D459C2E116fd6Ee2B49ab3CF3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xE43b27Da311F25Ac6C0Bd5eF9062f8fE8D54D8F8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xD7d708EDe85cCd464Be5a5b34278FdB30a4eB958", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x4624fb57F5d4693EDD1A0a542e5C7AC0AfD80640", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0xEe9FD26653FAB6FD91AaC08476D40a657454a30f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1004615478593851300 + }, + { + "type": "crypto-factory", + "address": "0x77188415B019Ae393379Eac882C39E61C83379ee", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1008480932814625300 + }, + { + "type": "crypto-factory", + "address": "0x2e53d2676Ef1B46bfD49EF906A438d2Fb1bD5e6b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x20c10E1C7924f38F7419572ec6a5110F95978f3f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xF8F569aAf3aBD1e1c5e75d9445C8938D42fEBd1C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x6136d2cc99c6C2bB97203966731df8A3F13c6F82", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0xAA910CD0A8a46D08aD241123B52FA78A11c88812", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x9F00B6a156BBFA815321d6b430aE45b5245dC435", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xCf5911Bb8aeAf9C659F56bF2B4fF5f964Df99100", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x8D6E90DD898fA76160ef3967718Bade14A61E20B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xE80a5A25a4aA5d7c7619E84e934454f6eF039316", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001253912309877500 + }, + { + "type": "crypto-factory", + "address": "0xC32b4dF5328da1E31817AaE70464B997cf3222fC", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x4eBa7626eDf23541b1202EEccB6d6E94a42Dd15E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1002199363614835700 + }, + { + "type": "crypto-factory", + "address": "0x44F8E3C20F65587D7E2e5C8CA5d935F1D9b01CE9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 990287916682975600 + }, + { + "type": "crypto-factory", + "address": "0x5751867DEa8e7858899B0cD7Dd66cF35FB04ca78", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.08938939347551411, + "latestWeeklyApy": 0.05168719918884346, + "virtualPrice": 1032632370881056600 + }, + { + "type": "crypto-factory", + "address": "0x8EeDBE53B5BB2dDCd1Fb669e007f160860C6EAa2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x128658A00FcAbFCdA1Eb4BF6A6C5b8522e2aA9E9", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xeB839B6Be4EaCFD5B7ac17695E12721F51bbCD03", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x300E5ee5fFe8222b70216129f76aeAF33d5f1FE4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x311A794F0643F938143AD0Bfbd6b956d53EB8E01", + "rawVolume": 2115161.4018697864, + "volumeUSD": 12.32463096755048, + "latestDailyApy": 1.2433973079221339, + "latestWeeklyApy": 1.7586054271075513, + "virtualPrice": 1002710384660737000 + }, + { + "type": "crypto-factory", + "address": "0x28825498d814972a6D4DeEb75cC72aCB1fb4c562", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000009015389711600 + }, + { + "type": "crypto-factory", + "address": "0xFeD69dF1E0A8e4C8Ed6B995Ddc26725529553180", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000428672788100 + }, + { + "type": "crypto-factory", + "address": "0xd4138745B0c37B396e00F6Be4A457fbC860Ce765", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xaB5875A9dC90070c2ed031b24Fa06F6B3b641078", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x1cE924a96B351Fa39a5Fc25Ad81D41DF84b9aEB6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xb8852b54085DEAF82ce20BD2B013b5B09d9409a6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1005334117826057300 + }, + { + "type": "crypto-factory", + "address": "0x19857Ea4adf3c2B88F60E92a273731ba63cB4c2f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xC6731446451c6Ad561F629BE9E066ECA1a20bDFe", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1059757167433131000 + }, + { + "type": "crypto-factory", + "address": "0x121298B39d92625b3B1c72B4874e790b92Db9b14", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1013882704337533700 + }, + { + "type": "crypto-factory", + "address": "0xE01Daf5A0Eda822221bd71dd7d96b37FF1581697", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x6A701a81867a9dDfed50D468005b4fdf84A0DbE2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1043518263325701200 + }, + { + "type": "crypto-factory", + "address": "0xd3559bB8682ae1aE6c72d78b6f029Ac27C6e323f", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xBcA18b639050b177498F305b312C17767c359e95", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x5d4e73B43CdE3e1112E3baf5a87be8B09A0fDEEf", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x435db85934CdcF1E0419f6B632Ff9080D29baD4d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x8C4795E1561D54BAB2E9646E52251cE3854641AD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x001C0C30fE53241f6F969223869D35a345f20C03", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000122130174126800 + }, + { + "type": "crypto-factory", + "address": "0x4e1293c1A76B43663563C015518b50494CD7b19c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x22881d7841Ec8650B9FfA6F1Ad9D826bDc22F73F", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xEB6ae0A4cF2e1c86fab43231479F4EC404fD1fCD", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xedA1BC951506298Ccef4F2d1d0e808F348054aeF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "crypto-factory", + "address": "0x09BAFfd346BAE2803Fc3Ac5fB4B50De354170D32", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.009420876533505762, + "virtualPrice": 1000955087141055900 + }, + { + "type": "crypto-factory", + "address": "0x7B6A9C9A49b23D0522EEcE11E8eF620D74311A24", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xBd5F393763b8459f1388B6E7EEf3D0791edEEA13", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x8B3B52463E7773F2F894233EA6FF14B197e41482", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xD3e95868154C86c4260E7B663b749bec27284793", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1006099433554501900 + }, + { + "type": "crypto-factory", + "address": "0x9daa020ba3BC92d68bf20e0579DAcE01D7eFF610", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001375414267348500 + }, + { + "type": "crypto-factory", + "address": "0x15E7830D739fF82b2E57120917617f542B8DAb29", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xB42a586aA6dF39c2941f5780cE501A0D304a23ad", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x43CF90D7C3C00fe9592F86508A7A8D352717b141", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x4ed10B565253AF71aF42117E3D89F5c2cC4FFa4E", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x200eE1aFDa4b84A0B70c8162A467341Bc0188FCB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xbC061C0eD1A6a54E90Cf8cd1DF4eaF637eBe8aCc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.00005587634537285169, + "virtualPrice": 1000029908545456300 + }, + { + "type": "crypto-factory", + "address": "0xC962fe734eCbEa2739c205e3BdB3Bf7e3fBE3C2B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.004171447346568158, + "virtualPrice": 1000022513770494700 + }, + { + "type": "crypto-factory", + "address": "0x7fd25133E3c4c7832c2F450F54f3f3444af54D15", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.03784224886549392, + "virtualPrice": 1000080736858050400 + }, + { + "type": "crypto-factory", + "address": "0xbAC994E2794e4206341673f4be24527f67f81971", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xbB0E6b9aF52f64accd9bBD0bf52607d08f5d5c18", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0xA643f49F752BAD7986a2FC426688Ef1675995Aaa", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "crypto-factory", + "address": "0x0bFDcF48ad29E80Cd895e91EED2a43E009282529", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000221589732698500 + }, + { + "type": "crypto-factory", + "address": "0x27b216D98ACc62E3990FA5db45B968262e4125c7", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1001012407782102400 + }, + { + "type": "crypto-factory", + "address": "0x4477c95d9796F38F16DBf417EbCF62eD2E69016c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + } + ], + "totalVolume": 460177.6297090656, + "cryptoVolume": 428381.5650736569, + "cryptoShare": 93.09048015751856, + "subgraphHasErrors": false +} diff --git a/pages/api/getSubgraphData/_fallback-data/getSubgraphData-xdai.json b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-xdai.json new file mode 100644 index 00000000..cfb85c9d --- /dev/null +++ b/pages/api/getSubgraphData/_fallback-data/getSubgraphData-xdai.json @@ -0,0 +1,458 @@ +{ + "poolList": [ + { + "type": "main", + "address": "0x7f90122BF0700F9E7e1F688fe926940E8839F353", + "rawVolume": 2903.5819240083674, + "volumeUSD": 2903.1506443550106, + "latestDailyApy": 0.019495180889927965, + "latestWeeklyApy": 0.29734989349863294, + "virtualPrice": 1005355603465188100 + }, + { + "type": "main", + "address": "0x85bA9Dfb4a3E4541420Fc75Be02E2B42042D7e46", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0.005774180270456952, + "latestWeeklyApy": 0.087986439132548, + "virtualPrice": 1001534947190612600 + }, + { + "type": "stable-factory", + "address": "0xBdF4488Dcf7165788D438b62B4C8A333879B7078", + "rawVolume": 14.828146474996428, + "volumeUSD": 1633.4722622757276, + "latestDailyApy": 0.0016338183957742558, + "latestWeeklyApy": 0.011346106779908105, + "virtualPrice": 1000575331077803900 + }, + { + "type": "stable-factory", + "address": "0x5D7309a01B727d6769153fCB1dF5587858d53B9C", + "rawVolume": 2.2536889899887598, + "volumeUSD": 242.60434453878543, + "latestDailyApy": 0.0010640783945747856, + "latestWeeklyApy": 0.003533274472999892, + "virtualPrice": 1002370588001599400 + }, + { + "type": "stable-factory", + "address": "0xe5F32A099Eb90dDB97F3684fc6663dD253dfAe55", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000644686866300800 + }, + { + "type": "stable-factory", + "address": "0xd7468E6c3C9259010D1148f79788bA631b94B506", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0.06626408186547472, + "virtualPrice": 1001339905170171800 + }, + { + "type": "stable-factory", + "address": "0xA64D8025ddA09bCE94DA2cF2DC175d1831e2dF76", + "rawVolume": 2.895840069426366, + "volumeUSD": 2.88879405666463, + "latestDailyApy": 0.014096711419253616, + "latestWeeklyApy": 0.3702817278399051, + "virtualPrice": 1003197211819839100 + }, + { + "type": "stable-factory", + "address": "0xe4194fe60c506abb447815e92fB10F3723C55E84", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xe50f2bA6141d6a26Beed62111D570F282060592D", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x990cD80Ef72e13A5Ac7658dCC9FD209599463b7c", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAeD6a62dAB7514b6A644AB888cA6810c0327b82b", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x44349c1ec26b6Ba40bbe68d3c906762F0CC2eECB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x79E81b7080fe56A936e550a71ebC66555Bd4b2f3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5a6795570cF56AB8Db01D6c5DB6e980470C563a4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x149bF4A7e0561D38Db264B973225dAA7209A7d20", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xAf925280277E847201716A88054E5bddbF2Bbb4d", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x9a6a9F304232A8713F23188F9D6A0246df2504CB", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000000000000000000 + }, + { + "type": "stable-factory", + "address": "0xc6F47235e30d0668505E6D4F3De002EBdFcd0283", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x5f4509E2280549E662859F7DBE8520bEaf0A9e5B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x04e99f74951f2d5ebCA7e71AEE6B1BF9984eFBAc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x207b94Ecb6550ebC89C8C9e5e430f071909A3050", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd916Ee5879f15652426e342d087a94f699e2c777", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xd8883EeC56cB95F9bbdccaa9b453e3cC19a90e72", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 1.5198539156824564, + "virtualPrice": 1005457504493649300 + }, + { + "type": "stable-factory", + "address": "0xD1C1993f6A4bA35Fcbb241795E571Cc471F91e94", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8370CeA1E9bB221295563fB2CC62d66D0Afabef3", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xEad043133aa7DbbebEAa986eEB9C85d61962cd91", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x50894fFd90F460aAf5a4aa0390c7567Cdf2812De", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x90767aaCa8445EA703D477bF95952ed893176a44", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xABf72f48277AE1C9cBEab7aD531DE037091B4f84", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x91eBCe7CF4F4ea0c740722b706DbB9AB311844B8", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xb30E4809Fb7Acab15cC0a1D74f54D5cbb287f2E0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc24F496463917EF2851D9ce889b07236d8D4C6B6", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x86c76231e0126e53c59D15447E244FE00F11CDfF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xeac446da379001A8652387Cd899A1EA659CB027C", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xFaE41bB467ca29A5054e40D52AbDb54Eb7e1F3B0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xdC1422eBFB14baaA25ba18Ba2C0aeaE36aAc5ceF", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xF3Be36DF5AAe8451f10fA2fc7aE1e6de8FfA1D88", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x8C720914Af9BB379fD7297DAB375c969d76e47D0", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xda203fbbC7D3767eF0db31D3bDbB4E3a3D04d4C2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xBBc454ef207D5190debE534E392BBd7De14D89fc", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x29b963ad4CD578c41e1c5dDe5A8C6FDC4ec1257a", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x2EE47102AC82c4EE64B885B81d7f374e4fed783e", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xf7911B142a59a1DAB915d5886a708Eca5C90AF33", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0x6cCd06ecD351d46d3B49f9cF5F2804189bb685C1", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xc683E8314Ea5Be1525eC218106EBE69c146c1Dc2", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 0 + }, + { + "type": "stable-factory", + "address": "0xCD92002A5015288f95AC80D9772F3fbDeA4bB76B", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000077823612436000 + }, + { + "type": "stable-factory", + "address": "0x18a096234F7e008418Eb2603738c073d9045B0a4", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000001751318677500 + }, + { + "type": "stable-factory", + "address": "0xab033557743fbB4B9aF4C408B5267C0A4d28E15A", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1000018395108167800 + }, + { + "type": "crypto", + "address": "0x5633E00994896D0F472926050eCb32E38bef3e65", + "rawVolume": 0, + "volumeUSD": 0, + "latestDailyApy": 0, + "latestWeeklyApy": 0, + "virtualPrice": 1004266708361128300 + }, + { + "type": "crypto", + "address": "0x056C6C5e684CeC248635eD86033378Cc444459B0", + "rawVolume": 160952.8725610193, + "volumeUSD": 84006.17206361922, + "latestDailyApy": 0.010464711600799426, + "latestWeeklyApy": 0.067282943562752, + "virtualPrice": 1003903982808915700 + } + ], + "totalVolume": 88788.2881088454, + "cryptoVolume": 84006.17206361922, + "cryptoShare": 94.614023823318, + "subgraphHasErrors": false +} diff --git a/pages/api/getSubgraphData/index.js b/pages/api/getSubgraphData/index.js index f1ac1348..7b886bfd 100644 --- a/pages/api/getSubgraphData/index.js +++ b/pages/api/getSubgraphData/index.js @@ -1,16 +1,15 @@ -import axios from 'axios'; import Web3 from 'web3'; import BN from 'bignumber.js'; -import WEB3_CONSTANTS from 'constants/Web3'; import { fn } from 'utils/api'; -import { getFeeDistributor } from 'utils/getters'; -import { getThursdayUTCTimestamp } from 'utils/helpers'; -import distributorAbi from 'constants/abis/distributor.json'; -import tripoolSwapAbi from 'constants/abis/tripool_swap.json'; +import { USE_FALLBACK_THEGRAPH_DATA } from 'constants/AppConstants'; import configs from 'constants/configs'; import { BASE_API_DOMAIN } from 'constants/AppConstants'; import { runConcurrentlyAtMost } from 'utils/Async'; +import { uintToBN } from 'utils/Web3'; import getAllCurvePoolsData from 'utils/data/curve-pools-data'; +import getVolumes, { AVAILABLE_CHAIN_IDS as AVAILABLE_CHAIN_IDS_FOR_GET_VOLUMES } + from 'pages/api/getVolumes/[blockchainId]'; +import { sumBN } from 'utils/Array.js'; const lc = (str) => str.toLowerCase(); @@ -20,6 +19,11 @@ const POOLS_WITH_INCORRECT_SUBGRAPH_USD_VOLUME = { ethereum: [ '0x84997FAFC913f1613F51Bb0E2b5854222900514B', '0x2863a328a0b7fc6040f11614fa0728587db8e353', + '0xb7ecb2aa52aa64a717180e030241bc75cd946726', + '0xf95aaa7ebb1620e46221b73588502960ef63dba0', + '0xc15f285679a1ef2d25f53d4cbd0265e1d02f2a92', + '0x1062fd8ed633c1f080754c19317cb3912810b5e5', + '0x28ca243dc0ac075dd012fcf9375c25d18a844d96', ].map(lc), polygon: [ '0x7c1aa4989df27970381196d3ef32a7410e3f2748', @@ -30,59 +34,101 @@ const POOLS_WITH_INCORRECT_SUBGRAPH_USD_VOLUME = { ].map(lc), }; -export default fn(async ( {blockchainId} ) => { +const getFallbackData = async (fallbackDataFileName) => ( + (await import(`./_fallback-data/${fallbackDataFileName}.json`)).default +); + +export default fn(async ({ blockchainId }) => { if (typeof blockchainId === 'undefined') blockchainId = 'ethereum'; // Default value - const config = configs[blockchainId]; - const web3 = new Web3(config.rpcUrl); + // If the newest, more accurate method of retrieving volumes is available + // for this chain, return it instead with backward-compatible data structure + if (AVAILABLE_CHAIN_IDS_FOR_GET_VOLUMES.includes(blockchainId)) { + const data = await getVolumes.straightCall({ blockchainId }); + + return { + poolList: data.pools.map(({ + address, + type, + volumeUSD, + latestDailyApyPcent, + latestWeeklyApyPcent, + virtualPrice, + }) => ({ + address, + latestDailyApy: latestDailyApyPcent, + latestWeeklyApy: latestWeeklyApyPcent, + rawVolume: null, // Not available, and unused in all clients we know of + type, + virtualPrice, + volumeUSD, + })), + subgraphHasErrors: false, + cryptoShare: data.totalVolumes.cryptoVolumeSharePcent, + cryptoVolume: data.totalVolumes.totalCryptoVolume, + totalVolume: data.totalVolumes.totalVolume, + }; + } - if (typeof config === 'undefined') { - throw new Error(`No factory data for blockchainId "${blockchainId}"`); + const fallbackDataFileName = `getSubgraphData-${blockchainId}`; + + if (USE_FALLBACK_THEGRAPH_DATA && typeof fallbackDataFileName !== 'undefined') { + return getFallbackData(fallbackDataFileName); } + const config = configs[blockchainId]; const GRAPH_ENDPOINT = config.graphEndpoint; - const CURRENT_TIMESTAMP = Math.round(new Date().getTime() / 1000); - const TIMESTAMP_24H_AGO = CURRENT_TIMESTAMP - (25 * 3600); + if (!GRAPH_ENDPOINT) throw new Error('No subgraph endpoint'); - let subgraphHasErrors = false; + try { + const web3 = new Web3(config.rpcUrl); - const allPools = await getAllCurvePoolsData([blockchainId]); - const getPoolByAddress = (address) => ( - allPools.find((pool) => (lc(pool.address) === lc(address))) - ); + if (typeof config === 'undefined') { + throw new Error(`No factory data for blockchainId "${blockchainId}"`); + } - const poolListData = await (await fetch(`${BASE_API_DOMAIN}/api/getPoolList/${blockchainId}`)).json() - let poolList = poolListData.data.poolList - let totalVolume = 0 - let cryptoVolume = 0 + const CURRENT_TIMESTAMP = Math.round(new Date().getTime() / 1000); + const TIMESTAMP_24H_AGO = CURRENT_TIMESTAMP - (25 * 3600); - await runConcurrentlyAtMost(poolList.map((_, i) => async () => { - const poolAddress = lc(poolList[i].address); + let subgraphHasErrors = false; + + const allPools = await getAllCurvePoolsData([blockchainId]); + const getPoolByAddress = (address) => ( + allPools.find((pool) => (lc(pool.address) === lc(address))) + ); + + const poolListData = await (await fetch(`${BASE_API_DOMAIN}/api/getPoolList/${blockchainId}`)).json() + let poolList = poolListData.data.poolList + let totalVolume = 0 + let cryptoVolume = 0 + + await runConcurrentlyAtMost(poolList.map((_, i) => async () => { + const poolAddress = lc(poolList[i].address); let POOL_QUERY = ` - { - swapVolumeSnapshots( - first: 1000, - orderBy: timestamp, - orderDirection: desc, - where: { - pool: "${poolAddress}" - timestamp_gt: ${TIMESTAMP_24H_AGO} - period: 3600 - } - ) { - volume - volumeUSD - timestamp - count + swapVolumeSnapshots( + first: 1000, + orderBy: timestamp, + orderDirection: desc, + where: { + pool: "${poolAddress}" + timestamp_gt: ${TIMESTAMP_24H_AGO} + period: 3600 + } + ) + { + volume + volumeUSD + timestamp + count + } } - } - ` + ` const res = await fetch(GRAPH_ENDPOINT, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ query: POOL_QUERY }) + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ query: POOL_QUERY }) }) let data = await res.json() @@ -91,12 +137,12 @@ export default fn(async ( {blockchainId} ) => { subgraphHasErrors = data.errors?.length > 0; if (!subgraphHasErrors) { - for (let i = 0; i < data.data.swapVolumeSnapshots.length; i ++) { - const hourlyVolUSD = parseFloat(data.data.swapVolumeSnapshots[i].volumeUSD) - rollingDaySummedVolume = rollingDaySummedVolume + hourlyVolUSD + for (let i = 0; i < data.data.swapVolumeSnapshots.length; i++) { + const hourlyVolUSD = parseFloat(data.data.swapVolumeSnapshots[i].volumeUSD) + rollingDaySummedVolume = rollingDaySummedVolume + hourlyVolUSD - const hourlyVol = parseFloat(data.data.swapVolumeSnapshots[i].volume) - rollingRawVolume = rollingRawVolume + hourlyVol + const hourlyVol = parseFloat(data.data.swapVolumeSnapshots[i].volume) + rollingRawVolume = rollingRawVolume + hourlyVol } } @@ -136,100 +182,147 @@ export default fn(async ( {blockchainId} ) => { const APY_QUERY = ` - { - dailyPoolSnapshots(first: 7, - orderBy: timestamp, - orderDirection: desc, - where: - {pool: "${poolList[i].address.toLowerCase()}"}) - { - baseApr - xcpProfit - xcpProfitA - virtualPrice - timestamp - } - } - `; - - const resAPY = await fetch(GRAPH_ENDPOINT, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ query: APY_QUERY }), - }); - - let dataAPY = await resAPY.json(); - - const snapshots = dataAPY?.data?.dailyPoolSnapshots?.map((a) => ({ - baseApr: +a.baseApr, - virtualPrice: +a.virtualPrice, - xcpProfit: a.xcpProfit ? +a.xcpProfit : undefined, - xcpProfitA: a.xcpProfitA ? +a.xcpProfitA : undefined, - timestamp: a.timestamp, - })) || []; - - let latestDailyApy = 0 - let latestWeeklyApy = 0 - if (snapshots.length >= 2) { - const isCryptoPool = snapshots[0].xcpProfit > 0; - - if (isCryptoPool && typeof snapshots[0].xcpProfit !== 'undefined' && snapshots[1].xcpProfit !== 0) { - const currentProfit = ((snapshots[0].xcpProfit / 2) + (snapshots[0].xcpProfitA / 2) + 1e18) / 2; - const dayOldProfit = ((snapshots[1].xcpProfit / 2) + (snapshots[1].xcpProfitA / 2) + 1e18) / 2; - const rateDaily = (currentProfit - dayOldProfit) / dayOldProfit; - latestDailyApy = ((rateDaily + 1) ** 365 - 1) * 100; - } else if (snapshots[1].virtualPrice !== 0) { - latestDailyApy = ((snapshots[0].baseApr + 1) ** 365 - 1) * 100; - } - } - if (snapshots.length > 6) { - const isCryptoPool = snapshots[0].xcpProfit > 0; - - if (isCryptoPool && typeof snapshots[0].xcpProfit !== 'undefined' && snapshots[6].xcpProfit !== 0) { - const currentProfit = ((snapshots[0].xcpProfit / 2) + (snapshots[0].xcpProfitA / 2) + 1e18) / 2; - const weekOldProfit = ((snapshots[6].xcpProfit / 2) + (snapshots[6].xcpProfitA / 2) + 1e18) / 2; - const rateWeekly = (currentProfit - weekOldProfit) / weekOldProfit; - latestWeeklyApy = ((rateWeekly + 1) ** 52 - 1) * 100; - } else if (snapshots[6].virtualPrice !== 0) { - const latestWeeklyRate = + { + dailyPoolSnapshots(first: 7, + orderBy: timestamp, + orderDirection: desc, + where: + {pool: "${poolList[i].address.toLowerCase()}"}) + { + baseApr + xcpProfit + xcpProfitA + virtualPrice + timestamp + } + } + `; + + const resAPY = await fetch(GRAPH_ENDPOINT, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ query: APY_QUERY }), + }); + + let dataAPY = await resAPY.json(); + + const snapshots = dataAPY?.data?.dailyPoolSnapshots?.map((a) => ({ + baseApr: +a.baseApr, + virtualPrice: +a.virtualPrice, + xcpProfit: a.xcpProfit ? +a.xcpProfit : undefined, + xcpProfitA: a.xcpProfitA ? +a.xcpProfitA : undefined, + timestamp: a.timestamp, + })) || []; + + let latestDailyApy = 0 + let latestWeeklyApy = 0 + if (snapshots.length >= 2) { + const isCryptoPool = snapshots[0].xcpProfit > 0; + + if (isCryptoPool && typeof snapshots[0].xcpProfit !== 'undefined' && snapshots[1].xcpProfit !== 0) { + const currentProfit = ((snapshots[0].xcpProfit / 2) + (snapshots[0].xcpProfitA / 2) + 1e18) / 2; + const dayOldProfit = ((snapshots[1].xcpProfit / 2) + (snapshots[1].xcpProfitA / 2) + 1e18) / 2; + const rateDaily = (currentProfit - dayOldProfit) / dayOldProfit; + latestDailyApy = ((rateDaily + 1) ** 365 - 1) * 100; + } else if (snapshots[1].virtualPrice !== 0) { + latestDailyApy = ((snapshots[0].baseApr + 1) ** 365 - 1) * 100; + } + } + if (snapshots.length > 6) { + const isCryptoPool = snapshots[0].xcpProfit > 0; + + if (isCryptoPool && typeof snapshots[0].xcpProfit !== 'undefined' && snapshots[6].xcpProfit !== 0) { + const currentProfit = ((snapshots[0].xcpProfit / 2) + (snapshots[0].xcpProfitA / 2) + 1e18) / 2; + const weekOldProfit = ((snapshots[6].xcpProfit / 2) + (snapshots[6].xcpProfitA / 2) + 1e18) / 2; + const rateWeekly = (currentProfit - weekOldProfit) / weekOldProfit; + latestWeeklyApy = ((rateWeekly + 1) ** 52 - 1) * 100; + } else if (snapshots[6].virtualPrice !== 0) { + const latestWeeklyRate = (snapshots[0].virtualPrice - snapshots[6].virtualPrice) / snapshots[0].virtualPrice; - latestWeeklyApy = ((latestWeeklyRate + 1) ** 52 - 1) * 100; + latestWeeklyApy = ((latestWeeklyRate + 1) ** 52 - 1) * 100; + } + } + poolList[i].latestDailyApy = Math.min(latestDailyApy, 1e6); + poolList[i].latestWeeklyApy = Math.min(latestWeeklyApy, 1e6); + poolList[i].virtualPrice = snapshots[0] ? snapshots[0].virtualPrice : undefined; + + }), 10); + + // When a crypto pool uses a base pool lp as one of its underlying assets, apy calculations + // using xcp_profit need to add up 1/3rd of the underlying pool's base volume + if (config.CRYPTO_POOLS_WITH_BASE_POOLS) { + poolList = poolList.map((pool) => { + if (config.CRYPTO_POOLS_WITH_BASE_POOLS.has(pool.address)) { + const { latestDailyApy, latestWeeklyApy } = pool; + const underlyingPoolAddress = config.CRYPTO_POOLS_WITH_BASE_POOLS.get(pool.address); + const underlyingPool = poolList.find(({ address }) => address.toLowerCase() === underlyingPoolAddress.toLowerCase()); + if (!underlyingPool) { + console.error(`Couldn't find underlying pool for crypto pool ${pool.address}, hence couldn't add up its base apy`); + return pool; + } + + return { + ...pool, + latestDailyApy: BN(latestDailyApy).plus(BN(underlyingPool.latestDailyApy).div(3)).toNumber(), + latestWeeklyApy: BN(latestWeeklyApy).plus(BN(underlyingPool.latestWeeklyApy).div(3)).toNumber(), } } - poolList[i].latestDailyApy = Math.min(latestDailyApy, 1e6); - poolList[i].latestWeeklyApy = Math.min(latestWeeklyApy, 1e6); - poolList[i].virtualPrice = snapshots[0] ? snapshots[0].virtualPrice : undefined; - }), 10); + return pool; + }) + } - // When a crypto pool uses a base pool lp as one of its underlying assets, apy calculations - // using xcp_profit need to add up 1/3rd of the underlying pool's base volume - if (config.CRYPTO_POOLS_WITH_BASE_POOLS) { + /** + * Add additional ETH staking APY to pools containing ETH LSDs + */ poolList = poolList.map((pool) => { - if (config.CRYPTO_POOLS_WITH_BASE_POOLS.has(pool.address)) { - const { latestDailyApy, latestWeeklyApy } = pool; - const underlyingPoolAddress = config.CRYPTO_POOLS_WITH_BASE_POOLS.get(pool.address); - const underlyingPool = poolList.find(({ address }) => address.toLowerCase() === underlyingPoolAddress.toLowerCase()); - if (!underlyingPool) { - console.error(`Couldn't find underlying pool for crypto pool ${pool.address}, hence couldn't add up its base apy`); - return pool; - } + const poolData = getPoolByAddress(pool.address); + if (!poolData) return pool; // Some broken/ignored pools might still be picked up by the subgraph - return { - ...pool, - latestDailyApy: BN(latestDailyApy).plus(BN(underlyingPool.latestDailyApy).div(3)).toFixed(), - latestWeeklyApy: BN(latestWeeklyApy).plus(BN(underlyingPool.latestWeeklyApy).div(3)).toFixed(), - } + const { usesRateOracle, coins, usdTotal } = poolData; + const needsAdditionalLsdAssetApy = ( + !usesRateOracle && + coins.some(({ ethLsdApy }) => typeof ethLsdApy !== 'undefined') + ); + + if (!needsAdditionalLsdAssetApy || usdTotal === 0) return pool; + + const additionalApysPcentFromLsds = coins.map(({ + ethLsdApy, + poolBalance, + decimals, + usdPrice, + }) => { + if (typeof ethLsdApy === 'undefined' || usdPrice === null || usdPrice === 0) return 0; + + const assetUsdTotal = uintToBN(poolBalance, decimals).times(usdPrice); + const assetProportionInPool = assetUsdTotal.div(usdTotal); + + return assetProportionInPool.times(ethLsdApy).times(100); + }); + + return { + ...pool, + latestDailyApy: BN(pool.latestDailyApy).plus(sumBN(additionalApysPcentFromLsds)).toNumber(), + latestWeeklyApy: BN(pool.latestWeeklyApy).plus(sumBN(additionalApysPcentFromLsds)).toNumber(), } + }); - return pool; - }) - } - const cryptoShare = (cryptoVolume / totalVolume) * 100 + const cryptoShare = (cryptoVolume / totalVolume) * 100 - return { poolList, totalVolume, cryptoVolume, cryptoShare, subgraphHasErrors } + return { poolList, totalVolume, cryptoVolume, cryptoShare, subgraphHasErrors } + } catch (err) { + if (typeof fallbackDataFileName !== 'undefined') { + console.log(`CAUGHT AND HANDLED GRAPHQL ERROR: "getSubgraphData/${blockchainId}". Fallback data was returned instead of fresh data. The caught error is logged below ↓`); + console.log(err); + + return getFallbackData(fallbackDataFileName); + } else { + throw err; + } + } }, { - maxAge: 5 * 60, // 15 min + maxAge: 5 * 60, // 5 min }); diff --git a/pages/api/getTVL.js b/pages/api/getTVL.js index dff05d9f..2bfd5f23 100644 --- a/pages/api/getTVL.js +++ b/pages/api/getTVL.js @@ -14,48 +14,51 @@ const web3 = new Web3(WEB3_CONSTANTS.RPC_URL); export default fn(async () => { - const LP_TOKEN_DECIMALS = 18; - - let tvl = 0; - - - let resCrypto = await (await fetch(`https://api.curve.fi/api/getPools/ethereum/crypto`)).json() - let resMain = await (await fetch(`https://api.curve.fi/api/getPools/ethereum/main`)).json() - let resFacto = await (await fetch(`https://api.curve.fi/api/getPools/ethereum/factory`)).json() - let resCryptoFacto = await (await fetch(`https://api.curve.fi/api/getPools/ethereum/factory-crypto`)).json() - - tvl = +resCrypto.data.tvl + +resMain.data.tvl + +resFacto.data.tvl + +resCryptoFacto.data.tvl - - let sideTVLs = [] - let endPoints = [ - 'getTVLPolygon', - 'getTVLFantom', - 'getTVLxDai', - 'getTVLAvalanche', - 'getTVLHarmony', - 'getTVLArbitrum', - 'getTVLOptimism', - 'getTVLMoonbeam', - 'getTVLKava', - 'getTVLCelo', - ] - - let sideChainTVL = 0 - await Promise.all( - endPoints.map(async (endPoint) => { - let res = await (await fetch(`https://api.curve.fi/api/${endPoint}`)).json() - let sideChain = { - 'chain': endPoint.replace('getTVL', ''), - 'tvl': parseFloat(res.data.tvl) - } - sideChainTVL += sideChain.tvl - sideTVLs.push(sideChain) - }) - ) - - - - return { tvl, sideTVLs, sideChainTVL }; + const LP_TOKEN_DECIMALS = 18; + + let tvl = 0; + + + let resCrypto = await (await fetch(`https://api.curve.fi/api/getPools/ethereum/crypto`)).json() + let resMain = await (await fetch(`https://api.curve.fi/api/getPools/ethereum/main`)).json() + let resFacto = await (await fetch(`https://api.curve.fi/api/getPools/ethereum/factory`)).json() + let resCryptoFacto = await (await fetch(`https://api.curve.fi/api/getPools/ethereum/factory-crypto`)).json() + + tvl = +resCrypto.data.tvl + +resMain.data.tvl + +resFacto.data.tvl + +resCryptoFacto.data.tvl + + let sideTVLs = [] + let endPoints = [ + 'getTVLPolygon', + 'getTVLFantom', + 'getTVLxDai', + 'getTVLAvalanche', + 'getTVLHarmony', + 'getTVLArbitrum', + 'getTVLOptimism', + 'getTVLMoonbeam', + 'getTVLKava', + 'getTVLCelo', + 'getTVLZkevm', + 'getTVLZksync', + 'getTVLBase', + ] + + let sideChainTVL = 0 + await Promise.all( + endPoints.map(async (endPoint) => { + let res = await (await fetch(`https://api.curve.fi/api/${endPoint}`)).json() + let sideChain = { + 'chain': endPoint.replace('getTVL', ''), + 'tvl': parseFloat(res.data.tvl) + } + sideChainTVL += sideChain.tvl + sideTVLs.push(sideChain) + }) + ) + + + + return { tvl, sideTVLs, sideChainTVL }; }, { maxAge: 15 * 60, // 15 min diff --git a/pages/api/getTVLBase.js b/pages/api/getTVLBase.js new file mode 100644 index 00000000..30ee076d --- /dev/null +++ b/pages/api/getTVLBase.js @@ -0,0 +1,59 @@ +import Web3 from 'web3'; +import configs from 'constants/configs'; + +import getPoolsFn from 'pages/api/getPools'; +import { fn } from 'utils/api'; +import erc20Abi from 'constants/abis/erc20.json'; +import aavePool from 'constants/abis/pools/aave.json'; + +const web3 = new Web3(configs.base.rpcUrl); + + +export default fn(async () => { + + + let price_feed = await (await fetch('https://api.coingecko.com/api/v3/simple/price?ids=tether,ethereum,bitcoin&vs_currencies=usd')).json() + + let pools = { + } + let tvl = 0 + for (const [key, pool] of Object.entries(pools)) { + + let poolC = new web3.eth.Contract(aavePool, pool.address); + + let multiplier = (pool.type == 'stable' || pool.type == 'crypto') ? 1 : price_feed[pool.type].usd + + await Promise.all( + pool.decimals.map(async (decimal, index) => { + let balance = await poolC.methods.balances(index).call() + balance = balance / (10 ** decimal) + + if (pool.type == 'crypto') { + multiplier = price_feed[pool.keys[index]].usd + } + + pools[key].tvl += (balance * multiplier) + tvl += (parseFloat(balance) * multiplier) + + }) + ) + + if (pool.type == 'crypto') { + let tokenContract = new web3.eth.Contract(erc20Abi, pool.token); + let supply = await tokenContract.methods.totalSupply().call(); + pools[key].lpPrice = pools[key].tvl / (supply / 10 ** 18) + } + } + + const factoDetails = await getPoolsFn.straightCall({ blockchainId: 'base', registryId: 'factory' }) + tvl += factoDetails.tvlAll + const factory = { + tvl: factoDetails.tvlAll + }; + + return { tvl, pools, factory }; + + +}, { + maxAge: 15 * 60, // 15 min +}); diff --git a/pages/api/getTVLZkevm.js b/pages/api/getTVLZkevm.js new file mode 100644 index 00000000..1bfc56bb --- /dev/null +++ b/pages/api/getTVLZkevm.js @@ -0,0 +1,59 @@ +import Web3 from 'web3'; +import configs from 'constants/configs'; + +import getPoolsFn from 'pages/api/getPools'; +import { fn } from 'utils/api'; +import erc20Abi from 'constants/abis/erc20.json'; +import aavePool from 'constants/abis/pools/aave.json'; + +const web3 = new Web3(configs.zkevm.rpcUrl); + + +export default fn(async () => { + + + let price_feed = await (await fetch('https://api.coingecko.com/api/v3/simple/price?ids=tether,ethereum,bitcoin&vs_currencies=usd')).json() + + let pools = { + } + let tvl = 0 + for (const [key, pool] of Object.entries(pools)) { + + let poolC = new web3.eth.Contract(aavePool, pool.address); + + let multiplier = (pool.type == 'stable' || pool.type == 'crypto') ? 1 : price_feed[pool.type].usd + + await Promise.all( + pool.decimals.map(async (decimal, index) => { + let balance = await poolC.methods.balances(index).call() + balance = balance / (10 ** decimal) + + if (pool.type == 'crypto') { + multiplier = price_feed[pool.keys[index]].usd + } + + pools[key].tvl += (balance * multiplier) + tvl += (parseFloat(balance) * multiplier) + + }) + ) + + if (pool.type == 'crypto') { + let tokenContract = new web3.eth.Contract(erc20Abi, pool.token); + let supply = await tokenContract.methods.totalSupply().call(); + pools[key].lpPrice = pools[key].tvl / (supply / 10 ** 18) + } + } + + const factoDetails = await getPoolsFn.straightCall({ blockchainId: 'zkevm', registryId: 'factory' }) + tvl += factoDetails.tvlAll + const factory = { + tvl: factoDetails.tvlAll + }; + + return { tvl, pools, factory }; + + +}, { + maxAge: 15 * 60, // 15 min +}); diff --git a/pages/api/getTVLZksync.js b/pages/api/getTVLZksync.js new file mode 100644 index 00000000..76e4a850 --- /dev/null +++ b/pages/api/getTVLZksync.js @@ -0,0 +1,59 @@ +import Web3 from 'web3'; +import configs from 'constants/configs'; + +import getPoolsFn from 'pages/api/getPools'; +import { fn } from 'utils/api'; +import erc20Abi from 'constants/abis/erc20.json'; +import aavePool from 'constants/abis/pools/aave.json'; + +const web3 = new Web3(configs.zksync.rpcUrl); + + +export default fn(async () => { + + + let price_feed = await (await fetch('https://api.coingecko.com/api/v3/simple/price?ids=tether,ethereum,bitcoin&vs_currencies=usd')).json() + + let pools = { + } + let tvl = 0 + for (const [key, pool] of Object.entries(pools)) { + + let poolC = new web3.eth.Contract(aavePool, pool.address); + + let multiplier = (pool.type == 'stable' || pool.type == 'crypto') ? 1 : price_feed[pool.type].usd + + await Promise.all( + pool.decimals.map(async (decimal, index) => { + let balance = await poolC.methods.balances(index).call() + balance = balance / (10 ** decimal) + + if (pool.type == 'crypto') { + multiplier = price_feed[pool.keys[index]].usd + } + + pools[key].tvl += (balance * multiplier) + tvl += (parseFloat(balance) * multiplier) + + }) + ) + + if (pool.type == 'crypto') { + let tokenContract = new web3.eth.Contract(erc20Abi, pool.token); + let supply = await tokenContract.methods.totalSupply().call(); + pools[key].lpPrice = pools[key].tvl / (supply / 10 ** 18) + } + } + + const factoDetails = await getPoolsFn.straightCall({ blockchainId: 'zksync', registryId: 'factory' }) + tvl += factoDetails.tvlAll + const factory = { + tvl: factoDetails.tvlAll + }; + + return { tvl, pools, factory }; + + +}, { + maxAge: 15 * 60, // 15 min +}); diff --git a/pages/api/getVolumes/[blockchainId].js b/pages/api/getVolumes/[blockchainId].js new file mode 100644 index 00000000..eb9dbb88 --- /dev/null +++ b/pages/api/getVolumes/[blockchainId].js @@ -0,0 +1,90 @@ +/** + * This endpoint returns all volume and base apy data for curve pools on each chain. + * It relies on the [Curve Prices API](https://prices.curve.fi/feeds-docs), and is meant + * as a more reliable replacement to the `getSubgraphData/[blockchainId]` endpoints + * which rely on subgraphs. + * + * Note: currently, only Ethereum is available. + */ + +import { fn } from 'utils/api'; +import BN from 'bignumber.js'; +import configs from 'constants/configs'; +import { BASE_API_DOMAIN } from 'constants/AppConstants'; +import getBaseApys from 'pages/api/getBaseApys/[blockchainId]'; +import { lc } from 'utils/String'; +import { sumBN } from 'utils/Array'; + +const AVAILABLE_CHAIN_IDS = [ + 'ethereum', +]; + +const DEFAULT_VOLUME_DATA = { + trading_volume_24h: 0, + liquidity_volume_24h: 0, + virtual_price: null, // The fact that this pool isn't indexed by curve-prices doesn't imply its vprice is 1e18, so there's no accurate fallback data available +}; + +export default fn(async ({ blockchainId }) => { + const config = configs[blockchainId]; + + if (typeof config === 'undefined' || !AVAILABLE_CHAIN_IDS.includes(blockchainId)) { + throw new Error(`Endpoint "getVolumes" not available for "${blockchainId}"`); + } + + const [ + { data: { poolList: poolAddressesAndTypes } }, + { data: poolData }, + { baseApys }, + ] = await Promise.all([ + (await fetch(`${BASE_API_DOMAIN}/api/getPoolList/${blockchainId}`)).json(), + (await fetch(`https://prices.curve.fi/v1/chains/${blockchainId}`)).json(), + getBaseApys.straightCall({ blockchainId }), + ]); + + const pools = poolAddressesAndTypes.map(({ address, type }) => { + const lcAddress = lc(address) + const volumeData = poolData.find((data) => lc(data.address) === lcAddress); + + const { + trading_volume_24h: tradingVolume, + // liquidity_volume_24h: liquidityVolume, // Unused atm + virtual_price: virtualPrice, + } = (volumeData || DEFAULT_VOLUME_DATA); + + // Some pools aren't indexed by curve-prices, simply because they haven’t registered any trades recently. + // However this doesn't mean that their APR is null, as e.g. their deposits can be in deposit pools for + // lending pools. This falls back to freshly-fetched APYs for these pools. + const poolBaseApys = baseApys.find((pool) => lc(address) === lc(pool.address)); + const latestDailyApy = BN(poolBaseApys.latestDailyApyPcent).div(100); + const latestWeeklyApy = BN(poolBaseApys.latestWeeklyApyPcent).div(100); + + return { + address, + type, + volumeUSD: BN(tradingVolume).dp(2).toNumber(), // Excluding liquidityVolume for consistency for now, may add it later + latestDailyApyPcent: BN(latestDailyApy).times(100).dp(2).toNumber(), + latestWeeklyApyPcent: BN(latestWeeklyApy).times(100).dp(2).toNumber(), + virtualPrice, + } + }).filter((o) => o !== null); + + const totalStableVolume = sumBN(pools.filter(({ type }) => !type.includes('crypto')).map(({ volumeUSD }) => volumeUSD)); + const totalCryptoVolume = sumBN(pools.filter(({ type }) => type.includes('crypto')).map(({ volumeUSD }) => volumeUSD)); + const totalVolume = totalStableVolume.plus(totalCryptoVolume); + const cryptoVolumeSharePcent = totalCryptoVolume.div(totalVolume).times(100); + + return { + pools, + totalVolumes: { + totalStableVolume: totalStableVolume.dp(2).toNumber(), + totalCryptoVolume: totalCryptoVolume.dp(2).toNumber(), + totalVolume: totalVolume.dp(2).toNumber(), + cryptoVolumeSharePcent: cryptoVolumeSharePcent.dp(2).toNumber(), + }, + }; +}, { + maxAge: 60, +}); + +export { AVAILABLE_CHAIN_IDS }; // Temporary export while this function is used internally in other places diff --git a/pages/api/getVolumes/ethereum/crvusd-amms.js b/pages/api/getVolumes/ethereum/crvusd-amms.js index 59c71768..069add3c 100644 --- a/pages/api/getVolumes/ethereum/crvusd-amms.js +++ b/pages/api/getVolumes/ethereum/crvusd-amms.js @@ -1,5 +1,6 @@ import { fn } from 'utils/api'; import { sum } from 'utils/Array'; +import { request } from 'utils/Graphql'; const GRAPH_ENDPOINT = 'https://api.thegraph.com/subgraphs/name/convex-community/crvusd'; @@ -16,11 +17,7 @@ export default fn(async () => { } `; - const { data } = await (await fetch(GRAPH_ENDPOINT, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ query }), - })).json(); + const data = await request(GRAPH_ENDPOINT, query, undefined, 'crvusd-amms'); const amms = data.amms.map(({ id, volumeSnapshots }) => ({ address: id, @@ -32,5 +29,5 @@ export default fn(async () => { totalVolume: sum(amms.map(({ volumeUSD }) => volumeUSD)), }; }, { - maxAge: 5 * 60, // 15 min + maxAge: 5 * 60, // 5 min }); diff --git a/utils/Calls.js b/utils/Calls.js index 2be18df7..fe51aa2c 100644 --- a/utils/Calls.js +++ b/utils/Calls.js @@ -49,6 +49,7 @@ const multiCall = async (callsConfig, isDebugging = false) => { networkSettings: { web3, multicall2Address: configs.ethereum.multicall2Address, + blockNumber: undefined, }, superSettings: { returnSuccessState: false, // If true, will return true if call succeeds, false if it reverts @@ -126,13 +127,13 @@ const multiCall = async (callsConfig, isDebugging = false) => { const { networkSettings } = augmentedCallsConfig[0]; const multicall = getContractInstance(networkSettings.multicall2Address, MULTICALL2_ABI, networkSettings.web3); - const chunkedCalls = getArrayChunks(calls, 400); // Keep each multicall size reasonable + const chunkedCalls = getArrayChunks(calls, 200); // Keep each multicall size reasonable let decodedData; try { const chunkedReturnData = await sequentialPromiseMap(chunkedCalls, async (callsChunk) => ( Promise.all(callsChunk.map(async (chunk) => { - const aggregateReturnData = await multicall.methods.tryAggregate(false, chunk).call(); + const aggregateReturnData = await multicall.methods.tryAggregate(false, chunk).call(undefined, networkSettings.blockNumber); const returnData = aggregateReturnData.map(({ success, returnData: hexData }) => ({ success, hexData })); return returnData; })) @@ -166,8 +167,8 @@ const multiCall = async (callsConfig, isDebugging = false) => { // Allow passing a custom fallback value for very specific cases; should rarely be used if (typeof superSettings.fallbackValue !== 'undefined') { data = superSettings.fallbackValue; - // Use fallback value if one exists (ideally we have fallback values for all types, - // add more when necessary as we encounter other failures) + // Use fallback value if one exists (ideally we have fallback values for all types, + // add more when necessary as we encounter other failures) } else if (typeof FALLBACK_DECODED_PARAMETERS_VALUES[failedDecodedType] !== 'undefined') { data = FALLBACK_DECODED_PARAMETERS_VALUES[failedDecodedType]; } else { diff --git a/utils/Graphql/fallback-data/crvusd-amms.json b/utils/Graphql/fallback-data/crvusd-amms.json new file mode 100644 index 00000000..a7d442a1 --- /dev/null +++ b/utils/Graphql/fallback-data/crvusd-amms.json @@ -0,0 +1,40 @@ +{ + "amms": [ + { + "id": "0x136e783846ef68c8bd00a3369f787df8d683a696", + "volumeSnapshots": [ + { + "swapVolumeUSD": "0", + "timestamp": "1691935151" + } + ] + }, + { + "id": "0x1681195c176239ac5e72d9aebacf5b2492e0c4ee", + "volumeSnapshots": [ + { + "swapVolumeUSD": "0", + "timestamp": "1691922683" + } + ] + }, + { + "id": "0x37417b2238aa52d0dd2d6252d989e728e8f706e4", + "volumeSnapshots": [ + { + "swapVolumeUSD": "0", + "timestamp": "1691919035" + } + ] + }, + { + "id": "0xe0438eb3703bf871e31ce639bd351109c88666ea", + "volumeSnapshots": [ + { + "swapVolumeUSD": "0", + "timestamp": "1691928863" + } + ] + } + ] +} diff --git a/utils/Graphql/index.js b/utils/Graphql/index.js new file mode 100644 index 00000000..399464b2 --- /dev/null +++ b/utils/Graphql/index.js @@ -0,0 +1,95 @@ +/** + * Graphql wrapper that queries graphql as we normally would, + * or falls back to simply returning fallback data if the + * USE_FALLBACK_THEGRAPH_DATA flag is set to true. + * + * Signature: `request(endpoint, queryString, variables, fallbackDataFileName)` + * If the third arg is omitted, will behave like it does w/o the wrapper. + * + * Use the flag FALLBACK_THEGRAPH_DATA_POPULATE_MODE to easily update + * fallback data files’ contents by copy/pasting the latest json output. + */ + +import { request, batchRequests, gql } from 'graphql-request'; +import { + USE_FALLBACK_THEGRAPH_DATA, + FALLBACK_THEGRAPH_DATA_POPULATE_MODE, +} from 'constants/AppConstants'; + +const getFallbackData = async (fallbackDataFileName) => ( + (await import(`./fallback-data/${fallbackDataFileName}.json`)).default +); + +const wrappedRequest = async (endpoint, queryString, variables, fallbackDataFileName) => { + let data; + + if (USE_FALLBACK_THEGRAPH_DATA && typeof fallbackDataFileName !== 'undefined') { + return getFallbackData(fallbackDataFileName); + } + + try { + data = await request(endpoint, gql`${queryString}`, variables); + } catch (err) { + if (typeof fallbackDataFileName !== 'undefined') { + console.log(`CAUGHT AND HANDLED GRAPHQL ERROR: There was an error querying the following graphql endpoint: "${endpoint}". Fallback data was returned instead of fresh data. The caught error is logged below ↓`); + console.log(err); + + data = await getFallbackData(fallbackDataFileName); + } else { + throw err; + } + } + + if (FALLBACK_THEGRAPH_DATA_POPULATE_MODE) { + console.log(`FALLBACK_THEGRAPH_DATA_POPULATE_MODE for /fallback-data/${fallbackDataFileName}.json`, JSON.stringify(data)); + } + + return data; +}; + +const wrappedRequests = async (endpoint, queryStringAndVarArray, fallbackDataFileName) => { + let data; + + if (USE_FALLBACK_THEGRAPH_DATA && typeof fallbackDataFileName !== 'undefined') { + return getFallbackData(fallbackDataFileName); + } + + console.log('queryStringAndVarArray', queryStringAndVarArray) + console.log('queryStringAndVarArray.gql', queryStringAndVarArray.map(({ + document, + variables, + }) => ({ + document: gql`${document}`, + variables, + }))) + + try { + data = await batchRequests(endpoint, queryStringAndVarArray.map(({ + query, + variables, + }) => ({ + query: gql`${query}`, + variables, + })), fallbackDataFileName); + } catch (err) { + if (typeof fallbackDataFileName !== 'undefined') { + console.log(`CAUGHT AND HANDLED GRAPHQL ERROR: There was an error querying the following graphql endpoint (batch query): "${endpoint}". Fallback data was returned instead of fresh data. The caught error is logged below ↓`); + console.log(err); + + data = await getFallbackData(fallbackDataFileName); + } else { + throw err; + } + } + + if (FALLBACK_THEGRAPH_DATA_POPULATE_MODE) { + console.log(`FALLBACK_THEGRAPH_DATA_POPULATE_MODE for /fallback-data/${fallbackDataFileName}.json`, JSON.stringify(data)); + } + + return data; +}; + +export { + wrappedRequest as request, + wrappedRequests as requests, +}; diff --git a/utils/api.js b/utils/api.js index 313c0f7c..89090556 100644 --- a/utils/api.js +++ b/utils/api.js @@ -19,31 +19,42 @@ const addGeneratedTime = async (res) => ({ generatedTimeMs: getNowMs(), }); -const logRuntime = async (fn, name, query) => { +const logRuntime = async (fn, name, query, silenceParamsLog) => { const startMs = getNowMs(); const res = await fn(); const endMs = getNowMs(); - if (IS_DEV) console.log('Run time (ms):', endMs - startMs, name, query); + if (IS_DEV) { + const queryText = silenceParamsLog ? 'QUERY_LOGGING_SILENCED' : query; + console.log('Run time (ms):', endMs - startMs, name, queryText); + } return res; }; +class ParamError extends Error { + constructor(message) { + super(message); + this.name = this.constructor.name; + } +} + const fn = (cb, options = {}) => { const { maxAge: maxAgeSec = null, // Caching duration, in seconds name = null, // Name, used for logging purposes returnFlatData = false, + silenceParamsLog = false, // Don't log params (can be used because the fn is passed a huge object that creates noise) } = options; const callback = maxAgeSec !== null ? - memoize(async (query) => logRuntime(() => addGeneratedTime(cb(query)), name, query), { + memoize(async (query) => logRuntime(() => addGeneratedTime(cb(query)), name, query, silenceParamsLog), { promise: true, maxAge: maxAgeSec * 1000, normalizer: ([query]) => JSON.stringify(query), // Separate cache entries for each route & query params, }) : - async (query) => logRuntime(() => addGeneratedTime(cb(query)), name, query); + async (query) => logRuntime(() => addGeneratedTime(cb(query)), name, query, silenceParamsLog); const apiCall = async (req, res) => ( Promise.resolve(callback(req.query)) @@ -57,10 +68,10 @@ const fn = (cb, options = {}) => { }) .catch((err) => { if (IS_DEV) { - console.log('ERROR that would be caught and served with success=false on prod', err); throw err; } else { - res.status(500).json(formatJsonError(err)); + const code = (err instanceof ParamError) ? 200 : 500; + res.status(code).json(formatJsonError(err)); } }) ); @@ -73,4 +84,5 @@ const fn = (cb, options = {}) => { export { fn, formatJsonError, + ParamError, }; diff --git a/utils/data/assets-prices.js b/utils/data/assets-prices.js index 63388f23..8aa56d13 100644 --- a/utils/data/assets-prices.js +++ b/utils/data/assets-prices.js @@ -2,7 +2,7 @@ import memoize from 'memoizee'; import Request from 'utils/Request'; import { arrayToHashmap } from 'utils/Array'; -const getAssetsPrices = memoize((assetCoingeckoIds) => { +const getAssetsPrices = memoize(async (assetCoingeckoIds) => { if (assetCoingeckoIds.length === 0) return {}; // https://defillama.com/docs/api diff --git a/utils/data/curve-platform-registries.js b/utils/data/curve-platform-registries.js new file mode 100644 index 00000000..13fcacf4 --- /dev/null +++ b/utils/data/curve-platform-registries.js @@ -0,0 +1,60 @@ +import Web3 from 'web3'; +import memoize from 'memoizee'; +import configs from 'constants/configs'; +import ADDRESS_GETTER_ABI from 'constants/abis/address_getter.json'; +import { multiCall } from 'utils/Calls'; + +const getMainRegistryAddress = async (blockchainId) => { + const { rpcUrl, multicall2Address } = configs[blockchainId]; + const web3 = new Web3(rpcUrl); + + return (await multiCall([{ + address: '0x0000000022d53366457f9d5e68ec105046fc4383', + abi: ADDRESS_GETTER_ABI, + methodName: 'get_address', + params: [0], + networkSettings: { web3, multicall2Address }, + }]))[0]; +}; + +const getPlatformRegistries = memoize(async (blockchainId) => { + const config = configs[blockchainId]; + if (typeof config === 'undefined') { + throw new Error(`No config data for blockchainId "${blockchainId}"`); + } + + const { + getFactoryRegistryAddress, + getCryptoRegistryAddress, + getFactoryCryptoRegistryAddress, + getFactoryCrvusdRegistryAddress, + getFactoryTricryptoRegistryAddress, + getFactoryEywaRegistryAddress, + hasNoMainRegistry, + } = config; + + return { + registryIds: [ + (!hasNoMainRegistry ? 'main' : null), + (typeof getFactoryRegistryAddress === 'function' ? 'factory' : null), + (typeof getCryptoRegistryAddress === 'function' ? 'crypto' : null), + (typeof getFactoryCryptoRegistryAddress === 'function' ? 'factory-crypto' : null), + (typeof getFactoryCrvusdRegistryAddress === 'function' ? 'factory-crvusd' : null), + (typeof getFactoryTricryptoRegistryAddress === 'function' ? 'factory-tricrypto' : null), + (typeof getFactoryEywaRegistryAddress === 'function' ? 'factory-eywa' : null), + ].filter((o) => o !== null), + registryAddresses: [ + (!hasNoMainRegistry ? (await getMainRegistryAddress(blockchainId)) : null), + (typeof getFactoryRegistryAddress === 'function' ? (await getFactoryRegistryAddress()) : null), + (typeof getCryptoRegistryAddress === 'function' ? (await getCryptoRegistryAddress()) : null), + (typeof getFactoryCryptoRegistryAddress === 'function' ? (await getFactoryCryptoRegistryAddress()) : null), + (typeof getFactoryCrvusdRegistryAddress === 'function' ? (await getFactoryCrvusdRegistryAddress()) : null), + (typeof getFactoryTricryptoRegistryAddress === 'function' ? (await getFactoryTricryptoRegistryAddress()) : null), + (typeof getFactoryEywaRegistryAddress === 'function' ? (await getFactoryEywaRegistryAddress()) : null), + ].filter((o) => o !== null), + }; +}, { + promise: true, +}); + +export default getPlatformRegistries; diff --git a/utils/data/curve-pools-data.js b/utils/data/curve-pools-data.js index 0cbb83cf..0beebcc1 100644 --- a/utils/data/curve-pools-data.js +++ b/utils/data/curve-pools-data.js @@ -2,6 +2,9 @@ import memoize from 'memoizee'; import { flattenArray } from 'utils/Array'; import { sequentialPromiseFlatMap } from 'utils/Async'; import getPools from 'pages/api/getPools'; +import { BASE_API_DOMAIN } from 'constants/AppConstants'; +import getPlatformRegistries from './curve-platform-registries'; +import Request from 'utils/Request'; const attachBlockchainId = (blockchainId, poolData) => ({ ...poolData, @@ -20,26 +23,32 @@ const attachFactoryTag = (poolData) => ({ const getAllCurvePoolsData = memoize(async (blockchainIds) => ( flattenArray(await sequentialPromiseFlatMap(blockchainIds, async (blockchainId) => ( - Promise.all([ - (getPools.straightCall({ blockchainId, registryId: 'main', preventQueryingFactoData: true })) - .then((res) => res.poolData.map((poolData) => attachBlockchainId(blockchainId, poolData)).map((poolData) => attachRegistryId('main', poolData))), - (getPools.straightCall({ blockchainId, registryId: 'crypto', preventQueryingFactoData: true })) - .then((res) => res.poolData.map((poolData) => attachBlockchainId(blockchainId, poolData)).map((poolData) => attachRegistryId('crypto', poolData))), - (getPools.straightCall({ blockchainId, registryId: 'factory', preventQueryingFactoData: true })) - .then((res) => res.poolData.map((poolData) => attachBlockchainId(blockchainId, poolData)).map((poolData) => attachRegistryId('factory', poolData)).map(attachFactoryTag)), - (getPools.straightCall({ blockchainId, registryId: 'factory-crypto', preventQueryingFactoData: true })) - .then((res) => res.poolData.map((poolData) => attachBlockchainId(blockchainId, poolData)).map((poolData) => attachRegistryId('factory-crypto', poolData)).map(attachFactoryTag)), - (getPools.straightCall({ blockchainId, registryId: 'factory-crvusd', preventQueryingFactoData: true })) - .then((res) => res.poolData.map((poolData) => attachBlockchainId(blockchainId, poolData)).map((poolData) => attachRegistryId('factory-crvusd', poolData)).map(attachFactoryTag)), - (getPools.straightCall({ blockchainId, registryId: 'factory-tricrypto', preventQueryingFactoData: true })) - .then((res) => res.poolData.map((poolData) => attachBlockchainId(blockchainId, poolData)).map((poolData) => attachRegistryId('factory-tricrypto', poolData)).map(attachFactoryTag)), - (getPools.straightCall({ blockchainId, registryId: 'factory-eywa', preventQueryingFactoData: true })) - .then((res) => res.poolData.map((poolData) => attachBlockchainId(blockchainId, poolData)).map((poolData) => attachRegistryId('factory-eywa', poolData)).map(attachFactoryTag)), - ]) + Promise.all((await getPlatformRegistries(blockchainId)).registryIds.map((registryId) => ( + (getPools.straightCall({ blockchainId, registryId, preventQueryingFactoData: true })) + .then((res) => res.poolData.map((poolData) => attachBlockchainId(blockchainId, poolData)).map((poolData) => attachRegistryId(registryId, poolData)).map((poolData) => ( + registryId.startsWith('factory') ? + attachFactoryTag(poolData) : + poolData + ))) + ))) ))) ), { promise: true, maxAge: 60 * 1000, // 60s }); +const fetchAllCurvePoolsDataEndpoints = async (blockchainIds) => ( + flattenArray(await sequentialPromiseFlatMap(blockchainIds, async (blockchainId) => ( + Promise.all((await getPlatformRegistries(blockchainId)).registryIds.map(async (registryId) => ( + Promise.resolve((await (await Request.get(`${BASE_API_DOMAIN}/api/getPools/${blockchainId}/${registryId}`)).json()).data) + .then((res) => res.poolData.map((poolData) => attachBlockchainId(blockchainId, poolData)).map((poolData) => attachRegistryId('main', poolData)).map((poolData) => ( + registryId.startsWith('factory') ? + attachFactoryTag(poolData) : + poolData + ))) + ))) + ))) +); + export default getAllCurvePoolsData; +export { fetchAllCurvePoolsDataEndpoints }; diff --git a/utils/data/getCRVAPY.js b/utils/data/getCRVAPY.js deleted file mode 100644 index 5562d46e..00000000 --- a/utils/data/getCRVAPY.js +++ /dev/null @@ -1,97 +0,0 @@ -/* eslint-disable no-restricted-syntax */ - -import memoize from 'memoizee'; -import { GraphQLClient, gql } from 'graphql-request'; -import { flattenArray, arrayToHashmap } from 'utils/Array'; -import getAssetsPrices from 'utils/data/assets-prices'; -import getPoolUsdFigure from 'utils/data/getPoolUsdFigure'; -import pools, { poolGauges } from 'constants/pools'; -import Web3 from 'web3'; -import WEB3_CONSTANTS from 'constants/Web3'; -import Multicall from 'constants/abis/multicall.json'; - -const web3 = new Web3(WEB3_CONSTANTS.RPC_URL); -const MulticallContract = new web3.eth.Contract(Multicall, '0xeefBa1e63905eF1D7ACbA5a8513c70307C1cE441'); - -const getCRVAPY = memoize(async (userAddress) => { - const GAUGE_CONTROLLER_ADDRESS = '0x2F50D538606Fa9EDD2B11E2446BEb18C9D5846bB'; - const GAUGE_RELATIVE_WEIGHT = '0x6207d866000000000000000000000000'; - const { 'curve-dao-token': CRVprice } = await getAssetsPrices(['curve-dao-token']); - const weightCalls = poolGauges.map((gauge) => [GAUGE_CONTROLLER_ADDRESS, GAUGE_RELATIVE_WEIGHT + gauge.slice(2)]); - const aggCallsWeights = await MulticallContract.methods.aggregate(weightCalls).call(); - const decodedWeights = aggCallsWeights[1].map((hex, i) => [weightCalls[i][0], web3.eth.abi.decodeParameter('uint256', hex) / 1e18]); - const ratesCalls = flattenArray(poolGauges.map((gauge) => [ - [gauge, '0x180692d0'], - [gauge, '0x17e28089'], - [gauge, '0x18160ddd'], - ])); - const aggRates = await MulticallContract.methods.aggregate(ratesCalls).call(); - const decodedRate = aggRates[1].map((hex) => web3.eth.abi.decodeParameter('uint256', hex)); - const gaugeRates = decodedRate.filter((_, i) => i % 3 === 0).map((v) => v / 1e18); - const workingSupplies = decodedRate.filter((_, i) => i % 3 === 1).map((v) => v / 1e18); - const virtualPriceCalls = pools.filter(({ addresses: { swap } }) => !!swap).map(({ addresses: { swap } }) => [swap, '0xbb7b8b80']); - const aggVirtualPrices = await MulticallContract.methods.aggregate(virtualPriceCalls).call(); - const decodedVirtualPrices = aggVirtualPrices[1].map((hex, i) => [virtualPriceCalls[i][0], web3.eth.abi.decodeParameter('uint256', hex) / 1e18]); - const CRVAPYs = {}; - - let i = 0; - for (const w of decodedWeights) { - const pool = pools.find(({ addresses: { gauge } }) => gauge && gauge.toLowerCase() === '0x' + weightCalls[i][1].slice(34).toLowerCase()); - const { id: poolId, addresses: { swap: swapAddress } } = pool; - - const virtualPrice = decodedVirtualPrices.find((v) => v[0].toLowerCase() === swapAddress.toLowerCase())[1]; - // eslint-disable-next-line no-await-in-loop - const workingSupply = await getPoolUsdFigure(workingSupplies[i], pool, web3); - - const rate = (gaugeRates[i] * w[1] * 31536000 / workingSupply * 0.4) / virtualPrice; - let apy = rate * CRVprice * 100; - if (isNaN(apy)) apy = 0; - - CRVAPYs[poolId] = apy; - - i += 1; - } - - const boosts = arrayToHashmap(pools.map(({ id }) => [id, 1])); - if (userAddress) { - const wrapper = new GraphQLClient('https://api.thegraph.com/subgraphs/name/sistemico/curve'); - - const QUERY = gql` - { - account(id: "${userAddress.toLowerCase()}") { - gauges { - gauge { - id - } - originalBalance - originalSupply - workingBalance - workingSupply - } - } - } - `; - - let results = await wrapper.request(QUERY, {}); - results = results.account ? results.account.gauges : []; - - for (const gaugeBoost of results) { - const pool = pools.find((pool) => pool.addresses.gauge && pool.addresses.gauge.toLowerCase() === gaugeBoost.gauge.id.toLowerCase()) - if (!pool) continue; // If the gauge has been retired - - boosts[pool.id] = gaugeBoost.workingBalance / (0.4 * gaugeBoost.originalBalance); - CRVAPYs[pool.id] *= boosts[pool.id]; - } - } - - return { - CRVprice, - CRVAPYs, - boosts, - }; -}, { - promise: true, - maxAge: 10 * 60 * 1000, // 10m -}); - -export default getCRVAPY; diff --git a/utils/data/getCrvusdPrice.js b/utils/data/getCrvusdPrice.js new file mode 100644 index 00000000..743dd812 --- /dev/null +++ b/utils/data/getCrvusdPrice.js @@ -0,0 +1,43 @@ +import memoize from 'memoizee'; +import Web3 from 'web3'; +import configs from 'constants/configs'; +import { lc } from 'utils/String'; +import { multiCall } from 'utils/Calls'; +import AGGREGATOR_STABLE_PRICE_ABI from 'constants/abis/AggregatorStablePrice.json'; + +const CRVUSD_ADDRESSES = { + ethereum: lc('0xf939e0a03fb07f59a73314e73794be0e57ac1b4e'), + base: lc('0x417ac0e078398c154edfadd9ef675d30be60af93'), +}; + +const AGGREGATOR_STABLE_PRICE_ADDRESS = '0x18672b1b0c623a30089A280Ed9256379fb0E4E62'; + +const { rpcUrl, multicall2Address } = configs.ethereum; +const web3 = new Web3(rpcUrl); + +const getCrvusdPrice = memoize(async () => { + const [crvusdPrice] = await multiCall([{ + address: AGGREGATOR_STABLE_PRICE_ADDRESS, + abi: AGGREGATOR_STABLE_PRICE_ABI, + methodName: 'price', + networkSettings: { web3, multicall2Address }, + }]); + + return (crvusdPrice / 1e18); +}, { + promise: true, + maxAge: 1 * 60 * 1000, // 1 min +}); + +const getCrvusdPriceForBlockchainId = async (blockchainId) => { + const isCrvusdDeployedThere = Object.hasOwn(CRVUSD_ADDRESSES, blockchainId); + if (!isCrvusdDeployedThere) return {}; + + const crvusdPrice = await getCrvusdPrice(); + + return { + [CRVUSD_ADDRESSES[blockchainId]]: crvusdPrice, + }; +}; + +export default getCrvusdPriceForBlockchainId; diff --git a/utils/data/getETHLSDAPYs.js b/utils/data/getETHLSDAPYs.js new file mode 100644 index 00000000..e7365b17 --- /dev/null +++ b/utils/data/getETHLSDAPYs.js @@ -0,0 +1,43 @@ +import memoize from 'memoizee'; +import { arrayToHashmap } from 'utils/Array'; +import { lc } from 'utils/String'; +import Request from 'utils/Request'; + +const FALLBACK_RETURN_VALUE = {}; + +const REPRESENTATIONS = { + [lc('0xae7ab96520de3a18e5e111b5eaab095312d7fe84')]: lc('0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0'), // stETH <> wstETH + [lc('0x5e8422345238f34275888049021821e8e08caa1f')]: lc('0xac3e018457b222d93114458476f3e3416abbe38f'), // frxETH <> sfrxETH +}; + +const MIRROR_REPRESENTATIONS = [ + +]; + +// Returns a map of ETH LSD address <> staking apy +const getETHLSDAPYs = memoize(async () => { + try { + const { success, data } = await (await Request.get('https://api.cryptostats.community/api/v1/eth-staking-pools/apy?metadata=true')).json(); + if (!success) return FALLBACK_RETURN_VALUE; + + const map = arrayToHashmap(data.map(({ metadata: { tokenAddress }, results: { apy } }) => [ + (REPRESENTATIONS[lc(tokenAddress)] || lc(tokenAddress)), + apy, + ])); + + return { + ...map, + ...arrayToHashmap(MIRROR_REPRESENTATIONS.map(([a, b]) => [ + b, + map[a], + ])), + }; + } catch (err) { + return FALLBACK_RETURN_VALUE; + } +}, { + promise: true, + maxAge: 30 * 60 * 1000, // 30 min +}); + +export default getETHLSDAPYs; diff --git a/utils/data/getEywaTokenPrices.js b/utils/data/getEywaTokenPrices.js new file mode 100644 index 00000000..7950da32 --- /dev/null +++ b/utils/data/getEywaTokenPrices.js @@ -0,0 +1,35 @@ +import memoize from 'memoizee'; +import { arrayToHashmap, flattenArray } from 'utils/Array'; +import { multiCall } from 'utils/Calls'; +import TEMPLE_LP_TOKEN_ABI from 'constants/abis/temple-lp-token.json'; +import getTokensPrices from 'utils/data/tokens-prices'; +import groupBy from 'lodash.groupby'; +import Request from 'utils/Request'; + +const getEywaTokenPrice = (address) => ( + Request.get(`https://pusher.eywa.fi/prices/${address}`) + .then((res) => res.json()) + .catch(() => 1) // Fallback if the eywa api doesn't know about this token yet, should happen rarely if at all +); + +const getEywaTokenPrices = memoize(async ( + networkSettingsParam, + blockchainId, + coinAddressesAndPricesMapFallback, + allCoinAddresses +) => { + const firstTokenOfEachEywaPool = Array.from(Object.values(groupBy(allCoinAddresses, 'poolId'))).map(([{ address }]) => address); + console.log('firstTokenOfEachEywaPool', firstTokenOfEachEywaPool) + + const prices = await Promise.all(firstTokenOfEachEywaPool.map(getEywaTokenPrice)) + console.log('prices', prices) + + const EywaTokensPrices = arrayToHashmap(firstTokenOfEachEywaPool.map((address, i) => [address.toLowerCase(), prices[i]])); + + return EywaTokensPrices; +}, { + promise: true, + maxAge: 10 * 60 * 1000, // 10 min +}); + +export default getEywaTokenPrices; diff --git a/utils/data/getFactoryV2GaugeRewards.js b/utils/data/getFactoryV2GaugeRewards.js index 3dbf0a19..f682b19e 100644 --- a/utils/data/getFactoryV2GaugeRewards.js +++ b/utils/data/getFactoryV2GaugeRewards.js @@ -10,7 +10,7 @@ import getTokensPrices from 'utils/data/tokens-prices'; import ERC20_ABI from 'constants/abis/erc20.json'; // eslint-disable-next-line -const FACTORY_GAUGES_ABI = [{"stateMutability":"view","type":"function","name":"reward_count","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3498},{"stateMutability":"view","type":"function","name":"reward_tokens","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":3573},{"stateMutability":"view","type":"function","name":"reward_data","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"token","type":"address"},{"name":"distributor","type":"address"},{"name":"period_finish","type":"uint256"},{"name":"rate","type":"uint256"},{"name":"last_update","type":"uint256"},{"name":"integral","type":"uint256"}],"gas":15003},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3108}]; +const FACTORY_GAUGES_ABI = [{ "stateMutability": "view", "type": "function", "name": "reward_count", "inputs": [], "outputs": [{ "name": "", "type": "uint256" }], "gas": 3498 }, { "stateMutability": "view", "type": "function", "name": "reward_tokens", "inputs": [{ "name": "arg0", "type": "uint256" }], "outputs": [{ "name": "", "type": "address" }], "gas": 3573 }, { "stateMutability": "view", "type": "function", "name": "reward_data", "inputs": [{ "name": "arg0", "type": "address" }], "outputs": [{ "name": "token", "type": "address" }, { "name": "distributor", "type": "address" }, { "name": "period_finish", "type": "uint256" }, { "name": "rate", "type": "uint256" }, { "name": "last_update", "type": "uint256" }, { "name": "integral", "type": "uint256" }], "gas": 15003 }, { "stateMutability": "view", "type": "function", "name": "totalSupply", "inputs": [], "outputs": [{ "name": "", "type": "uint256" }], "gas": 3108 }]; export default memoize(async ({ factoryGaugesAddresses, blockchainId } = {}) => { if (typeof blockchainId === 'undefined') blockchainId = undefined; // Default value diff --git a/utils/data/getFactoryV2SidechainGaugeRewards.js b/utils/data/getFactoryV2SidechainGaugeRewards.js index 1b73dd46..d5b4b413 100644 --- a/utils/data/getFactoryV2SidechainGaugeRewards.js +++ b/utils/data/getFactoryV2SidechainGaugeRewards.js @@ -69,7 +69,7 @@ export default memoize(async ({ blockchainId, gauges }) => { rewardTokenAddress )); - const coinAddressesAndPricesMap = await getTokensPrices(uniq(rewardTokenAddresses), config.platformCoingeckoId); + const coinAddressesAndPricesMap = await getTokensPrices(uniq(rewardTokenAddresses), blockchainId); const coinsFallbackPrices = ( COIN_ADDRESS_COINGECKO_ID_MAP[blockchainId] ? @@ -134,7 +134,7 @@ export default memoize(async ({ blockchainId, gauges }) => { const effectiveRate = typeof rate !== 'undefined' ? rate : rateFallback; const effectivePeriodFinish = Number(typeof periodFinish !== 'undefined' ? periodFinish : periodFinishFallback); const isRewardStillActive = effectivePeriodFinish > nowTimestamp; - const totalSupply = gaugesTotalSupply.find(({ metaData }) => metaData.name === name).data / 1e18; + const totalSupply = gaugesTotalSupply.find(({ metaData }) => metaData.gauge === gauge).data / 1e18; const tokenName = tokenData.find(({ metaData }) => metaData.rewardTokenAddress === rewardTokenAddress && metaData.name === name && metaData.type === 'name').data; const tokenSymbol = tokenData.find(({ metaData }) => metaData.rewardTokenAddress === rewardTokenAddress && metaData.name === name && metaData.type === 'symbol').data; const tokenDecimals = tokenData.find(({ metaData }) => metaData.rewardTokenAddress === rewardTokenAddress && metaData.name === name && metaData.type === 'decimals').data; @@ -160,12 +160,12 @@ export default memoize(async ({ blockchainId, gauges }) => { apyData: { isRewardStillActive, tokenPrice, - rate: effectiveRate / 1e18, + rate: effectiveRate / (10 ** tokenDecimals), totalSupply, }, apy: ( isRewardStillActive ? - (effectiveRate) / 1e18 * 86400 * 365 * tokenPrice / totalSupply / lpTokenPrice * 100 : + (effectiveRate) / (10 ** tokenDecimals) * 86400 * 365 * tokenPrice / totalSupply / lpTokenPrice * 100 : 0 ), metaData: {