diff --git a/package-lock.json b/package-lock.json index 9e9a683a05..fa16f36d45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -785,9 +785,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.62", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.62.tgz", - "integrity": "sha512-Qh1I7EHlb/HIp2rQDrP96PQYMYNakLdakA4r3C7xYvbReyyyF5YdGzU8gEr8EiAesF2jmtR1Wtwa1r9FV0tcIQ==", + "version": "4.0.64", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.64.tgz", + "integrity": "sha512-wqM4enhx11vN5OuRNpK9QMoOEQbbQFKu7tT0rM6ddYA4w1tvuayWAn8mjfV8TN5wd88aHV4+zNY0Sps+mrVN9w==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", @@ -5905,9 +5905,9 @@ } }, "@defillama/sdk": { - "version": "4.0.62", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.62.tgz", - "integrity": "sha512-Qh1I7EHlb/HIp2rQDrP96PQYMYNakLdakA4r3C7xYvbReyyyF5YdGzU8gEr8EiAesF2jmtR1Wtwa1r9FV0tcIQ==", + "version": "4.0.64", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.64.tgz", + "integrity": "sha512-wqM4enhx11vN5OuRNpK9QMoOEQbbQFKu7tT0rM6ddYA4w1tvuayWAn8mjfV8TN5wd88aHV4+zNY0Sps+mrVN9w==", "requires": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/altitude/index.js b/projects/altitude/index.js index bcdc8282f9..4c762b3f58 100644 --- a/projects/altitude/index.js +++ b/projects/altitude/index.js @@ -1,16 +1,18 @@ const { stakings } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); const stakingContracts = [ "0xbc2B1262C90ab34757dC7eb2CB7CE595660Ff44e", ]; -const ALTD_USDC_UNIV2 = "0xC180869eeff55eE737e4B4f10D93B27B10bF976b"; const ALTD = "0x8929e9DbD2785e3BA16175E596CDD61520feE0D1"; -const contract = '0xF80E51AFb613D764FA61751Affd3313C190A86BB' +const GENERAL_CONTRACT = '0xF80E51AFb613D764FA61751Affd3313C190A86BB'; +const EXTRA_CONTRACTS = { + arbitrum: ['0xd6e501F92CE58623EE5D36f6BAdBcd35d87Ea522'], + mantle: ['0xf0dbc067D21319068e1C2617e13FC28db83C18FE'], +}; -const CHAINS = ["ethereum", "bsc", "polygon", "arbitrum", "avax", "optimism", "fantom", "linea"]; +const CHAINS = ["ethereum", "bsc", "polygon", "arbitrum", "avax", "optimism", "fantom", "linea", "mantle"]; const chainPathsAbi = "function chainPaths(uint256) view returns (bool ready, address srcToken, uint16 dstChainId, address dstToken, uint256 remoteLiquidity, uint256 localLiquidity, uint256 rewardPoolSize, address lpToken, bool stopSwap)"; let output = {}; @@ -18,27 +20,47 @@ let output = {}; CHAINS.forEach(chain => { output[chain] = { tvl: async (_, _b, _cb, { api, }) => { - const tokens = []; - let hasMoreTokens = false; - let currentStart = 0; - const fetchSize = 5; - do { - let res = await api.fetchList({ itemAbi: chainPathsAbi, target: contract, itemCount: fetchSize + currentStart, start: currentStart, permitFailure: true }); - res = res.filter(i => i).map(i => i.srcToken); - tokens.push(...res); - currentStart += fetchSize; - hasMoreTokens = res.length === fetchSize; - } while (hasMoreTokens); - return api.sumTokens({ owner: contract, tokens }); + // Define a function to fetch tokens given a contract address + const fetchTokens = async (contract) => { + const tokens = []; + let hasMoreTokens = false; + let currentStart = 0; + const fetchSize = 5; + do { + let res = await api.fetchList({ + itemAbi: chainPathsAbi, + target: contract, + itemCount: fetchSize + currentStart, + start: currentStart, + permitFailure: true + }); + res = res.filter(i => i).map(i => i.srcToken); + tokens.push(...res); + currentStart += fetchSize; + hasMoreTokens = res.length === fetchSize; + } while (hasMoreTokens); + return tokens; + }; + + // Fetch tokens from the general contract + let tokens = await fetchTokens(GENERAL_CONTRACT); + + // If there are extra contracts for this chain, fetch those tokens too + if(EXTRA_CONTRACTS[chain]) { + for(const extraContract of EXTRA_CONTRACTS[chain]) { + const extraTokens = await fetchTokens(extraContract); + tokens = [...tokens, ...extraTokens]; + } + } + + // Sum tokens for TVL + return api.sumTokens({ owner: GENERAL_CONTRACT, tokens }); } }; }); + output.ethereum.staking = stakings(stakingContracts, ALTD); -// output.ethereum.pool2 = pool2( -// null, // No staking contract -// ALTD_USDC_UNIV2 // Address of the LP token -// ); output.methodology = "Fetches the localLiquidity of each token in the Altitude contract across multiple chains and computes the TVL."; diff --git a/projects/amphora/index.js b/projects/amphora/index.js index 2d64760645..e817aed611 100644 --- a/projects/amphora/index.js +++ b/projects/amphora/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs'); async function tvl(_, _1, _2, { api }) { const ownerAddress = "0xA905f9f0b525420d4E5214E73d70dfFe8438D8C8"; const tokensAndOwners = [ ["0xb2f30a7c980f052f02563fb518dcc39e6bf38175", "0xD842D9651F69cEBc0b2Cffc291fC3D3Fe7b5D226"], - ["0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", ownerAddress], + [ADDRESSES.ethereum.SNX, ownerAddress], ["0xba100000625a3754423978a60c9317c58a424e3D", ownerAddress], - ["0xD533a949740bb3306d119CC777fa900bA034cd52", ownerAddress,], - ["0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", ownerAddress,], + [ADDRESSES.ethereum.CRV, ownerAddress,], + [ADDRESSES.ethereum.CVX, ownerAddress,], ["0xD842D9651F69cEBc0b2Cffc291fC3D3Fe7b5D226", ownerAddress,] ]; diff --git a/projects/apex/index.js b/projects/apex/index.js index dbb469d3b9..92c21095c6 100644 --- a/projects/apex/index.js +++ b/projects/apex/index.js @@ -20,12 +20,12 @@ const walletAddresses = { }; const tokenAddress = { - bsc: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', - polygon: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', - arbitrum: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', - avax: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', - optimism: '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', - mantle: '0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9', + bsc: ADDRESSES.bsc.USDC, + polygon: ADDRESSES.polygon.USDC, + arbitrum: ADDRESSES.arbitrum.USDC, + avax: ADDRESSES.avax.USDC, + optimism: ADDRESSES.optimism.USDC, + mantle: ADDRESSES.mantle.USDC, } module.exports = { diff --git a/projects/arcanum/index.js b/projects/arcanum/index.js index fd519d04b1..de56fbeae9 100644 --- a/projects/arcanum/index.js +++ b/projects/arcanum/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') -const ARBI_CONTRACT = '0xfc2f1678f7c0d78c3911090c92b86bca7cc3a8b7'; +const ARBI_CONTRACT = '0xB1947d7596840D0a14D30cCA91be69ddC24ab75d'; const ASSETS_CONTRACTS = [ - '0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a', + ADDRESSES.arbitrum.GMX, '0x11cdb42b0eb46d95f990bedd4695a6e3fa034978', '0x18c11fd286c5ec11c3b683caa813b77f5163a122', '0xb64e280e9d1b5dbec4accedb2257a87b400db149', @@ -13,6 +14,6 @@ module.exports = { methodology: 'counts the quantities of all tokens in multipool contracts.', start: 1000235, arbitrum: { - tvl: sumTokensExport({ owner: ARBI_CONTRACT, tokens: ASSETS_CONTRACTS}), + tvl: sumTokensExport({ owner: ARBI_CONTRACT, tokens: ASSETS_CONTRACTS }), } }; diff --git a/projects/bassexhcnage/index.js b/projects/bassexhcnage/index.js index a4eafd430d..4cb5b34d37 100644 --- a/projects/bassexhcnage/index.js +++ b/projects/bassexhcnage/index.js @@ -1,8 +1,14 @@ -const { staking } = require("../helper/staking"); +const { stakings } = require("../helper/staking"); const { sumTokens2 } = require('../helper/unwrapLPs') const asssets = "0xb11f5E642EF4cF963e45A83E55A8fedCd58F9A9c" +const stakingContracts = [ + '0xa5895B5fF267041B968aA82d37A141F08f344333', + '0xB6D7406F2e4B2680fFCCA3Ad3c3FAB5eE07f2832', +] +const bass = '0x1F23B787053802108fED5B67CF703f0778AEBaD8' + async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { const tokensAndOwners = await api.call({ target: asssets, @@ -14,5 +20,6 @@ async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { module.exports = { base: { tvl, + staking: stakings(stakingContracts, bass), }, }; diff --git a/projects/blex/index.js b/projects/blex/index.js index c7024505f7..69934de5d5 100644 --- a/projects/blex/index.js +++ b/projects/blex/index.js @@ -1,5 +1,5 @@ const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require('../helper/unwrapLPs') +const { sumTokensExport } = require("../helper/unwrapLPs"); const contracts = [ "0x4d377340a2875b875e1C104B9905F74FD716F59e", //CoreVault @@ -12,6 +12,7 @@ const contracts = [ const tokens = [ADDRESSES.arbitrum.USDT]; module.exports = { - start: 118461883, - arbitrum: { tvl: sumTokensExport({ tokens, owners: contracts, }) }, + start: 1691240820, + arbitrum: { tvl: sumTokensExport({ tokens, owners: contracts }) }, + hallmarks: [[1691240820, "Blex Protocol Deployed on Arbitrum"]], }; diff --git a/projects/cbETH/index.js b/projects/cbETH/index.js index e0beb04670..7370441aac 100644 --- a/projects/cbETH/index.js +++ b/projects/cbETH/index.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { default: axios } = require("axios") -const token = '0xbe9895146f7af43049ca1c1ae358b0541ea49704' +const token = ADDRESSES.ethereum.cbETH module.exports = { ethereum: { diff --git a/projects/celerbridge/index.js b/projects/celerbridge/index.js index d65334b802..ea538f461d 100644 --- a/projects/celerbridge/index.js +++ b/projects/celerbridge/index.js @@ -170,7 +170,7 @@ const liquidityBridgeTokens = [ { // LYRA ethereum: "0x01ba67aac7f75f647d94220cc98fb30fcc5105bf", - optimism: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + optimism: ADDRESSES.base.DAI, }, { // IMX diff --git a/projects/contrax-finance/index.js b/projects/contrax-finance/index.js new file mode 100644 index 0000000000..4c86ca8c3c --- /dev/null +++ b/projects/contrax-finance/index.js @@ -0,0 +1,70 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokens2 } = require("../helper/unwrapLPs"); +const Vaults = [ + "0x5cc3543656EfA30144965C6c538F4d8379F83138", + "0x3C0c76ceb491Cb0Bacb31F8e7dc6407A25FD87C0", + "0x286d24B99b5CB6fE081f0e6Bd44EcbfCC1171A56", + "0x8f2CC9FC5ecf3D30aC83c96189cdd6EC2810E2f8", + "0x3F9012f9bF3172c26B1B7246B8bc62148842B013", + "0xeb952db71c594299cEEe7c03C3AA26FE0fDBC8eb", + "0xdf9d86bC4765a9C64e85323A9408dbee0115d22E", + "0xb58004E106409B00b854aBBF8CCB8618673d9346", + "0xf8bDcf1Cf4134b2864cdbE685A8128F90ED0E16e", + "0x46910A4AbA500b71F213150A0E99201Fd5c8FCec", + "0xfd3573bebDc8bF323c65Edf2408Fd9a8412a8694", + "0x8ca3f11485Bd85Dd0E952C6b21981DEe8CD1E901", + "0x1dda3B8A728a62a30f79d1E2a10e3d6B85ef4C5d", + "0x6C416e46424aF2676E9603F9D707f8d4808Bb5d8", +]; +const HOP_MAGIC_VAULT = "0x2d79B76841191c9c22238535a93Ee8169096A5Cc"; +const GMX_VAULT = "0x8CdF8d10ea6Cd3492e67C4250481A695c2a75C4a"; +const GMX = ADDRESSES.arbitrum.GMX; + +async function getHopMagicData(api) { + const tokenAddress = await api.call({ + abi: "function token() view returns (address token)", + target: HOP_MAGIC_VAULT, + params: [], + }); + const balance = await api.call({ + abi: "erc20:balanceOf", + target: tokenAddress, + params: [HOP_MAGIC_VAULT], + }); + api.add(tokenAddress, balance); +} + +async function getGMXData(api) { + const balance = await api.call({ + abi: "erc20:balanceOf", + target: GMX, + params: [GMX_VAULT], + }); + api.add(GMX, balance); +} + +async function tvl(_, _1, _2, { api }) { + let tokens = await api.multiCall({ abi: "address:token", calls: Vaults }); + // Controllers + let targets = await api.multiCall({ + abi: "address:controller", + calls: Vaults, + }); + + const bals = await api.multiCall({ + abi: "erc20:balanceOf", + calls: tokens.map((t, i) => ({ target: targets[i], params: [t] })), + }); + await getHopMagicData(api); + await getGMXData(api); + + api.addTokens(tokens, bals); + return sumTokens2({ api, resolveLP: true }); +} + +module.exports = { + methodology: "gets the lp balance of all vaults/controller/treasuries", + arbitrum: { + tvl, + }, +}; diff --git a/projects/deepp/index.js b/projects/deepp/index.js new file mode 100644 index 0000000000..2499155bdc --- /dev/null +++ b/projects/deepp/index.js @@ -0,0 +1,19 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); +const ADDRESSES = require("../helper/coreAssets.json"); + +module.exports = { + methodology: 'Lists the number of owned USDC tokens in the Deepp LP and BetLock contracts.', + start: 1696118400, + arbitrum: { + tvl: sumTokensExport({ + owners: Object.values({ + BET_LP_CONTRACT: '0x84a512E120294C2017a88a8f1af2219Ec250CBaa', + BET_BOX_ADDRESS: '0x05E1F51067a3Af2f9d0994a97779a78a2E26f921', + BET_FEE_HANDLER_1_ADDRESS: '0x42e27a7D424C22ED3658970CAB01260f8C0EC5Bc', + BET_FEE_HANDLER_2_ADDRESS: '0xD5750d44D9F2ed117FB3441D80B423acD7634Cf5', + LP_FEE_HANDLER_1_ADDRESS: '0x80e674e6277A7e9073A6Dff5C98e08816c0D73f5', + LP_FEE_HANDLER_2_ADDRESS: '0xAb5e18D29C20709954eA380e998FFFeaeB4FF691', + }), tokens: [ADDRESSES.arbitrum.USDC_CIRCLE] + }), + } +}; // node test.js projects/deepp/index.js \ No newline at end of file diff --git a/projects/diva/index.js b/projects/diva/index.js index 98d418748c..31d7d6eb96 100644 --- a/projects/diva/index.js +++ b/projects/diva/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { @@ -7,8 +8,8 @@ module.exports = { "0x1ce8aafb51e79f6bdc0ef2ebd6fd34b00620f6db", "0x16770d642e882e1769ce4ac8612b8bc0601506fc" ], tokens: [ - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0xae7ab96520de3a18e5e111b5eaab095312d7fe84" + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.STETH ]}), } }; \ No newline at end of file diff --git a/projects/dopex/index.js b/projects/dopex/index.js index cf87dfb433..69776bad04 100644 --- a/projects/dopex/index.js +++ b/projects/dopex/index.js @@ -133,7 +133,7 @@ async function arbTvl(timestamp, block, chainBlocks) { await ssovTvl(balances, ssovs, chainBlocks.arbitrum, "arbitrum"); await crvTvls(balances, crvPools, chainBlocks.arbitrum, "arbitrum"); await sumTokens(balances, [ - ["0x912ce59144191c1204e64559fe8253a0e49e6548", "0xDF3d96299275E2Fb40124b8Ad9d270acFDcc6148"], + [ADDRESSES.arbitrum.ARB, "0xDF3d96299275E2Fb40124b8Ad9d270acFDcc6148"], ["0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55", "0x05E7ACeD3b7727f9129E6d302B488cd8a1e0C817"], ["0x32eb7902d4134bf98a28b963d26de779af92a212", "0xd74c61ca8917Be73377D74A007E6f002c25Efb4e"] ], chainBlocks.arbitrum, "arbitrum") diff --git a/projects/entities/gsr.js b/projects/entities/gsr.js new file mode 100644 index 0000000000..2f2fe47037 --- /dev/null +++ b/projects/entities/gsr.js @@ -0,0 +1,51 @@ +const { treasuryExports } = require("../helper/treasury") + +const config = { + ethereum: { + owners: [ + "0xD8D6fFE342210057BF4DCc31DA28D006f253cEF0", + ], + }, + bsc: { + owners: [ + "0xD8D6fFE342210057BF4DCc31DA28D006f253cEF0", + ], + }, + arbitrum: { + owners: [ + "0xD8D6fFE342210057BF4DCc31DA28D006f253cEF0", + ], + }, + celo: { + owners: [ + "0xD8D6fFE342210057BF4DCc31DA28D006f253cEF0", + ], + }, + optimism: { + owners: [ + "0xD8D6fFE342210057BF4DCc31DA28D006f253cEF0", + ], + }, + polygon: { + owners: [ + "0xD8D6fFE342210057BF4DCc31DA28D006f253cEF0", + ], + }, + avax: { + owners: [ + "0xD8D6fFE342210057BF4DCc31DA28D006f253cEF0", + ], + }, + moonriver: { + owners: [ + "0xD8D6fFE342210057BF4DCc31DA28D006f253cEF0", + ], + }, + aurora: { + owners: [ + "0xD8D6fFE342210057BF4DCc31DA28D006f253cEF0", + ], + }, +} + +module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/polychain-capital.js b/projects/entities/polychain-capital.js index ee4cd1560f..effc5a381c 100644 --- a/projects/entities/polychain-capital.js +++ b/projects/entities/polychain-capital.js @@ -4,10 +4,20 @@ const config = { ethereum: { owners: [ "0xBcd5000F5c522856E710c5d274bb672B2f2EefBf", - "0x53c286E0AbE87c9e6d4d95ebE62ceaFa4aFCE849" + "0x53c286E0AbE87c9e6d4d95ebE62ceaFa4aFCE849", + "0xfA9b5f7fDc8AB34AAf3099889475d47febF830D7", + "0xf286BB612e219916F8e9bA7200bF09Ed218890cb", + "0xb283391C4B4B5C5FA20FDA38bc0178EA264682b1", + "0xA1F5269738a227b568D1EEC42F29d71c19afeeE5", + ], + }, + optimism: { + owners: [ + "0xb0e90f9Dd83aBc67268672361B4f6d54f0d7Ea2C", + "0xea6C3Db2e7FCA00Ea9d7211a03e83f568Fc13BF7" ], }, } -module.exports = treasuryExports(config) \ No newline at end of file +module.exports = treasuryExports(config) diff --git a/projects/ergodex.js b/projects/ergodex.js index 46776b2495..4d70c19c1e 100644 --- a/projects/ergodex.js +++ b/projects/ergodex.js @@ -1,8 +1,9 @@ const { sumTokensExport } = require('./helper/chain/ergo') +const { sumTokensExport: steCardano } = require('./helper/chain/cardano') const utils = require('./helper/utils'); async function cardanoTVL() { - let response = await utils.fetchURL('https://analytics.spectrum.fi/cardano/pools/overview?after=0') + let response = await utils.fetchURL('https://analytics-balanced.spectrum.fi/cardano/pools/overview?after=0') let data = response.data; let totalTvl = 0; @@ -15,10 +16,12 @@ async function cardanoTVL() { module.exports = { timetravel: false, + misrepresentedTokens: true, ergo: { tvl: sumTokensExport({ owner: '5vSUZRZbdVbnk4sJWjg2uhL94VZWRg4iatK9VgMChufzUgdihgvhR8yWSUEJKszzV7Vmi6K8hCyKTNhUaiP8p5ko6YEU9yfHpjVuXdQ4i5p4cRCzch6ZiqWrNukYjv7Vs5jvBwqg5hcEJ8u1eerr537YLWUoxxi1M4vQxuaCihzPKMt8NDXP4WcbN6mfNxxLZeGBvsHVvVmina5THaECosCWozKJFBnscjhpr3AJsdaL8evXAvPfEjGhVMoTKXAb2ZGGRmR8g1eZshaHmgTg2imSiaoXU5eiF3HvBnDuawaCtt674ikZ3oZdekqswcVPGMwqqUKVsGY4QuFeQoGwRkMqEYTdV2UDMMsfrjrBYQYKUBFMwsQGMNBL1VoY78aotXzdeqJCBVKbQdD3ZZWvukhSe4xrz8tcF3PoxpysDLt89boMqZJtGEHTV9UBTBEac6sDyQP693qT3nKaErN8TCXrJBUmHPqKozAg9bwxTqMYkpmb9iVKLSoJxG7MjAj72SRbcqQfNCVTztSwN3cRxSrVtz4p87jNFbVtFzhPg7UqDwNFTaasySCqM', }) }, cardano: { - tvl: cardanoTVL + tvl: cardanoTVL, + // tvl: steCardano({ owner: 'addr1x94ec3t25egvhqy2n265xfhq882jxhkknurfe9ny4rl9k6dj764lvrxdayh2ux30fl0ktuh27csgmpevdu89jlxppvrst84slu'}) } } diff --git a/projects/forlend/index.js b/projects/forlend/index.js index aa96f3f414..987c129486 100644 --- a/projects/forlend/index.js +++ b/projects/forlend/index.js @@ -1,6 +1,5 @@ -const { compoundExports } = require('../helper/compound') - +const { compoundExports2 } = require('../helper/compound') module.exports = { - findora: compoundExports("0x3b056De20d662B09f73bDb28Ea6fa7b7aC82259C", "findora",), + findora: compoundExports2({ comptroller: '0x3b056De20d662B09f73bDb28Ea6fa7b7aC82259C', cether: '0xbd4eeda5062605f3c3b86039c5f2c5880f9ecd95'}), } diff --git a/projects/fusefi/index.js b/projects/fusefi/index.js index 6486ac227f..92b203e1f8 100644 --- a/projects/fusefi/index.js +++ b/projects/fusefi/index.js @@ -1,27 +1,19 @@ const sdk = require("@defillama/sdk"); const swap = require("./swap"); const olalending = require("./olalending"); -const { stakingPricedLP } = require("../helper/staking"); +const { stakings } = require("../helper/staking"); const VOLT_TOKEN = "0x34Ef2Cc892a88415e9f02b91BfA9c91fC0bE6bD4".toLowerCase(); const VOLT_BAR = "0x97a6e78c9208c21afaDa67e7E61d7ad27688eFd1".toLowerCase(); -const WFUSE_VOLT_LP = - "0xa670b12f8485aa379e99cf097017785b6aca5968".toLowerCase(); +const VOLT_VOTE_ESCROW = "0xB0a05314Bd77808269e2E1E3D280Bff57Ba85672".toLowerCase() module.exports = { - timetravel: true, + misrepresentedTokens: true, fuse: { tvl: sdk.util.sumChainTvls([swap.tvl, olalending.tvl]), - borrowed: olalending.borrowed, - staking: stakingPricedLP( - VOLT_BAR, - VOLT_TOKEN, - "fuse", - WFUSE_VOLT_LP, - "fuse-network-token" - ), + staking: stakings([VOLT_BAR, VOLT_VOTE_ESCROW], VOLT_TOKEN), }, hallmarks: [ [1648684800, "Ola Finance exploit"] -] + ] }; diff --git a/projects/gambit/index.js b/projects/gambit/index.js index 29c4724841..9b1b101678 100644 --- a/projects/gambit/index.js +++ b/projects/gambit/index.js @@ -2,11 +2,12 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const SimpleGToken = "0x0729e806f57CE71dA4464c6B2d313E517f41560b"; // SimpleGToken +const Treasury = "0x1fb8611064a09469F808263C398623A86e7Aa883"; // Treasury module.exports = { methodology: `Count the USDC that has been deposited on Gambit`, era: { - tvl: sumTokensExport({ owner: SimpleGToken, tokens: [ADDRESSES.era.USDC], }), + tvl: sumTokensExport({ owners: [SimpleGToken, Treasury], tokens: [ADDRESSES.era.USDC], }), }, }; diff --git a/projects/helper/cex.js b/projects/helper/cex.js index 49ff19b074..cba56ef2e8 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -112,6 +112,7 @@ const defaultTokens = { ADDRESSES.polygon.DAI, //DAI '0x2AB0e9e4eE70FFf1fB9D67031E44F6410170d00e', //xen '0x0169ec1f8f639b32eec6d923e24c2a2ff45b9dd6', //ALGB + '0xd0258a3fd00f38aa8090dfee343f10a9d4d30d3f', //voxel ], algorand: [], solana: [ @@ -141,7 +142,11 @@ const defaultTokens = { '0x352Cb5E19b12FC216548a2677bD0fce83BaE434B', // BTT '0xAD29AbB318791D579433D831ed122aFeAf29dcfe', // FTM '0x02ff5065692783374947393723dba9599e59f591',// yoshi - ADDRESSES.bsc.TUSD, //TUSD + ADDRESSES.bsc.TUSD, //TUSD + '0x965f527d9159dce6288a2219db51fc6eef120dd1', //BSW + '0xa2120b9e674d3fc3875f415a7df52e382f141225', //ata + '0x44ec807ce2f4a6f2737a92e985f318d035883e47', //HFT + ], eos: [ ["eosio.token", "EOS", "eos"], @@ -152,8 +157,11 @@ const defaultTokens = { ADDRESSES.arbitrum.USDC, // USDC ADDRESSES.arbitrum.USDT, // USDT ADDRESSES.arbitrum.DAI, // DAI - '0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b' //aidoge - + '0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b', //aidoge + '0x3082cc23568ea640225c2467653db90e9250aaa0', //rdnt + '0x088cd8f5ef3652623c22d48b1605dcfe860cd704', //vela + '0x289ba1701c2f088cf0faf8b3705246331cb8a839', //lpt + '0x51fc0f6660482ea73330e414efd7808811a57fa2', //premia ], avax: [ nullAddress, @@ -171,13 +179,14 @@ const defaultTokens = { ADDRESSES.optimism.OP, //OP ADDRESSES.optimism.USDT, //USDT ADDRESSES.optimism.USDC, //USDC - ADDRESSES.optimism.DAI // DAI + ADDRESSES.optimism.DAI, // DAI + '0x217d47011b23bb961eb6d93ca9945b7501a5bb11' //thales ], linea: [ nullAddress, - "0xa219439258ca9da29e9cc4ce5596924745e12b93", //bridge usdt - "0x176211869ca2b568f2a7d4ee941e073a821ee1ff", //usdc bridge - "0x4af15ec2a0bd43db75dd04e62faa3b8ef36b00d5" //dai bridge + ADDRESSES.linea.USDT, //bridge usdt + ADDRESSES.linea.USDC, //usdc bridge + ADDRESSES.linea.DAI //dai bridge ], flare: [ nullAddress, @@ -185,7 +194,8 @@ const defaultTokens = { ], celo: [ nullAddress, - "0x471ece3750da237f93b8e339c536989b8978a438" //celo + ADDRESSES.celo.CELO, //celo + "0x765de816845861e75a25fca122bb6898b8b1282a", //cUSD ], } diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 10e231279e..3770e648dd 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -181,12 +181,14 @@ "regen", "rei", "reichain", + "renec", "ripple", "rollux", "ronin", "rsk", "rvn", "rpg", + "scroll", "secret", "sei", "shibarium", diff --git a/projects/helper/compound.js b/projects/helper/compound.js index d819e42f83..453ca478fa 100644 --- a/projects/helper/compound.js +++ b/projects/helper/compound.js @@ -161,10 +161,6 @@ function getCompoundV2Tvl(comptroller, chain, transformAdress, sdk.util.sumSingleBalance(balances, transformAdress(underlying), getCash.output) } }); - if (["harmony", 'oasis', 'bsc', 'findora', 'dogechain', 'godwoken_v1', 'ethpow', 'cronos', 'kcc'].includes(chain)) { - const fixBalances = await getFixBalances(chain) - fixBalances(balances); - } if (comptroller == "0x92DcecEaF4c0fDA373899FEea00032E8E8Da58Da") { await unwrapPuffTokens(balances, lpPositions, block) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 399d06917c..559ee2d733 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -120,6 +120,7 @@ "WMATIC_2": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", "MATICX": "0xfa68FB4628DFF1028CFEc22b4162FCcd0d45efb6", "USDC": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + "USDC_CIRCLE": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", "QUICK": "0xb5c064f955d8e7f38fe0460c556a72987494ee17", "WBTC": "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", "USDT": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", @@ -253,6 +254,7 @@ "DAI": "0x94ba7a27c7a95863d1bdc7645ac2951e0cca06ba", "USDT": "0xfadbbf8ce7d5b7041be672561bba99f79c532e10", "KNC": "0x43b17749b246fd2a96de25d9e4184e27e09765b0", + "BUSD": "0x6a5f6a8121592becd6747a38d67451b310f7f156", "null": "0x0000000000000000000000000000000000000000" }, "evmos": { @@ -1421,6 +1423,10 @@ "shimmer_evm": { "WSMR": "0xBEb654A116aeEf764988DF0C6B4bf67CC869D01b", "USDT": "0xc0E49f8C615d3d4c245970F6Dc528E4A47d69a44" + }, + "renec": { + "RENEC": "So11111111111111111111111111111111111111112", + "REUSD": "4Q89182juiadeFgGw3fupnrwnnDmBhf7e7fHWxnUP3S3" } , "beam": { diff --git a/projects/helper/env.js b/projects/helper/env.js index 6ab31b7be3..9586ea3c0d 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -12,6 +12,9 @@ const DEFAULTS = { ETHEREUMCLASSIC_RPC: 'https://etc.etcdesktop.com,https://etc.rivet.link', CRAB_RPC: 'https://darwiniacrab-rpc.dwellir.com', ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', + RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", + EVMOS_RPC: "https://evmos-evm.publicnode.com", + NOVA_RPC: "https://connect.novanetwork.io", } const ENV_KEYS = [ diff --git a/projects/helper/solana.js b/projects/helper/solana.js index 1dc099951a..3e83c4d5dc 100644 --- a/projects/helper/solana.js +++ b/projects/helper/solana.js @@ -26,9 +26,14 @@ const blacklistedTokens_default = [ let connection, provider const endpoint = () => getEnv('SOLANA_RPC') +const renecEndpoint = () => getEnv('RENEC_RPC') +const endpointMap = { + solana: endpoint, + renec: renecEndpoint, +} -function getConnection() { - if (!connection) connection = new Connection(endpoint()) +function getConnection(chain = 'solana') { + if (!connection) connection = new Connection(endpointMap[chain]()) return connection } @@ -157,7 +162,7 @@ async function getTokenBalances(tokensAndAccounts) { return balances } -async function getTokenAccountBalances(tokenAccounts, { individual = false, chunkSize = 99, allowError = false, } = {}) { +async function getTokenAccountBalances(tokenAccounts, { individual = false, chunkSize = 99, allowError = false, chain = 'solana' } = {}) { log('total token accounts: ', tokenAccounts.length) const formBody = account => ({ method: "getAccountInfo", jsonrpc: "2.0", params: [account, { encoding: "jsonParsed", commitment: "confirmed" }], id: account }) const balancesIndividual = [] @@ -165,7 +170,7 @@ async function getTokenAccountBalances(tokenAccounts, { individual = false, chun const chunks = sliceIntoChunks(tokenAccounts, chunkSize) for (const chunk of chunks) { const body = chunk.map(formBody) - const data = await axios.post(endpoint(), body); + const data = await axios.post(endpointMap[chain](), body); data.data.forEach(({ result: { value } }, i) => { if (!value || !value.data.parsed) { if (tokenAccounts[i].toString() === '11111111111111111111111111111111') { @@ -296,16 +301,16 @@ async function sumOrcaLPs(tokensAndAccounts) { return totalUsdValue; } -function exportDexTVL(DEX_PROGRAM_ID, getTokenAccounts) { +function exportDexTVL(DEX_PROGRAM_ID, getTokenAccounts, chain = 'solana') { return async () => { if (!getTokenAccounts) getTokenAccounts = _getTokenAccounts - const tokenAccounts = await getTokenAccounts() + const tokenAccounts = await getTokenAccounts(chain) const chunks = sliceIntoChunks(tokenAccounts, 99) const results = [] for (const chunk of chunks) - results.push(...await getTokenAccountBalances(chunk, { individual: true })) + results.push(...await getTokenAccountBalances(chunk, { individual: true, chain, })) const data = [] for (let i = 0; i < results.length; i = i + 2) { @@ -314,8 +319,8 @@ function exportDexTVL(DEX_PROGRAM_ID, getTokenAccounts) { data.push({ token0: tokenA.mint, token0Bal: tokenA.amount, token1: tokenB.mint, token1Bal: tokenB.amount, }) } - const coreTokens = await getGeckoSolTokens() - return transformDexBalances({ chain: 'solana', data, blacklistedTokens: blacklistedTokens_default, coreTokens, }) + const coreTokens = chain === 'solana' ? await getGeckoSolTokens() : null + return transformDexBalances({ chain, data, blacklistedTokens: blacklistedTokens_default, coreTokens, }) } async function _getTokenAccounts() { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 3e07a889fe..9f8e0e2d70 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -16,7 +16,7 @@ coreAssets = JSON.parse(JSON.stringify(coreAssets)) // carbon: https://api-insights.carbon.network/info/denom_gecko_map // orbit brige: https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList -const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', 'chihuahua', 'sei', 'archway', 'migaloo', 'secret',] +const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', 'chihuahua', 'sei', 'archway', 'migaloo', 'secret', 'aura'] const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui', 'ergo', 'mvc',] const distressedAssts = new Set(Object.values({ @@ -58,10 +58,10 @@ const fixBalancesTokens = { }, shimmer_evm: { '0x1074010000000000000000000000000000000000': { coingeckoId: 'shimmer', decimals: 6 }, - '0xBEb654A116aeEf764988DF0C6B4bf67CC869D01b': { coingeckoId: 'shimmer', decimals: 18 }, + [ADDRESSES.shimmer_evm.WSMR]: { coingeckoId: 'shimmer', decimals: 18 }, '0x6c890075406c5df08b427609e3a2ead1851ad68d': { coingeckoId: 'shimmer', decimals: 18 }, '0x3C844FB5AD27A078d945dDDA8076A4084A76E513': { coingeckoId: 'soonaverse', decimals: 6 }, - '0xc0e49f8c615d3d4c245970f6dc528e4a47d69a44': { coingeckoId: 'tether', decimals: 18 }, + [ADDRESSES.shimmer_evm.USDT]: { coingeckoId: 'tether', decimals: 18 }, '0xa158a39d00c79019a01a6e86c56e96c461334eb0': { coingeckoId: 'ethereum', decimals: 18 }, '0x1cdf3f46dbf8cf099d218cf96a769cea82f75316': { coingeckoId: 'wrapped-bitcoin', decimals: 8 }, }, @@ -70,8 +70,12 @@ const fixBalancesTokens = { '0xb73603c5d87fa094b7314c74ace2e64d165016fb': { coingeckoId: 'usd-coin', decimals: 6 }, '0xf417f5a458ec102b90352f697d6e2ac3a3d2851f': { coingeckoId: 'tether', decimals: 6 }, }, + scroll: { + '0x5300000000000000000000000000000000000004': { coingeckoId: 'ethereum', decimals: 18 }, + [ADDRESSES.null]: { coingeckoId: 'ethereum', decimals: 18 }, + }, nos: { - '0x111808AbE352c8003e0eFfcc04998EaB26Cebe3c': { coingeckoId: 'bitcoin', decimals: 18 }, + [ADDRESSES.nos.BTC]: { coingeckoId: 'bitcoin', decimals: 18 }, }, ton: { 'EQBq4d4GPyBoh-Pjnf3wxUyQSS28WY2Yt-7cPAG8FHpWpNRX': { coingeckoId: 'matic-network', decimals: 18 }, @@ -81,9 +85,13 @@ const fixBalancesTokens = { 'EQCf7Nb341dxOE3N0jimngRxGEV8T3zo-eU2EZVs_nchNhhZ': { coingeckoId: 'wemix-token', decimals: 18 } }, beam: { - '0xd51bfa777609213a653a2cd067c9a0132a2d316a': { coingeckoId: 'merit-circle', decimals: 18 }, - '0x76bf5e7d2bcb06b1444c0a2742780051d8d0e304': { coingeckoId: 'usd-coin', decimals: 6 }, - '0x999f90f25a2922ae1b21A06066F7EDEbedad42a9': { coingeckoId: 'tether', decimals: 18 }, + [ADDRESSES.beam.WMC]: { coingeckoId: 'merit-circle', decimals: 18 }, + [ADDRESSES.beam.USDC]: { coingeckoId: 'usd-coin', decimals: 6 }, + [ADDRESSES.beam.USDT]: { coingeckoId: 'tether', decimals: 18 }, + }, + renec: { + [ADDRESSES.renec.RENEC] : { coingeckoId: "renec", decimals: 9 }, + [ADDRESSES.renec.REUSD] : {coingeckoId: "tether", decimals: 9 }, // reUSD pegged USDT || bridge: https://remitano.com/swap/vn/usdt_reusd } } diff --git a/projects/hub3-ee/index.js b/projects/hub3-ee/index.js index 15f4203957..af821cde56 100644 --- a/projects/hub3-ee/index.js +++ b/projects/hub3-ee/index.js @@ -77,3 +77,4 @@ const sharesIDL = { ], errors: [] } +//test it diff --git a/projects/injective-orderbook/api.js b/projects/injective-orderbook/api.js index 68a083f2d3..c520af3090 100644 --- a/projects/injective-orderbook/api.js +++ b/projects/injective-orderbook/api.js @@ -1,4 +1,4 @@ -const { getMarkets, getOrders, TYPES } = require('../helper/chain/injectve') +const { getMarkets, getOrders, TYPES } = require('../helper/chain/injective') const { transformBalances } = require('../helper/portedTokens') const sdk = require('@defillama/sdk') const { default: BigNumber } = require('bignumber.js') diff --git a/projects/ip/index.js b/projects/ip/index.js index 2921426354..953d6e5da0 100644 --- a/projects/ip/index.js +++ b/projects/ip/index.js @@ -41,7 +41,7 @@ const cappedTokens = { symbol: 'rETH', }, "0x99bd1f28a5A7feCbE39a53463a916794Be798FC3": { - address: '0xBe9895146f7AF43049ca1c1AE358B0541Ea49704', + address: ADDRESSES.ethereum.cbETH, symbol: 'cbETH', }, } diff --git a/projects/ipor/abi.js b/projects/ipor/abi.js index 4a46808e42..ec952bd711 100644 --- a/projects/ipor/abi.js +++ b/projects/ipor/abi.js @@ -1,6 +1,7 @@ module.exports = { abi: { getAccruedBalance: "function getAccruedBalance() view returns (uint256 totalCollateralPayFixed, uint256 totalCollateralReceiveFixed, uint256 liquidityPool, uint256 vault)", + getAmmBalance: "function getAmmBalance(address asset) view returns (uint256 totalCollateralPayFixed, uint256 totalCollateralReceiveFixed, uint256 liquidityPool, uint256 vault)", getAsset: "address:getAsset", } }; diff --git a/projects/ipor/index.js b/projects/ipor/index.js index 3114eaaa37..9b03ce067b 100644 --- a/projects/ipor/index.js +++ b/projects/ipor/index.js @@ -1,40 +1,58 @@ -const sdk = require('@defillama/sdk'); -const { default: BigNumber } = require('bignumber.js'); +const ADDRESSES = require('../helper/coreAssets.json') const { abi } = require("./abi"); -const miltonAddresses = [ - '0x28BC58e600eF718B9E97d294098abecb8c96b687', // USDT - '0x137000352B4ed784e8fa8815d225c713AB2e7Dc9', // USDC - '0xEd7d74AA7eB1f12F83dA36DFaC1de2257b4e7523', // DAI -] - -async function tvl(_, block) { - const balances = {}; - const calls = miltonAddresses.map(i => ({ target: i })) - const { output } = await sdk.api.abi.multiCall({ - abi: abi.getAccruedBalance, - calls, block, - }) - const { output: underlyings } = await sdk.api.abi.multiCall({ - abi: abi.getAsset, - calls, block, - }) - const tokens = underlyings.map(i => i.output) - const { output: decimals } = await sdk.api.abi.multiCall({ - abi: 'erc20:decimals', - calls: tokens.map(i => ({ target: i })), block, + +const V2DeploymentBlockNumber = 18333744 + +async function tvl(_, block, _1, { api }) { + if (block >= V2DeploymentBlockNumber) { + return await calculateTvlForV2(api); + } else { + return await calculateTvlForV1(api); + } +} + +async function calculateTvlForV2(api) { + const assets = [ + ADDRESSES.ethereum.USDT, // USDT + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.DAI, // DAI + ] + + const iporRouter = '0x16d104009964e694761C0bf09d7Be49B7E3C26fd' + const ammTreasuryEth = '0x63395EDAF74a80aa1155dB7Cd9BBA976a88DeE4E' + + const output = await api.multiCall({ abi: abi.getAmmBalance, calls: assets, target: iporRouter, }) + const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: assets }) + + output.forEach(({ totalCollateralPayFixed, totalCollateralReceiveFixed, liquidityPool, vault }, i) => { + const balance = +totalCollateralPayFixed + +totalCollateralReceiveFixed + +liquidityPool + const decimal = 18 - decimals[i] + api.add(assets[i], balance / (10 ** decimal)) }) - output.forEach(({ output: { totalCollateralPayFixed, totalCollateralReceiveFixed, liquidityPool }}, i) => { + return api.sumTokens({ owner: ammTreasuryEth, tokens: [ADDRESSES.ethereum.STETH] }) +} + +async function calculateTvlForV1(api) { + const miltonAddresses = [ + '0x28BC58e600eF718B9E97d294098abecb8c96b687', // USDT + '0x137000352B4ed784e8fa8815d225c713AB2e7Dc9', // USDC + '0xEd7d74AA7eB1f12F83dA36DFaC1de2257b4e7523', // DAI + ] + const output = await api.multiCall({ abi: abi.getAccruedBalance, calls: miltonAddresses, }) + const tokens = await api.multiCall({ abi: abi.getAsset, calls: miltonAddresses, }) + const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens }) + + output.forEach(({ totalCollateralPayFixed, totalCollateralReceiveFixed, liquidityPool }, i) => { const balance = +totalCollateralPayFixed + +totalCollateralReceiveFixed + +liquidityPool - const decimal = 18 - decimals[i].output - sdk.util.sumSingleBalance(balances, tokens[i], BigNumber(balance / (10 ** decimal)).toFixed(0)) + const decimal = 18 - decimals[i] + api.add(tokens[i], balance / (10 ** decimal)) }); - return balances; + return api.getBalances(); } module.exports = { - timetravel: true, methodology: `Counts the tokens locked in the AMM contracts to be used as collateral to Interest Rate Swaps derivatives, counts tokens provided as a liquidity to Liquidity Pool, counts interest gathered via Asset Manager in external protocols.`, ethereum: { tvl diff --git a/projects/leech-protocol/index.js b/projects/leech-protocol/index.js index ecfa301458..6a918e9dad 100644 --- a/projects/leech-protocol/index.js +++ b/projects/leech-protocol/index.js @@ -95,5 +95,5 @@ async function tvl(_, _b, _cb, { api, }) { module.exports = { bsc: { tvl }, avax: { tvl }, - optimism: { tvl }, + // optimism: { tvl }, }; \ No newline at end of file diff --git a/projects/leetswap/index.js b/projects/leetswap/index.js index 32536a5740..fd62f57186 100644 --- a/projects/leetswap/index.js +++ b/projects/leetswap/index.js @@ -1,12 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') +const defaultTvl = { tvl: getUniTVL({ factory: ADDRESSES.shibarium.BONE_4, useDefaultCoreAssets: true, }), } + module.exports = { misrepresentedTokens: true, - polygon_zkevm: { tvl: getUniTVL({ factory: '0xcE87E0960f4e2702f4bFFE277655E993Ae720e84', useDefaultCoreAssets: true, }), }, - canto: { tvl: getUniTVL({ factory: '0x116e8a41E8B0A5A87058AF110C0Ddd55a0ed82B7', useDefaultCoreAssets: true, }), }, - linea: { tvl: getUniTVL({ factory: '0x4DDf0fa98B5f9Bd7Cb0645c25bA89A574fe9Be8c', useDefaultCoreAssets: true, }), }, - shibarium: { tvl: getUniTVL({ factory: '0xd3Ea3BC1F5A3F881bD6cE9761cbA5A0833a5d737', useDefaultCoreAssets: true, }), }, - op_bnb: { tvl: getUniTVL({ factory: '0xa2899c776bAAF9925d432F83C950D5054A6CF59C', useDefaultCoreAssets: true, }), }, + polygon_zkevm: { tvl: getUniTVL({ factory: '0xcE87E0960f4e2702f4bFFE277655E993Ae720e84', useDefaultCoreAssets: true, }), }, + canto: { tvl: getUniTVL({ factory: '0x116e8a41E8B0A5A87058AF110C0Ddd55a0ed82B7', useDefaultCoreAssets: true, }), }, + linea: { tvl: getUniTVL({ factory: '0x4DDf0fa98B5f9Bd7Cb0645c25bA89A574fe9Be8c', useDefaultCoreAssets: true, }), }, + shibarium: { tvl: getUniTVL({ factory: '0xd3Ea3BC1F5A3F881bD6cE9761cbA5A0833a5d737', useDefaultCoreAssets: true, }), }, + op_bnb: defaultTvl, base: { tvl: getUniTVL({ factory: '0x169C06b4cfB09bFD73A81e6f2Bb1eB514D75bB19', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'sLS2', }), }, - manta: { tvl: getUniTVL({ factory: '0xa2899c776bAAF9925d432F83C950D5054A6CF59C', useDefaultCoreAssets: true, }), }, + manta: defaultTvl, + scroll: defaultTvl, } diff --git a/projects/levvy-fi-tokens/index.js b/projects/levvy-fi-tokens/index.js new file mode 100644 index 0000000000..7dd10eb21e --- /dev/null +++ b/projects/levvy-fi-tokens/index.js @@ -0,0 +1,36 @@ +const { post } = require("../helper/http"); + +module.exports = { + methodology: + "Counts ADA locked in token lending offer pools, and tokens locked as collateral in loans", + misrepresentedTokens: true, + cardano: { + tvl: async () => { + const data = await post( + "https://citizens.theapesociety.io/api/getLevvyData", + {} + ); + return { + cardano: data.tokens.tvl, + }; + }, + staking: async () => { + const data = await post( + "https://citizens.theapesociety.io/api/getLevvyData", + {} + ); + return { + cardano: data.tokens.staked, + }; + }, + borrowed: async () => { + const data = await post( + "https://citizens.theapesociety.io/api/getLevvyData", + {} + ); + return { + cardano: data.tokens.borrowed, + }; + }, + }, +}; diff --git a/projects/lybra-v2/index.js b/projects/lybra-v2/index.js index 711e298191..c8acd6af6f 100644 --- a/projects/lybra-v2/index.js +++ b/projects/lybra-v2/index.js @@ -10,6 +10,6 @@ const rETHvault = "0x090B2787D6798000710a8e821EC6111d254bb958" module.exports = { start: 17990141, ethereum: { - tvl: sumTokensExport({ tokensAndOwners2: [[ADDRESSES.ethereum.STETH, "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", "0xa2e3356610840701bdf5611a53974510ae27e2e1", "0xae78736cd615f374d3085123a210448e74fc6393"], [stETHvault, wstETHvault, wbETHvault, rETHvault]] }), + tvl: sumTokensExport({ tokensAndOwners2: [[ADDRESSES.ethereum.STETH, ADDRESSES.ethereum.WSTETH, "0xa2e3356610840701bdf5611a53974510ae27e2e1", ADDRESSES.ethereum.RETH], [stETHvault, wstETHvault, wbETHvault, rETHvault]] }), } }; diff --git a/projects/mantaswap/index.js b/projects/mantaswap/index.js index 9cd75176a5..002d768bdb 100644 --- a/projects/mantaswap/index.js +++ b/projects/mantaswap/index.js @@ -1,6 +1,9 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { + hallmarks: [ + [1696809600, "Rug Pull"] + ], misrepresentedTokens: true, manta: { tvl: getUniTVL({ factory: '0x60Ad4aB0659C3b83320f3D43d3797553b55D52c6', useDefaultCoreAssets: true, }), }, } diff --git a/projects/mars/index.js b/projects/mars/index.js index a9b9d4b2bf..3d882bf89a 100644 --- a/projects/mars/index.js +++ b/projects/mars/index.js @@ -1,13 +1,14 @@ const sdk = require('@defillama/sdk'); const axios = require('axios'); -const { endPoints, queryContract, sumTokens } = require('../helper/chain/cosmos'); +const { endPoints, queryContract, sumTokens} = require('../helper/chain/cosmos'); const { getChainTransform } = require('../helper/portedTokens'); const addresses = { osmosis: { redBank: 'osmo1c3ljch9dfw5kf52nfwpxd2zmj2ese7agnx0p9tenkrryasrle5sqf3ftpg', creditManager: 'osmo1f2m24wktq0sw3c0lexlg7fv4kngwyttvzws3a3r3al9ld2s2pvds87jqvf', + params: 'osmo1nlmdxt9ctql2jr47qd4fpgzg84cjswxyw6q99u4y4u4q6c2f5ksq7ysent' }, neutron: { redBank: 'neutron1n97wnm7q6d2hrcna3rqlnyqw2we6k0l8uqvmyqq6gsml92epdu7quugyph', @@ -20,6 +21,7 @@ const addresses = { async function osmosisTVL() { let balances = {}; await addRedBankTvl(balances, 'osmosis'); + await addCreditManagerTvl(balances, 'osmosis'); await osmosisSumVaultsTVL(balances); return balances; } @@ -32,20 +34,20 @@ async function osmosisSumVaultsTVL(balances) { const osmosisDenomTransform = await getChainTransform('osmosis'); while (vaultPagesRemaining) { - const fieldsVaultsInfo = await queryContract({ - contract: addresses.osmosis.creditManager, + const roverVaultConfigs = await queryContract({ + contract: addresses.osmosis.params, chain: 'osmosis', - data: { 'vaults_info': { limit: pageLimit, 'start_after': startAfter } } + data: { 'all_vault_configs': { limit: pageLimit, 'start_after': startAfter } } }); - if(fieldsVaultsInfo.length === pageLimit) { - startAfter = fieldsVaultsInfo[fieldsVaultsInfo.length - 1].vault; + if(roverVaultConfigs.length === pageLimit) { + startAfter = roverVaultConfigs[roverVaultConfigs.length - 1].vault; vaultPagesRemaining = true } else { vaultPagesRemaining = false; } - await osmosisAddCoinsForVaultsInfoPage(coins, fieldsVaultsInfo); + await osmosisAddCoinsForVaultsInfoPage(coins, roverVaultConfigs); } coins.forEach(coin => { @@ -53,14 +55,14 @@ async function osmosisSumVaultsTVL(balances) { }) } -async function osmosisAddCoinsForVaultsInfoPage(coins, fieldsVaultsInfoPage) { - let vaultsMetadata = fieldsVaultsInfoPage.map(rvi => ({ fieldsVaultInfo: rvi })); +async function osmosisAddCoinsForVaultsInfoPage(coins, roverVaultConfigsPage) { + let vaultsMetadata = roverVaultConfigsPage.map(rvi => ({ fieldsVaultInfo: rvi })); // query the vault info for the vault contract itself to get the vault's // base token await Promise.all(vaultsMetadata.map(async vm => { let vaultInfo = await queryContract({ - contract: vm.fieldsVaultInfo.vault.address, + contract: vm.fieldsVaultInfo.addr, chain: 'osmosis', data: { 'info': {} } }); @@ -69,18 +71,18 @@ async function osmosisAddCoinsForVaultsInfoPage(coins, fieldsVaultsInfoPage) { // get total vault shares owned by fields for each vault await Promise.all(vaultsMetadata.map(async vm => { - let vaultShares = await queryContract({ - contract: addresses.osmosis.creditManager, - chain: 'osmosis', - data: { 'total_vault_coin_balance': { vault: vm.fieldsVaultInfo.vault } } - }); + let vaultShares = await cosmosDenomBalanceStr( + 'osmosis', + vm.vaultInfo.vault_token, + addresses.osmosis.creditManager + ); vm.vaultShares = vaultShares; })); // convert vault shares to vault base asset await Promise.all(vaultsMetadata.map( async vm => { let query = { - contract: vm.fieldsVaultInfo.vault.address, + contract: vm.fieldsVaultInfo.addr, chain: 'osmosis', data: { 'convert_to_assets': { amount: vm.vaultShares } } }; @@ -123,6 +125,10 @@ async function addRedBankTvl(balances, chain) { await sumTokens({balances, owners: [addresses[chain].redBank], chain}); } +async function addCreditManagerTvl(balances, chain) { + await sumTokens({balances, owners: [addresses[chain].creditManager], chain}); +} + function getEndpoint(chain) { if (!endPoints[chain]) throw new Error('Chain not found: ' + chain); return endPoints[chain]; @@ -134,9 +140,15 @@ async function cosmosLCDQuery(url, chain) { return request.data; } +async function cosmosDenomBalanceStr(chain, denom, owner) { + let url = `cosmos/bank/v1beta1/balances/${owner}/by_denom?denom=${denom}`; + let balance = await cosmosLCDQuery(url, chain); + return balance.balance.amount; +} + module.exports = { timetravel: false, - methodology: 'For each chain, sum up token balances in Red Bank smart contracts and vault underlying assets in Fields smart contracts', + methodology: 'For each chain, sum token balances in Red Bank/Credit Manager smart contracts to approximate net deposits, plus vault underlying assets held in Rover', osmosis: { tvl: osmosisTVL, }, @@ -149,5 +161,7 @@ module.exports = { hallmarks:[ [1651881600, 'UST depeg'], [1675774800, 'Relaunch on Osmosis'], + [1690945200, 'Red Bank launch on Neutron'], + [1696906800, 'Mars V2 launch on Osmosis'], ] }; diff --git a/projects/meanfinance/addresses.js b/projects/meanfinance/addresses.js index a0992c91f8..0e16b822a8 100644 --- a/projects/meanfinance/addresses.js +++ b/projects/meanfinance/addresses.js @@ -19,7 +19,7 @@ const TOKENS_IN_LEGACY_VERSIONS = { ADDRESSES.tombchain.FTM, // WETH ADDRESSES.optimism.OP, // OP ADDRESSES.optimism.BitANT, // BitANT - '0x50c5725949a6f0c72e6c4a641f24049a917db0cb', // LYRA + ADDRESSES.base.DAI, // LYRA '0x65559aa14915a70190438ef90104769e5e890a00', // ENS '0x68f180fcce6836688e9084f035309e29bf0a2095', // WBTC '0x6fd9d7ad17242c41f7131d257212c54a0e816691', // UNI diff --git a/projects/monocerus/index.js b/projects/monocerus/index.js new file mode 100644 index 0000000000..e556231532 --- /dev/null +++ b/projects/monocerus/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + avax: { factory: "0x8d312c2B300239B84c304B5af5A3D00cBF0803F6", fromBlock: 31524862, }, +}); \ No newline at end of file diff --git a/projects/nemoswap/index.js b/projects/nemoswap/index.js new file mode 100644 index 0000000000..e33952c0b0 --- /dev/null +++ b/projects/nemoswap/index.js @@ -0,0 +1,34 @@ +const { getConnection, exportDexTVL } = require("../helper/solana"); +const { PublicKey } = require('@solana/web3.js') + +// State: https://github.com/renec-chain/nemo-swap/blob/master/programs/whirlpool/src/state/whirlpool.rs +const NEMOSWAP_PROGRAM_ID = "7rh7ZtPzHqdY82RWjHf1Q8NaQiWnyNqkC48vSixcBvad"; +const WHIRLPOOL_DATA_SIZE = 654; +const TOKEN_ACCOUNT_A_OFFSET = 8 + 1 + 32 + 1 + 2 * 4 + 16 * 2 + 4 + 8 * 2 + 32; +const TOKEN_ACCOUNT_B_OFFSET = TOKEN_ACCOUNT_A_OFFSET + 32 + 16 + 32; +const PUBKEY_LENGTH=32; + +async function getTokenAccounts(chain) { + const programId = new PublicKey(NEMOSWAP_PROGRAM_ID); + const connection = getConnection(chain); + const accounts = await connection.getProgramAccounts(programId, { + filters: [{ + dataSize: WHIRLPOOL_DATA_SIZE + }] + }); + + const tokenAccounts = [] + accounts.forEach(({ account: { data }}) => { + const tokenAccountA = new PublicKey(data.subarray(TOKEN_ACCOUNT_A_OFFSET, TOKEN_ACCOUNT_A_OFFSET + PUBKEY_LENGTH)).toString() + const tokenAccountB= new PublicKey(data.subarray(TOKEN_ACCOUNT_B_OFFSET, TOKEN_ACCOUNT_B_OFFSET + PUBKEY_LENGTH)).toString() + tokenAccounts.push(tokenAccountA, tokenAccountB) + }) + return tokenAccounts +} + + +module.exports = { + renec: { + tvl: exportDexTVL(NEMOSWAP_PROGRAM_ID, getTokenAccounts, 'renec') + }, +}; \ No newline at end of file diff --git a/projects/omnibtc/index.js b/projects/omnibtc/index.js index 78444de6f4..ace92a7acc 100644 --- a/projects/omnibtc/index.js +++ b/projects/omnibtc/index.js @@ -10,8 +10,11 @@ const POOLS = { base: "0x68953027738216A63B39D55B18C02FeD5c329Dfa", optimism: "0x233DDEce6a96c49ecE6Ad9ae820690fE62a28975", polygon: "0xC3Eb696184b8927D677D8AB390A26563De4798c3", + ethereum: "0xAA8b23B45cb51ce8f49D7757fF27BA397D05B6fC", + avax: "0xc44C290e66e79aE208D998635F6Fc24837F3C554", + bsc: "0x0519147E1A604F764C0Dca833671F5283C618f23", }; -const DEFAULT_TOKEN = "0x0000000000000000000000000000000000000000"; +const DEFAULT_TOKEN = ADDRESSES.null; const DECIMAL_SHIFTS = { [ADDRESSES.sui.USDC]: -2, @@ -76,6 +79,7 @@ module.exports = { ADDRESSES.arbitrum.ARB, ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.WBTC, ], }), }, @@ -93,13 +97,42 @@ module.exports = { ADDRESSES.optimism.OP, ADDRESSES.optimism.USDC, ADDRESSES.optimism.USDT, + //ADDRESSES.optimism.WBTC, ], }), }, polygon: { tvl: sumTokensExport({ owner: POOLS.polygon, - tokens: [DEFAULT_TOKEN, ADDRESSES.polygon.USDC, ADDRESSES.polygon.USDT], + tokens: [ + DEFAULT_TOKEN, + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.WBTC, + ], + }), + }, + bsc: { + tvl: sumTokensExport({ + owner: POOLS.bsc, + tokens: [DEFAULT_TOKEN], + }), + }, + avax: { + tvl: sumTokensExport({ + owner: POOLS.avax, + tokens: [DEFAULT_TOKEN, ADDRESSES.avax.USDC], + }), + }, + ethereum: { + tvl: sumTokensExport({ + owner: POOLS.ethereum, + tokens: [ + DEFAULT_TOKEN, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.WBTC, + ], }), }, sui: { diff --git a/projects/overnight-daiPlus/index.js b/projects/overnight-daiPlus/index.js index 8e6cabc365..91086a1d1f 100644 --- a/projects/overnight-daiPlus/index.js +++ b/projects/overnight-daiPlus/index.js @@ -10,7 +10,7 @@ const m2m = { const assets = { optimism: ADDRESSES.optimism.DAI, //DAI arbitrum: ADDRESSES.optimism.DAI, //DAI - base: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb" //DAI + base: ADDRESSES.base.DAI //DAI } const abi = "uint256:totalNetAssets" diff --git a/projects/pepe-bridge/index.js b/projects/pepe-bridge/index.js index 50c84d34b8..e65f17e676 100644 --- a/projects/pepe-bridge/index.js +++ b/projects/pepe-bridge/index.js @@ -8,7 +8,7 @@ const wavesCoinBridgeContract = '3PFPuctNkdbwGKKUNymWw816jGPexHzGXW5'; async function wavesTVL() { const balances = {}; const contractTVLInWAVES = await data(wavesCoinBridgeContract, "BALANCE"); - sdk.util.sumSingleBalance(balances, 'waves', contractTVLInWAVES.value/1e8) + sdk.util.sumSingleBalance(balances, 'waves', contractTVLInWAVES.value / 1e8) return balances; } @@ -21,6 +21,8 @@ const config = { ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.WBTC, ADDRESSES.ethereum.CRV, + ADDRESSES.ethereum.UNI, + ADDRESSES.ethereum.MKR, ], '0x0de7b091A21BD439bdB2DfbB63146D9cEa21Ea83' ] diff --git a/projects/preon/index.js b/projects/preon/index.js index 07e9d6c36d..3e15aa73ae 100644 --- a/projects/preon/index.js +++ b/projects/preon/index.js @@ -7,7 +7,7 @@ const config = { [ [ ADDRESSES.null, - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + ADDRESSES.arbitrum.WETH, "0xe50fa9b3c56ffb159cb0fca61f5c9d750e8128c8", ], "0xA2Ce28868A852f4B01903B5de07d4835feFe9086", @@ -26,7 +26,7 @@ const config = { [ [ ADDRESSES.null, - "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + ADDRESSES.polygon.WMATIC_2, "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97", ], "0x82CD73E9cc96cC12569D412cC2480E4d5962AfF5", @@ -42,7 +42,7 @@ const config = { [ [ ADDRESSES.null, - "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + ADDRESSES.polygon.DAI, "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", ], "0xdc4552609a3f673f0b72958f678d4a48d0e94ebd", diff --git a/projects/punkswap/index.js b/projects/punkswap/index.js index a0026345de..a8572a7324 100644 --- a/projects/punkswap/index.js +++ b/projects/punkswap/index.js @@ -7,4 +7,7 @@ module.exports = { shibarium: { tvl: getUniTVL({ factory: "0x5640113EA7F369E6DAFbe54cBb1406E5BF153E90", useDefaultCoreAssets: true,}) }, + scroll: { + tvl: getUniTVL({ factory: "0x5640113EA7F369E6DAFbe54cBb1406E5BF153E90", useDefaultCoreAssets: true,}) + } }; \ No newline at end of file diff --git a/projects/pyswap/index.js b/projects/pyswap/index.js index 86c46d0f57..3f98df1283 100644 --- a/projects/pyswap/index.js +++ b/projects/pyswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const {getUniTVL} = require("../helper/unknownTokens"); @@ -7,7 +8,7 @@ const pys_staking_contract = "0x18E2fA8c010b56779285336D0920F1027f0bDBbb"; const assets = [ "0x9b5902C14B56eF2aa2cC1A2A0731a8F270Ee82f0", //WBNB - "0x0000000000000000000000000000000000000000", // This is address of native token + ADDRESSES.null, // This is address of native token "0x602aEe302B2703cD2BAC28e13192593228e0078C", // PYSWAP TOKEN ]; diff --git a/projects/redemptionfi/index.js b/projects/redemptionfi/index.js new file mode 100644 index 0000000000..6fa63f07ab --- /dev/null +++ b/projects/redemptionfi/index.js @@ -0,0 +1,6 @@ +const { masterchefExports } = require("../helper/unknownTokens"); + +const masterchef = "0x5c6c79Ff5a58bBC3D7903f439b3A75415685eca3" +const nativeToken = "0x41E99e0F73a88947C52070FF67C19B7aBc171A54" + +module.exports = masterchefExports({ chain: 'base', masterchef, nativeToken, useDefaultCoreAssets: true,}) \ No newline at end of file diff --git a/projects/satori/index.js b/projects/satori/index.js index ac5666b224..2b912740f0 100644 --- a/projects/satori/index.js +++ b/projects/satori/index.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const USDT_TOKEN_CONTRACT = "0x1E4a5963aBFD975d8c9021ce480b42188849D41d"; @@ -21,4 +21,13 @@ module.exports = { tokens: [ADDRESSES.era.USDC], }), }, + linea: { + tvl: sumTokensExport({ + owners: [ + "0xfb371E70eEB32f4054F40514924e77213ca18425", + "0xF96116e124eB3F62Ddc6a9cfbdc58d7F8A37c50A", + ], + tokens: [ADDRESSES.linea.USDC], + }), + } }; diff --git a/projects/scrollswap/index.js b/projects/scrollswap/index.js new file mode 100644 index 0000000000..524ceeeb69 --- /dev/null +++ b/projects/scrollswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('scroll', '0x0082123Cf29a85f48Cd977D3000aec145A3B452F', { fetchBalances: true, }) \ No newline at end of file diff --git a/projects/scrollswapfinance/index.js b/projects/scrollswapfinance/index.js new file mode 100644 index 0000000000..ad28d8a552 --- /dev/null +++ b/projects/scrollswapfinance/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('scroll', '0xaA4b3b63B0A828dc28b2De7Be6115198B080De09', { fetchBalances: true, }) \ No newline at end of file diff --git a/projects/shibfi/index.js b/projects/shibfi/index.js index 74d2d4966e..b7e699085c 100644 --- a/projects/shibfi/index.js +++ b/projects/shibfi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const {getUniTVL} = require("../helper/unknownTokens"); @@ -7,7 +8,7 @@ const shibfi_staking_contract = "0x1ae96F6E24Ca24Db5cA97797E528d63bfc9dD0Ef"; const assets = [ "0x7915fE3be85D591cC0395D30AB76Ee7aA12a085D", //WBONE - "0x0000000000000000000000000000000000000000", // This is address of native token + ADDRESSES.null, // This is address of native token "0xa98900F53fa3e5bFe6F2283F4C4E57ca3DF5387c", // SHIBFI TOKEN ]; diff --git a/projects/sithswap/api.js b/projects/sithswap/api.js index ed3da6c586..074def47b9 100644 --- a/projects/sithswap/api.js +++ b/projects/sithswap/api.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') // https://www.starknetjs.com/docs/API/contract const { call, multiCall, } = require('../helper/chain/starknet') diff --git a/projects/skydrome/index.js b/projects/skydrome/index.js new file mode 100644 index 0000000000..3fae613319 --- /dev/null +++ b/projects/skydrome/index.js @@ -0,0 +1,13 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + scroll: { + tvl: getUniTVL({ + factory: '0x2516212168034b18a0155FfbE59f2f0063fFfBD9', + useDefaultCoreAssets: true, + hasStablePools: true, + fetchBalances: true, + }) + }, +} diff --git a/projects/solid-world/forward-contract-batch-supply.js b/projects/solid-world/forward-contract-batch-supply.js index 20f4fb7a45..88a75913f3 100644 --- a/projects/solid-world/forward-contract-batch-supply.js +++ b/projects/solid-world/forward-contract-batch-supply.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getLogs } = require("../helper/cache/getLogs"); const { config } = require("./config"); const BigNumber = require("bignumber.js"); diff --git a/projects/sommelier/cellar-constants.js b/projects/sommelier/cellar-constants.js index 031845174f..8843998e3a 100644 --- a/projects/sommelier/cellar-constants.js +++ b/projects/sommelier/cellar-constants.js @@ -47,11 +47,13 @@ const cellarsV2 = [ const TURBO_SWETH = "0xd33dad974b938744dac81fe00ac67cb5aa13958e"; const TURBO_GHO = "0x0c190ded9be5f512bd72827bdad4003e9cc7975c"; const ETH_GROWTH = "0x6c51041a91c91c86f3f08a72cb4d3f67f1208897"; +const TURBO_STETH = "0xfd6db5011b171b05e1ea3b92f9eacaeeb055e971"; const cellarsV2p5 = [ { id: TURBO_SWETH, startBlock: 17910374 }, { id: TURBO_GHO, startBlock: 18118614 }, { id: ETH_GROWTH, startBlock: 18144591 }, + { id: TURBO_STETH, startBlock: 18330620 }, ]; module.exports = { diff --git a/projects/standard-smart-vaults/index.js b/projects/standard-smart-vaults/index.js index b12886613c..549acbeb86 100644 --- a/projects/standard-smart-vaults/index.js +++ b/projects/standard-smart-vaults/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ethers } = require('ethers'); const { getLogs } = require('../helper/cache/getLogs') const SMART_VAULT_MANAGER_ADDRESS = '0xba169cceCCF7aC51dA223e04654Cf16ef41A68CC' @@ -6,9 +7,9 @@ const START_TS = 1693206000; const tokens = [ ethers.constants.AddressZero, - '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', - '0x912CE59144191C1204E64559FE8253a0e49E6548', - '0xf97f4df75117a78c1A5a0DBb814Af92458539FB4', + ADDRESSES.arbitrum.WBTC, + ADDRESSES.arbitrum.ARB, + ADDRESSES.arbitrum.LINK, '0xfEb4DfC8C4Cf7Ed305bb08065D08eC6ee6728429' ] diff --git a/projects/starkex/api.js b/projects/starkex/api.js index 85ccc1c17f..1b7d1e5c14 100644 --- a/projects/starkex/api.js +++ b/projects/starkex/api.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { call, multiCall, parseAddress } = require('../helper/chain/starknet') const abi = require('./abi') diff --git a/projects/summer-fi/handlers/dpm-positions.js b/projects/summer-fi/handlers/dpm-positions.js index 48b06e9370..e8acaae0e3 100644 --- a/projects/summer-fi/handlers/dpm-positions.js +++ b/projects/summer-fi/handlers/dpm-positions.js @@ -44,8 +44,8 @@ query { }`; const dpmPositions = async ({ api, }) => { - const aave = await blockQuery(endpoints.aave(), aaveQuery(api.block), { api }); - const ajna = await blockQuery(endpoints.ajna(), ajnaQuery(api.block), { api }); + const aave = await blockQuery(endpoints.aave(), aaveQuery(api.block - 500), { api, }); + const ajna = await blockQuery(endpoints.ajna(), ajnaQuery(api.block - 500), { api, }); const supportedAjnaPools = [ ...new Set(ajna.accounts.map(({ pool: { address } }) => address)), diff --git a/projects/tangible/index.js b/projects/tangible/index.js index 9bc02db082..36d8e6e443 100644 --- a/projects/tangible/index.js +++ b/projects/tangible/index.js @@ -9,7 +9,7 @@ const { getInsuranceFundValueArb } = require("./insurance-fund-arbitrum"); // doc: https://docs.tangible.store/real-usd/real-usd-v3-contracts-and-addresses const TNGBL = '0x49e6A20f1BBdfEeC2a8222E052000BbB14EE6007'.toLowerCase() const USDR = '0x40379a439d4f6795b6fc9aa5687db461677a2dba'.toLowerCase() -const CVX_ETH = '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b'.toLowerCase() +const CVX_ETH = ADDRESSES.ethereum.CVX.toLowerCase() const { apGetAddress, getPriceManager, getCategories, getTotalSupply, getTokenByIndex, getTnftCustody, diff --git a/projects/tangible/insurance-fund-polygon.js b/projects/tangible/insurance-fund-polygon.js index c764a8257b..826322d8cb 100644 --- a/projects/tangible/insurance-fund-polygon.js +++ b/projects/tangible/insurance-fund-polygon.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const VE_VELO_ABI = require('./abi/VeVeloNFT.json'); const { createIncrementArray } = require('../helper/utils'); const { sumTokens2 } = require('../helper/unwrapLPs') @@ -6,17 +7,17 @@ const CAVIAR_CHEF_ABI = require('./abi/CaviarChef.json'); const insuranceTokens = { CAVIAR: '0x6AE96Cc93331c19148541D4D2f31363684917092', - DAI: '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + DAI: ADDRESSES.polygon.DAI, PEARL: '0x7238390d5f6F64e67c3211C343A410E2A3DEc142', STAR: '0xC19669A405067927865B40Ea045a2baabbbe57f5', STMATIC: '0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4', TETU: '0x255707B70BF90aa112006E1b07B9AeA6De021424', TNGBL: '0x49e6A20f1BBdfEeC2a8222E052000BbB14EE6007', - USDC: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + USDC: ADDRESSES.polygon.USDC, USDR: '0x40379a439D4F6795B6fc9aa5687dB461677A2dBa', - USDT: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', - WETH: '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', - WMATIC: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + USDT: ADDRESSES.polygon.USDT, + WETH: ADDRESSES.polygon.WETH_1, + WMATIC: ADDRESSES.polygon.WMATIC_2, WUSDR: '0x00e8c0E92eB3Ad88189E7125Ec8825eDc03Ab265', TETU_BPT: '0xE2f706EF1f7240b803AAe877C9C762644bb808d8', } diff --git a/projects/traderjoe/index.js b/projects/traderjoe/index.js index fccffafee0..842da6bcc0 100644 --- a/projects/traderjoe/index.js +++ b/projects/traderjoe/index.js @@ -2,22 +2,14 @@ const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking'); const joeBar = ADDRESSES.avax.xJOE; const joeToken = ADDRESSES.avax.JOE; -const { getChainTvl } = require('../helper/getUniSubgraphTvl'); const { getUniTVL } = require('../helper/unknownTokens'); -const graphUrls = { - avax: 'https://api.thegraph.com/subgraphs/name/traderjoe-xyz/exchange', -}; module.exports = { misrepresentedTokens: true, methodology: 'We count liquidity on the pairs and we get that information from the "traderjoe-xyz/exchange" subgraph. The staking portion of TVL includes the JoeTokens within the JoeBar contract.', avax:{ - tvl: getChainTvl( - graphUrls, - "factories", - "liquidityUSD" - )('avax'), - staking: staking(joeBar, joeToken, "avax"), + tvl: getUniTVL({ factory: '0x9ad6c38be94206ca50bb0d90783181662f0cfa10', useDefaultCoreAssets: true, }), + staking: staking(joeBar, joeToken), }, bsc: { tvl: getUniTVL({ factory: '0x4f8bdc85e3eec5b9de67097c3f59b6db025d9986', useDefaultCoreAssets: true, }) diff --git a/projects/treasury/baseswap.js b/projects/treasury/baseswap.js index bf51ef7f98..7009dd14b8 100644 --- a/projects/treasury/baseswap.js +++ b/projects/treasury/baseswap.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xAF1823bACd8EDDA3b815180a61F8741fA4aBc6Dd"; @@ -6,7 +7,7 @@ module.exports = treasuryExports({ base: { tokens: [ nullAddress, - "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", //USDbC + ADDRESSES.base.USDbC, //USDbC ], owners: [treasury,], }, diff --git a/projects/treasury/brewlabs.js b/projects/treasury/brewlabs.js index f2c681e28e..0de60cd15c 100644 --- a/projects/treasury/brewlabs.js +++ b/projects/treasury/brewlabs.js @@ -12,9 +12,9 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',//busd - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',//wbnb - '0x55d398326f99059fF775485246999027B3197955',//bsc-usd + ADDRESSES.bsc.BUSD,//busd + ADDRESSES.bsc.WBNB,//wbnb + ADDRESSES.bsc.USDT,//bsc-usd '0x9d7107c8E30617CAdc11f9692A19C82ae8bbA938',//roo '0xF14D3692B0055Db9Ca4c04065165d59B87E763f1',//mbc '0xe91a8D2c584Ca93C7405F15c22CdFE53C29896E3',//dext diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index 4507e5b9a4..0db4c4e579 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -10,7 +10,7 @@ const treasury3 = "0xBc79855178842FDBA0c353494895DEEf509E26bB"; const GNO = ADDRESSES.ethereum.GNO; const treasurygnosis = "0x458cd345b4c05e8df39d0a07220feb4ec19f5e6f" -const gnognosis = "0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb" +const gnognosis = ADDRESSES.xdai.GNO async function tvl(_, _b, _cb, { api, }) { const treasury = '0x849d52316331967b6ff1198e5e32a0eb168d039d' @@ -81,7 +81,7 @@ module.exports = treasuryExports({ xdai: { tokens: [ nullAddress, - "0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1", //eth + ADDRESSES.xdai.WETH, //eth "0x6C76971f98945AE98dD7d4DFcA8711ebea946eA6", //wstETH "0xEb30C85CC528537f5350CF5684Ce6a4538e13394", "0xd4e420bBf00b0F409188b338c5D87Df761d6C894", @@ -89,7 +89,7 @@ module.exports = treasuryExports({ "0x44932e3b1E662AdDE2F7bac6D5081C5adab908c6", "0x291B5957c9CBe9Ca6f0b98281594b4eB495F4ec1", "0x3a97704a1b25F08aa230ae53B352e2e72ef52843", - "0x8e5bBbb09Ed1ebdE8674Cda39A0c169401db4252", + ADDRESSES.xdai.WBTC, "0xA26783eAd6C1f4744685c14079950622674ae8A8", "0xa99FD9950B5D5dCeEaf4939E221dcA8cA9B938aB", "0x21d4c792Ea7E38e0D0819c2011A2b1Cb7252Bd99", diff --git a/projects/treasury/loot-dao.js b/projects/treasury/loot-dao.js index 14c83c4308..2a42bd7895 100644 --- a/projects/treasury/loot-dao.js +++ b/projects/treasury/loot-dao.js @@ -12,7 +12,7 @@ module.exports = treasuryExports({ ownTokens: [loot] // loot }, polygon: { - tokens: [nullAddress, "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619"], //weth + tokens: [nullAddress, ADDRESSES.polygon.WETH_1], //weth owners: [treasury], }, }); \ No newline at end of file diff --git a/projects/treasury/lyra.js b/projects/treasury/lyra.js index 8602d08414..fa4a987c54 100644 --- a/projects/treasury/lyra.js +++ b/projects/treasury/lyra.js @@ -7,7 +7,7 @@ const treasury_op = "0xD4C00FE7657791C2A43025dE483F05E49A5f76A6"; const lyra_eth = "0x01BA67AAC7f75f647D94220Cc98FB30FCc5105Bf"; const lyra_arb = "0x079504b86d38119F859c4194765029F692b7B7aa"; -const lyra_op = "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb"; +const lyra_op = ADDRESSES.base.DAI; module.exports = treasuryExports({ arbitrum: { diff --git a/projects/treasury/nouns.js b/projects/treasury/nouns.js index abf32559b5..4bb68ac818 100644 --- a/projects/treasury/nouns.js +++ b/projects/treasury/nouns.js @@ -11,7 +11,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.USDC, //USDC ADDRESSES.ethereum.STETH,//stETH ADDRESSES.ethereum.RETH, - "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0" //wstETH + ADDRESSES.ethereum.WSTETH //wstETH ], owners: [treasury, treasury1], }, diff --git a/projects/treasury/paladin-finance.js b/projects/treasury/paladin-finance.js index b2c1cf2cee..bb7eeb930b 100644 --- a/projects/treasury/paladin-finance.js +++ b/projects/treasury/paladin-finance.js @@ -43,7 +43,7 @@ module.exports = treasuryExports({ '0x1509706a6c66CA549ff0cB464de88231DDBe213B',//AURA '0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8',//BAL '0xf0cb2dc0db5e6c66B9a70Ac27B06b878da017028',//OHM - '0x912CE59144191C1204E64559FE8253a0e49E6548',//ARB + ADDRESSES.arbitrum.ARB,//ARB ], owners: [treasuryarb] } diff --git a/projects/treasury/silo-finance.js b/projects/treasury/silo-finance.js index 3255030909..385145c988 100644 --- a/projects/treasury/silo-finance.js +++ b/projects/treasury/silo-finance.js @@ -50,8 +50,8 @@ module.exports = mergeExports([ nullAddress, ADDRESSES.arbitrum.ARB, // ARB ADDRESSES.arbitrum.GMX, // GMX - "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", // USDC Native - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", // USDC.e (Bridged) + ADDRESSES.arbitrum.USDC_CIRCLE, // USDC Native + ADDRESSES.arbitrum.USDC, // USDC.e (Bridged) "0x6C2C06790b3E3E3c38e12Ee22F8183b37a13EE55", // DPX "0x18c11FD286C5EC11c3b683Caa813B77f5163A122", // GNS "0x51fC0f6660482Ea73330E414eFd7808811a57Fa2", // PREMIA diff --git a/projects/treasury/the-standard.js b/projects/treasury/the-standard.js index 1d9725e9e4..328e1ff7f5 100644 --- a/projects/treasury/the-standard.js +++ b/projects/treasury/the-standard.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasuryARB = "0x99d5D7C8F40Deba9d0075E8Fff2fB13Da787996a"; @@ -11,7 +12,7 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0x643b34980E635719C15a2D4ce69571a258F940E9", - "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" + ADDRESSES.arbitrum.USDC_CIRCLE ], owners: [treasuryARB], ownTokens: [TST], @@ -19,8 +20,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "0xdAC17F958D2ee523a2206206994597C13D831ec7" + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT ], owners: [treasuryETH], ownTokens: [TSTETH], diff --git a/projects/treasury/tprotocol.js b/projects/treasury/tprotocol.js index 77656a8e75..cf651fa972 100644 --- a/projects/treasury/tprotocol.js +++ b/projects/treasury/tprotocol.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xa01D9bc8343016C7DDD39852e49890a8361B2884"; @@ -8,7 +9,7 @@ module.exports = treasuryExports({ tokens: [ nullAddress, '0x530824DA86689C9C17CdC2871Ff29B058345b44a', //stbt - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', //usdc + ADDRESSES.ethereum.USDC, //usdc ], owners: [treasury], ownTokens: [], diff --git a/projects/valorem/index.js b/projects/valorem/index.js index c5f0e1be89..b08fe2dbcb 100644 --- a/projects/valorem/index.js +++ b/projects/valorem/index.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const CLEARINGHOUSE_ADDRESS = "0x402A401B1944EBb5A3030F36Aa70d6b5794190c9"; const arbitrumOneDeployUnixTimestamp = 1693583626; -const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; +const ZERO_ADDRESS = ADDRESSES.null; const TOKENS_BY_CHAIN = { ["arbitrum"]: { ETH: ZERO_ADDRESS, - WETH: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - USDC: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + WETH: ADDRESSES.arbitrum.WETH, + USDC: ADDRESSES.arbitrum.USDC, }, }; diff --git a/projects/vaultka/index.js b/projects/vaultka/index.js index db61306a35..450ee1c4b0 100644 --- a/projects/vaultka/index.js +++ b/projects/vaultka/index.js @@ -33,7 +33,7 @@ module.exports = { sakeWaterV2: "0x806e8538FC05774Ea83d9428F778E423F6492475", vodkaV1_Water: "0xC99C6427cB0B824207606dC2745A512C6b066E7C", VodkaV1: "0x88D7500aF99f11fF52E9f185C7aAFBdF9acabD93", - fsGlp: "0x1aDDD80E6039594eE970E5872D247bf0414C8903", + fsGlp: ADDRESSES.arbitrum.fsGLP, vodkaV2: "0x9198989a85E35adeC46309E06684dCA444c9cF27", vodkaV2_Water: "0x9045ae36f963b7184861BDce205ea8B08913B48c", gmWeth: "0x70d95587d40A2caf56bd97485aB3Eec10Bee6336", // weth/usdc.e diff --git a/projects/voltage-liquidstaking/index.js b/projects/voltage-liquidstaking/index.js new file mode 100644 index 0000000000..1fee43f4e8 --- /dev/null +++ b/projects/voltage-liquidstaking/index.js @@ -0,0 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') + +const FUSE_STAKING_ADDRESS = "0xa3dc222eC847Aac61FB6910496295bF344Ea46be".toLowerCase() + +async function tvl(timestamp, block, chainBlocks, { api }) { + const bal = await api.call({ abi: 'uint256:systemTotalStaked', target: FUSE_STAKING_ADDRESS }) + api.add(ADDRESSES.fuse.WFUSE, bal) + return api.getBalances() +} + +module.exports = { + fuse: { tvl } +} \ No newline at end of file diff --git a/projects/voltage-stableswap/index.js b/projects/voltage-stableswap/index.js new file mode 100644 index 0000000000..f6b1af3c59 --- /dev/null +++ b/projects/voltage-stableswap/index.js @@ -0,0 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokensExport } = require('../helper/unwrapLPs') + +const FUSD_ADDRESS = '0xd0ce1b4a349c35e61af02f5971e71ac502441e49'.toLowerCase() +const STABLESWAP_ADDRESS = '0x2a68D7C6Ea986fA06B2665d08b4D08F5e7aF960c'.toLowerCase() + +const STABLES = [ADDRESSES.fuse.USDC, ADDRESSES.fuse.USDT, ADDRESSES.fuse.BUSD] + +module.exports = { + fuse: { + tvl: sumTokensExport({ owners: [STABLESWAP_ADDRESS, FUSD_ADDRESS], tokens: STABLES, }) + } +} diff --git a/projects/wagmi-com/index.js b/projects/wagmi-com/index.js index 3a6fa572d7..7bf913f2c6 100644 --- a/projects/wagmi-com/index.js +++ b/projects/wagmi-com/index.js @@ -3,4 +3,5 @@ const { uniV3Export } = require("../helper/uniswapV3"); module.exports = uniV3Export({ era: { factory: '0x31be61CE896e8770B21e7A1CAFA28402Dd701995', fromBlock: 1351075, }, fantom: { factory: '0xaf20f5f19698f1D19351028cd7103B63D30DE7d7', fromBlock: 60063058, }, + // kava: { factory: '0x53dca7E0015B8c445881A9BC2baC1D8648d7f800', fromBlock: 6037137, } }) \ No newline at end of file diff --git a/projects/wanlend/index.js b/projects/wanlend/index.js index c8d704e8fb..ae7445b7ee 100644 --- a/projects/wanlend/index.js +++ b/projects/wanlend/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports2 } = require("../helper/compound"); const { mergeExports } = require("../helper/utils"); -const cetheEquivalent='0xdabd997ae5e4799be47d6e69d9431615cba28f48' +const cetheEquivalent=ADDRESSES.wan.WWAN const tvlV1 = compoundExports2( { comptroller: '0x21c72522005ccf570f40acaa04b448918aecc2ad', cether: '0xE8548014f731194764AF27C8edc9bbAA7d2f4C46', cetheEquivalent}) const tvlV2 = compoundExports2( { comptroller: '0xd6980C52C20Fb106e54cC6c8AE04c089C3F6B9d6', cether: '0x48c42529c4c8e3d10060e04240e9ec6cd0eb1218', cetheEquivalent}) delete tvlV1.borrowed diff --git a/projects/waves-exchange/index.js b/projects/waves-exchange/index.js index 5b630efbe8..900dc1a169 100644 --- a/projects/waves-exchange/index.js +++ b/projects/waves-exchange/index.js @@ -6,13 +6,15 @@ const endpoint = function tvl(isStaking) { let key = isStaking ? "wx_staking" : "liquidity_pools" - return async () => - toUSDTBalances( + return async () => { + throw new Error('Getting wrong tvl from api') + /* return toUSDTBalances( (await get(endpoint)).products .filter(p => p.product_id === key) .map(p => p.tvl) .reduce((p, c) => Number(p) + Number(c), 0), - ); + ); */ + } } module.exports = { diff --git a/projects/xena/index.js b/projects/xena/index.js new file mode 100644 index 0000000000..df152b4406 --- /dev/null +++ b/projects/xena/index.js @@ -0,0 +1,20 @@ +const { pool2 } = require("../helper/pool2"); + +const Contracts = { + Pool: "0x22787c26Bb0Ab0d331Eb840ff010855a70A0DcA6", + Chef: "0xB6a34b9C6CeeE0D821BDBD98Bc337639fdD5663b", + XEN_ETH_LP: "0xf32fdB63d0A976Cc6ceC939f2824FCF7F9819F68", + LOCKED_XEN_ETH_LP: "0x57A480007DFbce2803147DCcBeAFAEb50BDe64Fb", +}; + +async function tvl(_, _b, _cb, { api }) { + const { tokens }= await api.call({ abi: 'function getAllAssets() view returns (address[] tokens, bool[])', target: Contracts.Pool}) + return api.sumTokens({ owner: Contracts.Pool, tokens }) +} + +module.exports = { + base: { + tvl, + pool2: pool2([Contracts.Chef, Contracts.LOCKED_XEN_ETH_LP], Contracts.XEN_ETH_LP), + }, +}; diff --git a/projects/zeta/index.js b/projects/zeta/index.js index 6589fa72cd..244ba7caf4 100644 --- a/projects/zeta/index.js +++ b/projects/zeta/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { PublicKey } = require("@solana/web3.js"); const anchor = require("@project-serum/anchor"); const { sumTokens2 } = require("../helper/solana"); const ZETA_PROGRAM_ID = new PublicKey( "ZETAxsqBRek56DhiGXrn75yj2NHU3aYUnxvHXpkf3aD" ); -const USDC_MINT = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"); +const USDC_MINT = new PublicKey(ADDRESSES.solana.USDC); module.exports = { timetravel: false, diff --git a/projects/zkevmswap/index.js b/projects/zkevmswap/index.js index 95b0648319..0b8dd276e8 100644 --- a/projects/zkevmswap/index.js +++ b/projects/zkevmswap/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, polygon_zkevm: { tvl: getUniTVL({ - factory: '0x213c25900f365F1BE338Df478CD82beF7Fd43F85', + factory: ADDRESSES.shibarium.BONE_1, useDefaultCoreAssets: true, }) }, diff --git a/utils/scripts/useTokenLabels.js b/utils/scripts/useTokenLabels.js index e065d2b3f1..36a8730639 100644 --- a/utils/scripts/useTokenLabels.js +++ b/utils/scripts/useTokenLabels.js @@ -51,6 +51,7 @@ function updateFile(file) { fs.writeFileSync(file, fileStr, { encoding: 'utf-8' }) function updateFileStr(label, address, file) { + if (!address || !address.length) return; if (!updateFile) { updateFile = (new RegExp(address, 'i')).test(fileStr) // if (updateFile)